Source-highlight Library
stringdef.h
1//
2// C++ Interface: StringDef
3//
4// Description: a string definition that is used by all the language elements.
5//
6//
7// Author: Lorenzo Bettini, 1999-2007 <http://www.lorenzobettini.it>
8//
9// Copyright: See COPYING file that comes with this distribution
10//
11//
12#ifndef STRINGDEF_H
13#define STRINGDEF_H
14
15#include <string>
16#include <list>
17
18namespace srchilite {
19
20class StringDefs;
21
25class StringDef {
26private:
28 std::string stringdef;
30 std::string orig;
35
36public:
42 StringDef(const std::string &s, const std::string &o) :
43 stringdef(s), orig(o), doubleQuotedString(false), hasBackRef_(false) {
44 }
45
52 StringDef(const std::string &s, bool doubleQuotes = false) :
53 stringdef(s), doubleQuotedString(doubleQuotes), hasBackRef_(false) {
54 }
55
60 const std::string toString() const;
61
67 const std::string toStringOriginal() const {
68 return orig;
69 }
70
75 bool isDoubleQuoted() const {
76 return doubleQuotedString;
77 }
78
82 bool hasBackRef() const {
83 return hasBackRef_;
84 }
85
89 void setBackRef(bool b) {
90 hasBackRef_ = b;
91 }
92
100 static StringDef *concat(const StringDef *s1, const StringDef *s2);
101
102};
103
104typedef std::list<StringDef *> StringDefsBase;
105
110class StringDefs : public StringDefsBase {
111public:
112 ~StringDefs() {
113 for (StringDefsBase::iterator it = begin(); it != end(); ++it)
114 delete *it;
115 }
116};
117
118}
119
120#endif
represent a string for a language definition file's element
Definition: stringdef.h:25
StringDef(const std::string &s, const std::string &o)
constructs a StringDef and store also the original representation
Definition: stringdef.h:42
StringDef(const std::string &s, bool doubleQuotes=false)
constructs a StringDef and record whether it comes from a double quoted string.
Definition: stringdef.h:52
static StringDef * concat(const StringDef *s1, const StringDef *s2)
Given two StringDef produces a new StringDef (keeping properties such as hasBackRef)
Definition: stringdef.cpp:30
bool isDoubleQuoted() const
whether this comes from a double quoted string
Definition: stringdef.h:75
const std::string toString() const
return the string representation (after preprocessing)
Definition: stringdef.cpp:38
bool hasBackRef_
whether this is contains a back reference to a matched subexpression
Definition: stringdef.h:34
const std::string toStringOriginal() const
return the original representation (without any preprocessing); this is useful for printing errors
Definition: stringdef.h:67
std::string orig
the original representation (without any preprocessing)
Definition: stringdef.h:30
bool doubleQuotedString
whether the string was specified with double quotes
Definition: stringdef.h:32
void setBackRef(bool b)
Definition: stringdef.h:89
std::string stringdef
the actual content
Definition: stringdef.h:28
bool hasBackRef() const
Definition: stringdef.h:82
A collection (list) of StringDef's.
Definition: stringdef.h:110
C++ class: doctemplate.h.
Definition: bufferedoutput.cpp:13