Go to the documentation of this file.00001
00002
00003
00004
00005 #ifndef __IRR_XML_H_INCLUDED__
00006 #define __IRR_XML_H_INCLUDED__
00007
00008 #include <stdio.h>
00009 #include "IrrCompileConfig.h"
00010
00153 namespace irr
00154 {
00155 namespace io
00156 {
00158 enum ETEXT_FORMAT
00159 {
00161 ETF_ASCII,
00162
00164 ETF_UTF8,
00165
00167 ETF_UTF16_BE,
00168
00170 ETF_UTF16_LE,
00171
00173 ETF_UTF32_BE,
00174
00176 ETF_UTF32_LE
00177 };
00178
00179
00181 enum EXML_NODE
00182 {
00184 EXN_NONE,
00185
00187 EXN_ELEMENT,
00188
00190 EXN_ELEMENT_END,
00191
00194 EXN_TEXT,
00195
00197 EXN_COMMENT,
00198
00200 EXN_CDATA,
00201
00203 EXN_UNKNOWN
00204 };
00205
00207
00214 class IFileReadCallBack
00215 {
00216 public:
00217
00219 virtual ~IFileReadCallBack() {}
00220
00222
00225 virtual int read(void* buffer, int sizeToRead) = 0;
00226
00228 virtual long getSize() const = 0;
00229 };
00230
00232
00237 class IXMLBase
00238 {
00239 };
00240
00242
00274 template<class char_type, class super_class>
00275 class IIrrXMLReader : public super_class
00276 {
00277 public:
00278
00280 virtual ~IIrrXMLReader() {}
00281
00283
00284 virtual bool read() = 0;
00285
00287 virtual EXML_NODE getNodeType() const = 0;
00288
00290
00293 virtual unsigned int getAttributeCount() const = 0;
00294
00296
00298 virtual const char_type* getAttributeName(int idx) const = 0;
00299
00301
00303 virtual const char_type* getAttributeValue(int idx) const = 0;
00304
00306
00308 virtual const char_type* getAttributeValue(const char_type* name) const = 0;
00309
00311
00315 virtual const char_type* getAttributeValueSafe(const char_type* name) const = 0;
00316
00318
00321 virtual int getAttributeValueAsInt(const char_type* name) const = 0;
00322
00324
00327 virtual int getAttributeValueAsInt(int idx) const = 0;
00328
00330
00333 virtual float getAttributeValueAsFloat(const char_type* name) const = 0;
00334
00336
00339 virtual float getAttributeValueAsFloat(int idx) const = 0;
00340
00342
00344 virtual const char_type* getNodeName() const = 0;
00345
00347
00349 virtual const char_type* getNodeData() const = 0;
00350
00352 virtual bool isEmptyElement() const = 0;
00353
00355
00359 virtual ETEXT_FORMAT getSourceFormat() const = 0;
00360
00362
00366 virtual ETEXT_FORMAT getParserFormat() const = 0;
00367 };
00368
00369
00370 template <typename T>
00371 struct xmlChar
00372 {
00373 T c;
00374 xmlChar<T>() {}
00375 xmlChar<T>(char in) : c(static_cast<T>(in)) {}
00376 xmlChar<T>(wchar_t in) : c(static_cast<T>(in)) {}
00377 explicit xmlChar<T>(unsigned char in) : c(static_cast<T>(in)) {}
00378 explicit xmlChar<T>(unsigned short in) : c(static_cast<T>(in)) {}
00379 explicit xmlChar<T>(unsigned int in) : c(static_cast<T>(in)) {}
00380 explicit xmlChar<T>(unsigned long in) : c(static_cast<T>(in)) {}
00381 operator T() const { return c; }
00382 void operator=(int t) { c=static_cast<T>(t); }
00383 };
00384
00386
00388 typedef xmlChar<unsigned short> char16;
00389
00391
00393 typedef xmlChar<unsigned int> char32;
00394
00396
00401 typedef IIrrXMLReader<char, IXMLBase> IrrXMLReader;
00402
00404
00409 typedef IIrrXMLReader<char16, IXMLBase> IrrXMLReaderUTF16;
00410
00412
00417 typedef IIrrXMLReader<char32, IXMLBase> IrrXMLReaderUTF32;
00418
00419
00421
00429 IRRLICHT_API IrrXMLReader* IRRCALLCONV createIrrXMLReader(const char* filename);
00430
00432
00441 IRRLICHT_API IrrXMLReader* IRRCALLCONV createIrrXMLReader(FILE* file);
00442
00444
00456 IRRLICHT_API IrrXMLReader* IRRCALLCONV createIrrXMLReader(IFileReadCallBack* callback,
00457 bool deleteCallback = false);
00458
00460
00469 IRRLICHT_API IrrXMLReaderUTF16* IRRCALLCONV createIrrXMLReaderUTF16(const char* filename);
00470
00472
00481 IRRLICHT_API IrrXMLReaderUTF16* IRRCALLCONV createIrrXMLReaderUTF16(FILE* file);
00482
00484
00496 IRRLICHT_API IrrXMLReaderUTF16* IRRCALLCONV createIrrXMLReaderUTF16(IFileReadCallBack* callback,
00497 bool deleteCallback = false);
00498
00499
00501
00509 IRRLICHT_API IrrXMLReaderUTF32* IRRCALLCONV createIrrXMLReaderUTF32(const char* filename);
00510
00512
00521 IRRLICHT_API IrrXMLReaderUTF32* IRRCALLCONV createIrrXMLReaderUTF32(FILE* file);
00522
00524
00537 IRRLICHT_API IrrXMLReaderUTF32* IRRCALLCONV createIrrXMLReaderUTF32(IFileReadCallBack* callback,
00538 bool deleteCallback = false);
00539
00540
00562 }
00563 }
00564
00565 #endif // __IRR_XML_H_INCLUDED__
00566