## Public API Reference

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# iutil/document.h

Go to the documentation of this file.

    00001 /*
    00002     Crystal Space Document Interface
    00003     Copyright (C) 2002 by Jorrit Tyberghein
    00004
    00005     This library is free software; you can redistribute it and/or
    00006     modify it under the terms of the GNU Library General Public
    00007     License as published by the Free Software Foundation; either
    00008     version 2 of the License, or (at your option) any later version.
    00009
    00010     This library is distributed in the hope that it will be useful,
    00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
    00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00013     Library General Public License for more details.
    00014
    00015     You should have received a copy of the GNU Library General Public
    00016     License along with this library; if not, write to the Free
    00017     Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
    00018 */
    00019
    00020 #ifndef __CS_IUTIL_DOCUMENT_H__
    00021 #define __CS_IUTIL_DOCUMENT_H__
    00022
    00028 #include "csutil/scf.h"
    00029
    00030 struct iDocumentNode;
    00031 struct iDocumentAttribute;
    00032 struct iFile;
    00033 struct iDataBuffer;
    00034 struct iString;
    00035 struct iVFS;
    00036
    00040 enum csDocumentNodeType
    00041 {
    00043   CS_NODE_DOCUMENT = 1,
    00045   CS_NODE_ELEMENT,
    00047   CS_NODE_COMMENT,
    00049   CS_NODE_UNKNOWN,
    00051   CS_NODE_TEXT,
    00053   CS_NODE_DECLARATION
    00054 };
    00055
    00059
    00060 #define CS_CHANGEABLE_NEVER             0
    00061
    00062 #define CS_CHANGEABLE_NEWROOT           1
    00063
    00064 #define CS_CHANGEABLE_YES               2
    00065
    00067 //===========================================================================
    00068
    00075 struct iDocumentAttributeIterator : public virtual iBase
    00076 {
    00077   SCF_INTERFACE(iDocumentAttributeIterator, 2,0,0);
    00079   virtual bool HasNext () = 0;
    00081   virtual csRef<iDocumentAttribute> Next () = 0;
    00082 };
    00083
    00084 //===========================================================================
    00085
    00086
    00099 struct iDocumentAttribute : public virtual iBase
    00100 {
    00101   SCF_INTERFACE(iDocumentAttribute, 2,0,0);
    00103   virtual const char* GetName () = 0;
    00105   virtual const char* GetValue () = 0;
    00107   virtual int GetValueAsInt () = 0;
    00109   virtual float GetValueAsFloat () = 0;
    00111   virtual bool GetValueAsBool () = 0;
    00113   virtual void SetName (const char* name) = 0;
    00115   virtual void SetValue (const char* value) = 0;
    00117   virtual void SetValueAsInt (int v) = 0;
    00119   virtual void SetValueAsFloat (float f) = 0;
    00120 };
    00121
    00122 //===========================================================================
    00123
    00130 struct iDocumentNodeIterator : public virtual iBase
    00131 {
    00132   SCF_INTERFACE(iDocumentNodeIterator, 2,0,0);
    00134   virtual bool HasNext () = 0;
    00136   virtual csRef<iDocumentNode> Next () = 0;
    00137 };
    00138
    00139 //===========================================================================
    00140
    00141
    00155 struct iDocumentNode : public virtual iBase
    00156 {
    00157   SCF_INTERFACE(iDocumentNode, 2,0,0);
    00161   virtual csDocumentNodeType GetType () = 0;
    00162
    00171   virtual bool Equals (iDocumentNode* other) = 0;
    00172
    00183   virtual const char* GetValue () = 0;
    00194   virtual void SetValue (const char* value) = 0;
    00196   virtual void SetValueAsInt (int value) = 0;
    00198   virtual void SetValueAsFloat (float value) = 0;
    00199
    00201   virtual csRef<iDocumentNode> GetParent () = 0;
    00202
    00203   //---------------------------------------------------------------------
    00204
    00209   virtual csRef<iDocumentNodeIterator> GetNodes () = 0;
    00214   virtual csRef<iDocumentNodeIterator> GetNodes (const char* value) = 0;
    00216   virtual csRef<iDocumentNode> GetNode (const char* value) = 0;
    00217
    00219   virtual void RemoveNode (const csRef<iDocumentNode>& child) = 0;
    00221   virtual void RemoveNodes (csRef<iDocumentNodeIterator> children) = 0;
    00223   virtual void RemoveNodes () = 0;
    00224
    00231   virtual csRef<iDocumentNode> CreateNodeBefore (csDocumentNodeType type,
    00232         iDocumentNode* before = 0) = 0;
    00233
    00240   virtual const char* GetContentsValue () = 0;
    00246   virtual int GetContentsValueAsInt () = 0;
    00252   virtual float GetContentsValueAsFloat () = 0;
    00253
    00254   //---------------------------------------------------------------------
    00255
    00260   virtual csRef<iDocumentAttributeIterator> GetAttributes () = 0;
    00262   virtual csRef<iDocumentAttribute> GetAttribute (const char* name) = 0;
    00264   virtual const char* GetAttributeValue (const char* name) = 0;
    00266   virtual int GetAttributeValueAsInt (const char* name) = 0;
    00268   virtual float GetAttributeValueAsFloat (const char* name) = 0;
    00273   virtual bool GetAttributeValueAsBool (const char* name,
    00274         bool defaultvalue=false) = 0;
    00275
    00277   virtual void RemoveAttribute (const csRef<iDocumentAttribute>& attr) = 0;
    00279   virtual void RemoveAttributes () = 0;
    00280
    00282   virtual void SetAttribute (const char* name, const char* value) = 0;
    00284   virtual void SetAttributeAsInt (const char* name, int value) = 0;
    00286   virtual void SetAttributeAsFloat (const char* name, float value) = 0;
    00287 };
    00288
    00289 //===========================================================================
    00290
    00291
    00298 struct iDocument : public virtual iBase
    00299 {
    00300   SCF_INTERFACE(iDocument, 2,0,0);
    00302   virtual void Clear () = 0;
    00303
    00305   virtual csRef<iDocumentNode> CreateRoot () = 0;
    00306
    00311   virtual csRef<iDocumentNode> GetRoot () = 0;
    00312
    00324   virtual const char* Parse (iFile* file, bool collapse = false) = 0;
    00325
    00337   virtual const char* Parse (iDataBuffer* buf, bool collapse = false) = 0;
    00338
    00350   virtual const char* Parse (iString* str, bool collapse = false) = 0;
    00351
    00363   virtual const char* Parse (const char* buf, bool collapse = false) = 0;
    00364
    00370   virtual const char* Write (iFile* file) = 0;
    00371
    00377   virtual const char* Write (iString* str) = 0;
    00378
    00384   virtual const char* Write (iVFS* vfs, const char* filename) = 0;
    00385
    00393   virtual int Changeable () = 0;
    00394 };
    00395
    00396 //===========================================================================
    00397
    00398
    00412 struct iDocumentSystem : public virtual iBase
    00413 {
    00414   SCF_INTERFACE(iDocumentSystem, 2,0,0);
    00416   virtual csRef<iDocument> CreateDocument () = 0;
    00417 };
    00418
    00421 #endif // __CS_IUTIL_DOCUMENT_H__