24 #include <tqvariant.h> 36 unsigned long isVirtual:
58 Kind_VariableDeclaration,
60 Kind_FunctionDeclaration,
72 Tag(
const Tag& source );
75 operator bool()
const {
76 return kind() != Kind_Unknown && kind() != 0;
79 Tag& operator = (
const Tag& source );
86 void setId(
const TQCString&
id )
97 void setKind(
int kind )
103 unsigned long flags()
const 108 void setFlags(
unsigned long flags )
114 TQString fileName()
const 116 return data->fileName;
119 void setFileName(
const TQString& fileName )
122 data->fileName = fileName;
125 TQString path(
const TQString& sep = TQString::fromLatin1(
"::") )
const 127 TQString s = scope().join( sep );
130 return s + sep + name();
133 TQString name()
const 138 TQString comment()
const {
139 if( hasAttribute(
"cmt" ) ) {
140 return attribute(
"cmt" ).asString();
146 void setComment(
const TQString& comment ) {
147 setAttribute(
"cmt", comment );
150 void setName(
const TQString& name )
156 TQStringList scope()
const 161 void setScope(
const TQStringList& scope )
167 void getStartPosition(
int* line,
int* column )
const 169 if( line ) *line = data->startLine;
170 if( column ) *column = data->startColumn;
173 void setStartPosition(
int line,
int column )
176 data->startLine = line;
177 data->startColumn = column;
180 void getEndPosition(
int* line,
int* column )
const 182 if( line ) *line = data->endLine;
183 if( column ) *column = data->endColumn;
186 void setEndPosition(
int line,
int column )
189 data->endLine = line;
190 data->endColumn = column;
193 TQString getSpecializationDeclaration()
const {
194 if( hasAttribute(
"spc" ) )
195 return data->attributes[
"spc"].asString();
200 bool hasSpecializationDeclaration()
const {
201 return data->attributes.contains(
"spc" );
204 void setSpecializationDeclaration(
const TQString& str ) {
205 data->attributes[
"spc"] = str;
208 bool hasAttribute(
const TQCString& name )
const 210 if( name ==
"kind" ||
213 name ==
"fileName" ||
214 name ==
"startLine" ||
215 name ==
"startColumn" ||
217 name ==
"endColumn" )
219 return data->attributes.contains( name );
222 TQVariant attribute(
const TQCString& name )
const 226 else if( name ==
"kind" )
228 else if( name ==
"name" )
230 else if( name ==
"scope" )
232 else if( name ==
"fileName" )
233 return data->fileName;
234 else if( name ==
"startLine" )
235 return data->startLine;
236 else if( name ==
"startColumn" )
237 return data->startColumn;
238 else if( name ==
"endLine" )
239 return data->endLine;
240 else if( name ==
"endColumn" )
241 return data->endColumn;
242 else if( name ==
"prefix" )
243 return data->name.left( 2 );
244 return data->attributes[ name ];
247 void setAttribute(
const TQCString& name,
const TQVariant& value )
251 data->id = value.toCString();
252 else if( name ==
"kind" )
253 data->kind = value.toInt();
254 else if( name ==
"name" )
255 data->name = value.toString();
256 else if( name ==
"scope" )
257 data->scope = value.toStringList();
258 else if( name ==
"fileName" )
259 data->fileName = value.toString();
260 else if( name ==
"startLine" )
261 data->startLine = value.toInt();
262 else if( name ==
"startColumn" )
263 data->startColumn = value.toInt();
264 else if( name ==
"endLine" )
265 data->endLine = value.toInt();
266 else if( name ==
"endColumn" )
267 data->endColumn = value.toInt();
269 data->attributes[ name ] = value;
272 void addTemplateParam(
const TQString& param ,
const TQString& def =
"" ) {
273 TQMap<TQCString, TQVariant>::iterator it = data->attributes.find(
"tpl" );
274 if( it != data->attributes.end() && (*it).type() == TQVariant::StringList ) {
276 it = data->attributes.insert(
"tpl", TQVariant( TQStringList() ) );
279 TQStringList& l( (*it).asStringList() );
284 void load( TQDataStream& stream );
285 void store( TQDataStream& stream )
const;
292 struct TagData:
public TQShared
300 int startLine, startColumn;
301 int endLine, endColumn;
302 TQMap<TQCString, TQVariant> attributes;
306 TQDataStream& operator << ( TQDataStream&,
const Tag& );
307 TQDataStream& operator >> ( TQDataStream&, Tag& );