summaryrefslogtreecommitdiffstats
path: root/lib/catalog/tag.cpp
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commit114a878c64ce6f8223cfd22d76a20eb16d177e5e (patch)
treeacaf47eb0fa12142d3896416a69e74cbf5a72242 /lib/catalog/tag.cpp
downloadtdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.tar.gz
tdevelop-114a878c64ce6f8223cfd22d76a20eb16d177e5e.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'lib/catalog/tag.cpp')
-rw-r--r--lib/catalog/tag.cpp127
1 files changed, 127 insertions, 0 deletions
diff --git a/lib/catalog/tag.cpp b/lib/catalog/tag.cpp
new file mode 100644
index 00000000..f4dbda67
--- /dev/null
+++ b/lib/catalog/tag.cpp
@@ -0,0 +1,127 @@
+/* This file is part of KDevelop
+ Copyright (C) 2003 Roberto Raggi <roberto@kdevelop.org>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#include "tag.h"
+#include <qdatastream.h>
+
+Tag::Tag()
+{
+ data = new TagData();
+ data->kind = 0;
+ data->flags = 0;
+ data->startLine = 0;
+ data->startColumn = 0;
+ data->endLine = 0;
+ data->endColumn = 0;
+}
+
+Tag::Tag( const Tag& source )
+{
+ data = source.data;
+ data->ref();
+}
+
+Tag::~Tag()
+{
+ if( data->deref() ){
+ delete( data );
+ data = 0;
+ }
+}
+
+void Tag::detach()
+{
+ if( data->count != 1 )
+ *this = copy();
+}
+
+Tag Tag::copy()
+{
+ Tag t;
+
+ t.data->id = data->id;
+ t.data->kind = data->kind;
+ t.data->flags = data->flags;
+ t.data->name = data->name;
+ t.data->scope = data->scope;
+ t.data->fileName = data->fileName;
+ t.data->startLine = data->startLine;
+ t.data->startColumn = data->startColumn;
+ t.data->endLine = data->endLine;
+ t.data->endColumn = data->endColumn;
+ t.data->attributes = data->attributes;
+
+ return t;
+}
+
+Tag& Tag::operator = ( const Tag& source )
+{
+ source.data->ref();
+ if ( data->deref() ){
+ delete data;
+ }
+ data = source.data;
+
+ return( *this );
+}
+
+void Tag::load( QDataStream& stream )
+{
+ stream
+ >> data->id
+ >> data->kind
+ >> data->flags
+ >> data->name
+ >> data->scope
+ >> data->fileName
+ >> data->startLine
+ >> data->startColumn
+ >> data->endLine
+ >> data->endColumn
+ >> data->attributes;
+}
+
+void Tag::store( QDataStream& stream ) const
+{
+ stream
+ << data->id
+ << data->kind
+ << data->flags
+ << data->name
+ << data->scope
+ << data->fileName
+ << data->startLine
+ << data->startColumn
+ << data->endLine
+ << data->endColumn
+ << data->attributes;
+}
+
+QDataStream& operator << ( QDataStream& s, const Tag& t)
+{
+ t.store( s );
+ return s;
+}
+
+QDataStream& operator >> ( QDataStream& s, Tag& t )
+{
+ t.load( s );
+ return s;
+}
+