From 96b07a22f5392f5d7f821f5743deb3d64bd94e89 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Fri, 16 Oct 2009 12:59:45 +0000 Subject: Although this looks like a load of code changes, this represents no functional change to the Taf system. Really all that's happened is I've broken out the core taf data types into seperate files, and gone ahead and created a helpful new header file ("taf.h") that will include the entire taf system, including the reader and writer for you. This means that a lot of programs will start complaining, but fortunately, there's an easy solution, if it complains about taf, make sure to include taf.h at the top, instead of other taf files and you'll be set. The next set of changes will add lots of helpers to the taf system and change the reader to read non-const structures, i.e. I'll actually add editing support to created taf structures. --- src/tafgroup.h | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/tafgroup.h (limited to 'src/tafgroup.h') diff --git a/src/tafgroup.h b/src/tafgroup.h new file mode 100644 index 0000000..6a50d11 --- /dev/null +++ b/src/tafgroup.h @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2007-2008 Xagasoft, All rights reserved. + * + * This file is part of the libbu++ library and is released under the + * terms of the license contained in the file LICENSE. + */ + +#ifndef BU_TAF_GROUP_H +#define BU_TAF_GROUP_H + +#include +#include "bu/tafnode.h" +#include "bu/fstring.h" +#include "bu/hash.h" +#include "bu/list.h" + +namespace Bu +{ + class TafProperty; + class TafComment; + /** + * + *@ingroup Taf + */ + class TafGroup : public TafNode + { + public: + typedef Bu::List PropList; + typedef Bu::Hash PropHash; + typedef Bu::List GroupList; + typedef Bu::Hash GroupHash; + typedef Bu::List NodeList; + + TafGroup( const Bu::FString &sName ); + virtual ~TafGroup(); + + const Bu::FString &getName() const; + void setName( const Bu::FString &sName ); + + bool hasProperty( const Bu::FString &sName ) const; + const Bu::FString &getProperty( const Bu::FString &sName ) const; + const Bu::FString &getProperty( const Bu::FString &sName, + const Bu::FString &sDef ) const; + const PropList &getProperties( const Bu::FString &sName ) const; + bool hasChild( const Bu::FString &sName ) const; + const TafGroup *getChild( const Bu::FString &sName ) const; + const GroupList &getChildren( const Bu::FString &sName ) const; + TafNode *addChild( TafNode *pNode ); + TafGroup *addChild( TafGroup *pNode ); + TafProperty *addChild( TafProperty *pNode ); + TafComment *addChild( TafComment *pNode ); + TafGroup *addGroup( const Bu::FString &sName ); + TafProperty *addProperty( + const Bu::FString &sName, const Bu::FString &sValue ); + const NodeList &getChildren() const; + + private: + Bu::FString sName; + PropHash hProp; + GroupHash hChildren; + NodeList lChildren; + }; +} + +#endif -- cgit v1.2.3