summaryrefslogtreecommitdiffstats
path: root/qlparser/parseinfo.hh
blob: 7097139ef17f58a8ecdd6e3b5945947470ffe36c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/*
* This file is part of rasdaman community.
*
* Rasdaman community is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Rasdaman community is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with rasdaman community.  If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann /
rasdaman GmbH.
*
* For more information please see <http://www.rasdaman.org>
* or contact Peter Baumann via <baumann@rasdaman.com>.
*/
#ifndef _PARSEINFO_
#define _PARSEINFO_
 
#ifndef CPPSTDLIB
#include <ospace/string.h> // STL<ToolKit>
#else
#include <string>
#endif

/*************************************************************
 *
 *
 * COMMENTS:
 *
 ************************************************************/

 
//@ManMemo: Module: {\bf qlparser}

/*@Doc:

 This class holds some information about a token and its 
 location in the parse string. Additionally, it can keep
 an error number which is used in the query tree to report
 error with some context information within the query string.
 
*/
 
class ParseInfo
{
  public:
  
    /// default constructor
    ParseInfo();
    
    /// constructor getting error number, token and location information
    ParseInfo( unsigned long errorNo, const char* token, unsigned int lineNo, unsigned columnNo );
    
    /// copy constructor
    ParseInfo( const ParseInfo& old);
    
    /// constructor getting token and location information
    ParseInfo( const char* token, unsigned int lineNo, unsigned columnNo );
    
    //@Man: Read/Write methods
    //@{
    ///
    inline unsigned long getErrorNo() const;
    ///
    inline const std::string& getToken() const;
    ///
    inline unsigned int  getLineNo() const;
    ///
    inline unsigned int  getColumnNo() const;
    ///
    inline void          setErrorNo( unsigned long errorNo );
    ///
    inline void          setToken( const std::string& text );
    ///
    inline void          setToken( const char* text );
    ///
    inline void          setLineNo( unsigned int lineNo );
    ///
    inline void          setColumnNo( unsigned int columnNo );
    ///
    //@}
    
    void printStatus(  std::ostream& s= std::cout ) const;
    
    ParseInfo& operator=(const ParseInfo& old);
    
  private:
    //@Man: Attributes
    //@{
    ///
    unsigned long errorNo;
    ///
    unsigned int lineNo;
    ///
    unsigned int columnNo;
    ///
    std::string token;
    ///
    //@}
};

#include "parseinfo.icc"

#endif