73 kkint32 FindLastInstanceOnElementNameStack (
const KKStr& name);
76 void PushXmlElementLevel (
const KKStr& sectionName);
78 void PopXmlElementLevel ();
96 std::vector<XmlFactoryManagerPtr> factoryManagers;
99 bool endOfElemenReached;
101 KKStr nameOfLastEndTag;
103 bool weOwnTokenStream;
109 #define _XmlStream_Defined_ 165 typedef std::multimap<KKStr,XmlAttributePtr> NameIndex;
178 XmlTag (
const KKStrConstPtr tagStr);
210 const KKStr& attributeValue
226 double attributeValue
247 #define _XmlTag_Defined_ 299 XmlTagConstPtr
NameTag ()
const {
return nameTag;}
313 virtual bool ToBool ()
const {
return false;}
338 KKStrPtr
const Content ()
const {
return content;}
371 std::map<KKStr, XmlFactory*> factories;
452 const KKStr& varName,
488 std::deque<XmlTokenPtr>* value;
511 const KKStr& varName,
515 virtual bool ToBool ()
const {
return value;}
517 virtual double ToDouble ()
const {
return (
double)value;}
518 virtual float ToFloat ()
const {
return (
float)value;}
547 const KKStr& varName,
592 void Add (
const KKStr& key,
float v);
593 void Add (
const KKStr& key,
double v);
594 void Add (
const KKStr& key,
bool v);
602 std::vector<std::pair<KKStr,KKStr> >* value;
624 float**
Value ()
const {
return value;}
636 const KKStr& varName,
664 virtual bool ToBool ()
const {
return (Value () ? Value ()->ToBool () :
false);}
665 virtual KKStr ToKKStr ()
const {
return (Value () ? *Value () : KKStr::EmptyStr ());}
666 virtual double ToDouble ()
const {
return (Value () ? Value ()->ToDouble () : 0.0);}
667 virtual float ToFloat ()
const {
return (Value () ? Value ()->ToFloat () : 0.0f);}
688 #define XmlFactoryMacro(NameOfClass) 689 class XmlFactory##NameOfClass: public XmlFactory 692 XmlFactory##NameOfClass (): XmlFactory (#NameOfClass) {} 694 virtual XmlElement##NameOfClass* ManufatureXmlElement (XmlTagPtr tag, 696 VolConstBool& cancelFlag, 700 return new XmlElement##NameOfClass(tag, s, cancelFlag, log); 703 static XmlFactory##NameOfClass* factoryInstance; 705 static XmlFactory##NameOfClass* FactoryInstance () 707 if (factoryInstance == NULL
) 709 GlobalGoalKeeper::StartBlock (); 710 if (!factoryInstance) 712 factoryInstance = new XmlFactory##NameOfClass (); 713 XmlFactory::RegisterFactory (factoryInstance); 715 GlobalGoalKeeper::EndBlock (); 717 return factoryInstance; 721 XmlFactory##NameOfClass* XmlFactory##NameOfClass::factoryInstance 722 = XmlFactory##NameOfClass::FactoryInstance (); 729 #define XmlFactoryMacro2(NameOfClass) 730 class XmlFactory##NameOfClass: public XmlFactory 733 XmlFactory##NameOfClass (): XmlFactory (#NameOfClass) {} 734 virtual XmlElement##NameOfClass* ManufatureXmlElement (XmlTagPtr tag, 736 VolConstBool& cancelFlag, 740 return new ##NameOfClass::Xml (tag, s, log); 743 static XmlFactory##NameOfClass* factoryInstance; 745 static XmlFactory##NameOfClass* FactoryInstance () 747 if (factoryInstance == NULL
) 749 GlobalGoalKeeper::StartBlock (); 750 if (!factoryInstance) 752 factoryInstance = new XmlFactory##NameOfClass (); 753 XmlFactory::RegisterFactory (factoryInstance); 755 GlobalGoalKeeper::EndBlock (); 757 return factoryInstance; 761 XmlFactory##NameOfClass* XmlFactory##NameOfClass::factoryInstance 762 = XmlFactory##NameOfClass::FactoryInstance (); 768 #define XmlElementBuiltInTypeHeader(T,TypeName) 770 class XmlElement##TypeName: public XmlElement 773 XmlElement##TypeName (XmlTagPtr tag, 775 VolConstBool& cancelFlag, 779 virtual ~XmlElement##TypeName (); 781 T Value () const {return value;} 785 const KKStr& varName, 789 virtual bool ToBool () const; 790 virtual KKStr ToKKStr () const; 791 virtual double ToDouble () const; 792 virtual float ToFloat () const; 793 virtual kkint32 ToInt32 () const; 797 typedef XmlElement##TypeName* XmlElement##TypeName##Ptr; 804 #define XmlElementArrayHeader(T,TypeName,ParserNextTokenMethod) 805 class XmlElement##TypeName: public XmlElement 808 XmlElement##TypeName (XmlTagPtr tag, 810 VolConstBool& cancelFlag, 814 virtual ~XmlElement##TypeName (); 816 kkuint32 Count () const {return count;} 817 T* Value () const {return value;} 822 void WriteXML (kkuint32 count, 824 const KKStr& varName, 832 typedef XmlElement##TypeName* XmlElement##TypeName##Ptr; 836 #define XmlElementArray2DHeader(T,TypeName,XmlElementToUse) 837 class XmlElement##TypeName: public XmlElement 840 XmlElement##TypeName (XmlTagPtr tag, 842 VolConstBool& cancelFlag, 846 virtual ~XmlElement##TypeName (); 848 kkuint32 Height () const {return height;} 849 T** Value () const {return value;} 850 kkuint32 Width () const {return width;} 852 T** TakeOwnership (); 855 void WriteXML (kkuint32 height, 858 const KKStr& varName, 867 typedef XmlElement##TypeName* XmlElement##TypeName##Ptr; 876 #define XmlElementVectorHeader(T,TypeName,ParserNextTokenMethod) 877 class XmlElement##TypeName: public XmlElement 880 XmlElement##TypeName (XmlTagPtr tag, 882 VolConstBool& cancelFlag, 886 virtual ~XmlElement##TypeName (); 888 std::vector<T>* const Value () const {return value;} 890 std::vector<T>* TakeOwnership (); 893 void WriteXML (const std::vector<##T>& d, 894 const KKStr& varName, 899 std::vector<T>* value; 901 typedef XmlElement##TypeName* XmlElement##TypeName##Ptr;
virtual double ToDouble() const
XmlTag(const KKStr &_name, TagTypes _tagType)
XmlElementKKStrList * XmlElementKKStrListPtr
virtual KKStr ToKKStr() const
virtual double ToDouble() const
XmlElementTemplate< KKStrList > XmlElementKKStrList
void AddAtribute(const KKStr &attributeName, const DateTime &attributeValue)
virtual ~XmlElementArrayFloat2DVarying()
XmlAttributeConst * XmlAttributeConstPtr
void AddAtribute(const KKStr &attributeName, bool attributeValue)
XmlFactory * FactoryLookUp(const KKStr &className) const
KKStrConstPtr AttributeValue(const char *attributeName)
XmlAttribute const XmlAttributeConst
XmlElementKKStr(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
void RegisterFactory(XmlFactory *factory)
virtual float ToFloat() const
XmlElementArrayFloat2DVarying(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
virtual KKStr ToKKStr() const
void Add(const KKStr &key, float v)
#define XmlElementVectorHeader(T, TypeName, ParserNextTokenMethod)
XmlElement(XmlTagPtr _nameTag, XmlStream &s, RunLog &log)
const KKStr & AttributeValueKKStr(const KKStr &name) const
virtual ~XmlElementUnKnown()
KKStrConstPtr AttributeValueByIndex(kkuint32 index) const
XmlFactoryManager(const KKStr &_name)
XmlAttribute * XmlAttributePtr
const KKStr & Name() const
virtual float ToFloat() const
const KKStr & AttributeValueKKStr(const KKStr &name) const
KKStrConstPtr AttributeValueByName(const KKStr &name) const
XmlElementBool * XmlElementBoolPtr
XmlElement * XmlElementPtr
XmlElementTemplate< KKStrListIndexed > XmlElementKKStrListIndexed
unsigned __int16 kkuint16
16 bit unsigned integer.
DateTime AttributeValueDateTime(const KKStr &attributeName) const
void AddAtribute(const KKStr &attributeName, kkint64 attributeValue)
XmlContent * XmlContentPtr
virtual double ToDouble() const
virtual ~XmlElementKeyValuePairs()
virtual KKStr ToKKStr() const
XmlElementUnKnown(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
kkint32 AttributeValueInt32(const KKStr &name) const
const KKStr & Value() const
virtual TokenTypes TokenType()
void Add(const KKStr &key, kkint32 v)
virtual bool ToBool() const
static void RegisterFactory(XmlFactory *factory)
std::deque< XmlTokenPtr > * TakeOwnership()
XmlElementVectorKKStr * XmlElementVectorKKStrPtr
static void WriteXML(const T &t, const KKStr &varName, std::ostream &o)
static void WriteXML(const bool b, const KKStr &varName, std::ostream &o)
const KKStr & Name() const
virtual kkint32 ToInt32() const
XmlElementDateTime * XmlElementDateTimePtr
void AddAttribute(const KKStr &name, const KKStr &value)
virtual const KKStr & SectionName() const
unsigned __int32 kkuint32
XmlFactory(const KKStr &_clasName)
XmlElementBool(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
void Add(const KKStr &key, bool v)
XmlElementKeyValuePairs(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
virtual kkint32 ToInt32() const
virtual float ToFloat() const
KKStrConstPtr AttributeNameByIndex(kkuint32 index) const
virtual kkint32 ToInt32() const
KKStrConstPtr AttributeValueByName(const KKStr &name) const
void AddAtribute(const KKStr &attributeName, kkint32 attributeValue)
virtual bool ToBool() const
void Add(const KKStr &key, double v)
const XmlAttributeList & Attributes() const
std::vector< std::pair< KKStr, KKStr > > * Value() const
void Add(const KKStr &key, const KKStr &v)
kkint32 AttributeCount() const
kkint32 AttributeValueInt32(const KKStr &attributeName) const
KKStr(const KKStr &str)
Copy Constructor.
XmlElement * XmlElementPtr
void AddAtribute(const KKStr &attributeName, const KKStr &attributeValue)
virtual XmlAttributePtr PopFromBack()
virtual kkint32 ToInt32() const
XmlAttributeList * XmlAttributeListPtr
kkuint32 * TakeOwnershipWidths()
#define XmlElementBuiltInTypeHeader(T, TypeName)
Manages the reading and writing of objects in a simple XML format. For a class to be supported by Xml...
virtual bool ToBool() const
static void WriteXML(kkuint32 height, const kkint32 *widths, float **const mat, const KKStr &varName, std::ostream &o)
virtual bool ToBool() const
#define XmlElementArrayHeader(T, TypeName, ParserNextTokenMethod)
XmlElement derived class that will be used when there is no Factory defined for the element...
static XmlFactory * FactoryLookUp(const KKStr &className)
virtual float ToFloat() const
XmlTokenizer * XmlTokenizerPtr
virtual ~XmlElementDateTime()
#define XmlElementArray2DHeader(T, TypeName, XmlElementToUse)
virtual ~XmlElementBool()
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of 'std::string' strings.
virtual const KKStr & ClassName() const
KKStrConstPtr AttributeValue(const KKStr &attributeName)
static const KKStr & EmptyStr()
Static method that returns an Empty String.
XmlFactory const * XmlFactoryConstPtr
summary>To be used for classes that implement default constructor, ReadXML, and WriteXML.
XmlFactory * XmlFactoryPtr
virtual const KKStr & VarName() const
XmlElementDateTime(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
KKStrConstPtr AttributeValueByIndex(kkuint32 index) const
XmlTagConstPtr NameTag() const
KKStr YYYY_MM_DD_HH_MM_SS() const
XmlElementUnKnown * XmlElementUnKnownPtr
XmlAttributeList(bool _owner)
XmlElementArrayFloat2DVarying * XmlElementArrayFloat2DVaryingPtr
XmlAttributePtr LookUpByName(const KKStr &name) const
XmlStream(const KKStr &_fileName, RunLog &_log)
XmlElementKeyValuePairs * XmlElementKeyValuePairsPtr
XmlElementTemplate(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)
virtual XmlElementPtr ManufatureXmlElement(XmlTagPtr tag, XmlStream &s, VolConstBool &cancelFlag, RunLog &log)=0
void RegisterFactory(XmlFactoryPtr factory)
Registers a Factory at the current hierarchy that is being processed.
std::vector< std::pair< KKStr, KKStr > > * TakeOwnership()
virtual const KKStr & SectionName() const
virtual double ToDouble() const
virtual TokenTypes TokenType()
XmlFactoryManager * XmlFactoryManagerPtr
virtual void PushOnBack(XmlAttributePtr a)
XmlElement(const KKStr §ionName, XmlTag::TagTypes tagType)
static XmlFactoryManagerPtr globalXmlFactoryManager
virtual KKStr ToKKStr() const
XmlElementKKStrListIndexed * XmlElementKKStrListIndexedPtr
static void WriteXml(const KKStr &s, std::ostream &o)
XmlContent(KKStrPtr _content)
XmlContent * XmlContentPtr
XmlElementKKStr * XmlElementKKStrPtr
void WriteXML(std::ostream &o)
KKStrPtr const Content() const
kkuint32 * Widths() const
Used for logging messages.
static void FinalCleanUp()
XmlTag(const KKStrConstPtr tagStr)
XmlElementTemplate< VectorKKStr > XmlElementVectorKKStr
static void WriteXML(const DateTime &d, const KKStr &varName, std::ostream &o)
virtual TokenTypes TokenType()=0
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
virtual XmlAttributePtr PopFromFromt()
std::deque< XmlTokenPtr > * Value() const
XmlElementKeyValuePairs()
Used to construct an instance that will be written out to a XML file.
virtual void PushOnFront(XmlAttributePtr a)
virtual const KKStr & VarName() const
XmlFactoryPtr XmlElementKKStrFactoryInstance()
virtual XmlContentPtr GetNextContent(RunLog &log)
void Add(const KKStr &key, const KKB::DateTime &v)
XmlFactoryPtr XmlElementUnKnownFactoryInstance()
XmlStream(XmlTokenizerPtr _tokenStream)
XmlAttributeList(const XmlAttributeList &attributes)
KKStrConstPtr AttributeNameByIndex(kkuint32 index) const
~XmlFactoryManager()
summary>Give the FactoryManager instance ownership of this factory; the name of the factory must be u...
void AddAtribute(const KKStr &attributeName, double attributeValue)
void WriteXML(const KKStr &varName, std::ostream &o)
DateTime AttributeValueDateTime(const KKStr &name) const
XmlAttribute(const KKStr &_name, const KKStr &_value)
volatile const bool VolConstBool