summaryrefslogtreecommitdiffstats
path: root/languages/cpp/expressioninfo.h
blob: 836a22925566a1ed4c65839e0d4c91a616464c29 (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
/***************************************************************************
   begin                : Sat Jul 21 2001
   copyright            : (C) 2001 by Victor R�er
   email                : [email protected]
   copyright            : (C) 2002,2003 by Roberto Raggi
   email                : [email protected]
   copyright            : (C) 2005 by Adam Treat
   email                : [email protected]
   copyright            : (C) 2006 by David Nolden
   email                : [email protected]
***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program 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 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/
#ifndef EXPRESSIONINFO_H
#define EXPRESSIONINFO_H

#include "stringhelpers.h"

using namespace StringHelpers;

struct ExpressionInfo {
  private:
    QString m_expr;
  
  public:
  
    enum Type {
      InvalidExpression = 0,
      NormalExpression = 1,
      TypeExpression = 2
    };
  
    Type t;
    int start, end;
  
    QString expr() {
      return m_expr;
    }
  
    void setExpr( const QString& str ) {
      m_expr = clearComments( str );
    }
  
    ExpressionInfo( QString str ) : t(  NormalExpression ), start( 0 ), end( str.length() ) {
      setExpr( str );
    
    }
  
    ExpressionInfo() : t( InvalidExpression ), start(0), end(0) {
    }
  
    operator bool() {
      return t != InvalidExpression && !m_expr.isEmpty();
    }
  
    bool isTypeExpression() {
      return t == TypeExpression && !m_expr.isEmpty();
    }
  
    bool canBeTypeExpression() {
      return t & TypeExpression && !m_expr.isEmpty();
    }
  
    bool isNormalExpression() {
      return t == NormalExpression && !m_expr.isEmpty();
    }
  
    bool canBeNormalExpression() {
      return t & NormalExpression && !m_expr.isEmpty();
    }
  
    QString typeAsString() {
      QString res ;
      if( t & NormalExpression )
        res += "NormalExpression, ";
      if( t & TypeExpression )
        res += "TypeExpression, ";
      if( t == InvalidExpression )
        res += "InvalidExpression, ";
      if( !res.isEmpty() ) {
        res = res.left( res.length() - 2 );
      } else {
        res = "Unknown";
      }
      return res;
    }
};



#endif
// kate: indent-mode csands; tab-width 4;