csutil/documentcommon.h
Go to the documentation of this file.00001 /* 00002 Copyright (C) 2005 by Jorrit Tyberghein 00003 (C) 2005 by Frank Richter 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 00024 #ifndef __CS_CSUTIL_DOCUMENTCOMMON_H__ 00025 #define __CS_CSUTIL_DOCUMENTCOMMON_H__ 00026 00027 #include "csextern.h" 00028 #include "csutil/leakguard.h" 00029 #include "csutil/scf_implementation.h" 00030 #include "iutil/document.h" 00031 00035 class CS_CRYSTALSPACE_EXPORT csEmptyDocumentNodeIterator : 00036 public scfImplementation1<csEmptyDocumentNodeIterator, iDocumentNodeIterator> 00037 { 00038 public: 00039 CS_LEAKGUARD_DECLARE(csEmptyDocumentNodeIterator); 00040 00041 csEmptyDocumentNodeIterator (); 00042 virtual ~csEmptyDocumentNodeIterator (); 00043 00044 virtual bool HasNext () { return false; } 00045 virtual csRef<iDocumentNode> Next () { return 0; } 00046 }; 00047 00051 class CS_CRYSTALSPACE_EXPORT csEmptyDocumentAttributeIterator : 00052 public scfImplementation1<csEmptyDocumentAttributeIterator, iDocumentAttributeIterator> 00053 { 00054 public: 00055 CS_LEAKGUARD_DECLARE(csEmptyDocumentAttributeIterator); 00056 00057 csEmptyDocumentAttributeIterator (); 00058 virtual ~csEmptyDocumentAttributeIterator (); 00059 00060 virtual bool HasNext () { return false; } 00061 virtual csRef<iDocumentAttribute> Next () { return 0; } 00062 }; 00063 00067 class CS_CRYSTALSPACE_EXPORT csDocumentNodeCommon : 00068 public scfImplementation1<csDocumentNodeCommon, iDocumentNode> 00069 { 00070 public: 00071 csDocumentNodeCommon () : scfImplementationType (this) {} 00073 00074 virtual void SetValueAsInt (int value); 00075 virtual void SetValueAsFloat (float value); 00077 00079 virtual csRef<iDocumentNodeIterator> GetNodes () 00080 { return csPtr<iDocumentNodeIterator> (new csEmptyDocumentNodeIterator); } 00085 virtual csRef<iDocumentNodeIterator> GetNodes (const char* value); 00087 virtual csRef<iDocumentNode> GetNode (const char* /*value*/) 00088 { return 0; } 00089 00091 00095 virtual const char* GetContentsValue (); 00096 virtual int GetContentsValueAsInt (); 00097 virtual float GetContentsValueAsFloat (); 00099 00101 virtual csRef<iDocumentAttributeIterator> GetAttributes () 00102 { 00103 return csPtr<iDocumentAttributeIterator> 00104 (new csEmptyDocumentAttributeIterator); 00105 } 00106 00108 csRef<iDocumentAttribute> GetAttribute (const char*) { return 0; } 00110 00111 virtual const char* GetAttributeValue (const char* name); 00112 virtual int GetAttributeValueAsInt (const char* name); 00113 virtual float GetAttributeValueAsFloat (const char* name); 00114 virtual bool GetAttributeValueAsBool (const char* name, 00115 bool defaultvalue = false); 00117 00119 00120 virtual void SetAttributeAsInt (const char* name, int value); 00121 virtual void SetAttributeAsFloat (const char* name, float value); 00123 }; 00124 00128 class CS_CRYSTALSPACE_EXPORT csDocumentAttributeCommon : 00129 public scfImplementation1<csDocumentAttributeCommon, iDocumentAttribute> 00130 { 00131 public: 00132 csDocumentAttributeCommon () : scfImplementationType (this) 00133 {} 00135 00138 virtual int GetValueAsInt (); 00139 virtual float GetValueAsFloat (); 00140 virtual bool GetValueAsBool (); 00142 00144 00145 virtual void SetValueAsInt (int v); 00146 virtual void SetValueAsFloat (float f); 00148 }; 00149 00154 class CS_CRYSTALSPACE_EXPORT csDocumentNodeReadOnly : 00155 public scfImplementationExt0<csDocumentNodeReadOnly, csDocumentNodeCommon> 00156 { 00157 public: 00158 csDocumentNodeReadOnly () 00159 : scfImplementationType (this) 00160 {} 00162 00163 virtual void SetValue (const char* /*value*/) {} 00164 virtual void SetValueAsInt (int /*value*/) {} 00165 virtual void SetValueAsFloat (float /*value*/) {} 00166 00167 virtual void RemoveNode (const csRef<iDocumentNode>& /*child*/) {} 00168 virtual void RemoveNodes (csRef<iDocumentNodeIterator> /*children*/) {} 00169 virtual void RemoveNodes () {} 00170 00171 virtual csRef<iDocumentNode> CreateNodeBefore (csDocumentNodeType /*type*/, 00172 iDocumentNode* /*before*/) 00173 { return 0; } 00174 00175 virtual void RemoveAttribute (const csRef<iDocumentAttribute>& /*attr*/) {} 00176 virtual void RemoveAttributes () {} 00177 00178 virtual void SetAttribute (const char* /*name*/, const char* /*value*/) {} 00179 virtual void SetAttributeAsInt (const char* /*name*/, int /*value*/) {} 00180 virtual void SetAttributeAsFloat (const char* /*name*/, float /*value*/) {} 00182 }; 00183 00184 #endif // __CS_CSUTIL_DOCUMENTCOMMON_H__
Generated for Crystal Space by doxygen 1.4.7