1282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#ifndef SOURCEPOS_H
2282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#define SOURCEPOS_H
3282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
4282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <utils/String8.h>
5282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#include <stdio.h>
6282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
7282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiusing namespace android;
8282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
9282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskiclass SourcePos
10282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski{
11282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinskipublic:
12282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    String8 file;
13282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    int line;
14282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
15282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    SourcePos(const String8& f, int l);
16282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    SourcePos(const SourcePos& that);
17282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    SourcePos();
18282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    ~SourcePos();
19282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
20a01a9374fd386f3a8773528d7a49bc5315492dffAdam Lesinski    void error(const char* fmt, ...) const;
21a01a9374fd386f3a8773528d7a49bc5315492dffAdam Lesinski    void warning(const char* fmt, ...) const;
22a01a9374fd386f3a8773528d7a49bc5315492dffAdam Lesinski    void printf(const char* fmt, ...) const;
23282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
24de7de47fef1dcaa26d553665d89e4d3792325c3fAdam Lesinski    bool operator<(const SourcePos& rhs) const;
25de7de47fef1dcaa26d553665d89e4d3792325c3fAdam Lesinski
26282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    static bool hasErrors();
27282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski    static void printErrors(FILE* to);
28282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski};
29282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
30282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski
31282e181b58cf72b6ca770dc7ca5f91f135444502Adam Lesinski#endif // SOURCEPOS_H
32