00001
00002
00003
00004
00005 #ifndef __I_ATTRIBUTES_H_INCLUDED__
00006 #define __I_ATTRIBUTES_H_INCLUDED__
00007
00008 #include "IReferenceCounted.h"
00009 #include "SColor.h"
00010 #include "vector3d.h"
00011 #include "vector2d.h"
00012 #include "line2d.h"
00013 #include "line3d.h"
00014 #include "triangle3d.h"
00015 #include "position2d.h"
00016 #include "rect.h"
00017 #include "matrix4.h"
00018 #include "quaternion.h"
00019 #include "plane3d.h"
00020 #include "triangle3d.h"
00021 #include "line2d.h"
00022 #include "line3d.h"
00023 #include "irrString.h"
00024 #include "irrArray.h"
00025 #include "IXMLReader.h"
00026
00027 namespace irr
00028 {
00029 namespace video
00030 {
00031 class ITexture;
00032 }
00033 namespace io
00034 {
00035 class IXMLWriter;
00036
00038 enum E_ATTRIBUTE_TYPE
00039 {
00040
00041 EAT_INT = 0,
00042
00043
00044 EAT_FLOAT,
00045
00046
00047 EAT_STRING,
00048
00049
00050 EAT_BOOL,
00051
00052
00053 EAT_ENUM,
00054
00055
00056 EAT_COLOR,
00057
00058
00059 EAT_COLORF,
00060
00061
00062 EAT_VECTOR3D,
00063
00064
00065 EAT_POSITION2D,
00066
00067
00068 EAT_VECTOR2D,
00069
00070
00071 EAT_RECT,
00072
00073
00074 EAT_MATRIX,
00075
00076
00077 EAT_QUATERNION,
00078
00079
00080 EAT_BBOX,
00081
00082
00083 EAT_PLANE,
00084
00085
00086 EAT_TRIANGLE3D,
00087
00088
00089 EAT_LINE2D,
00090
00091
00092 EAT_LINE3D,
00093
00094
00095 EAT_STRINGWARRAY,
00096
00097
00098 EAT_FLOATARRAY,
00099
00100
00101 EAT_INTARRAY,
00102
00103
00104 EAT_BINARY,
00105
00106
00107 EAT_TEXTURE,
00108
00109
00110 EAT_USER_POINTER,
00111
00112
00113 EAT_COUNT,
00114
00115
00116 EAT_UNKNOWN
00117 };
00118
00120 class IAttributes : public virtual IReferenceCounted
00121 {
00122 public:
00123
00125 virtual u32 getAttributeCount() const = 0;
00126
00129 virtual const c8* getAttributeName(s32 index) = 0;
00130
00133 virtual E_ATTRIBUTE_TYPE getAttributeType(const c8* attributeName) = 0;
00134
00137 virtual E_ATTRIBUTE_TYPE getAttributeType(s32 index) = 0;
00138
00141 virtual const wchar_t* getAttributeTypeString(const c8* attributeName) = 0;
00142
00145 virtual const wchar_t* getAttributeTypeString(s32 index) = 0;
00146
00148 virtual bool existsAttribute(const c8* attributeName) = 0;
00149
00151 virtual s32 findAttribute(const c8* attributeName) = 0;
00152
00154 virtual void clear() = 0;
00155
00162 virtual bool read(io::IXMLReader* reader, bool readCurrentElementOnly=false, const wchar_t* elementName=0) = 0;
00163
00168 virtual bool write(io::IXMLWriter* writer, bool writeXMLHeader=false, const wchar_t* elementName=0) = 0;
00169
00170
00171
00172
00173
00174
00175
00176
00178 virtual void addInt(const c8* attributeName, s32 value) = 0;
00179
00181 virtual void setAttribute(const c8* attributeName, s32 value) = 0;
00182
00186 virtual s32 getAttributeAsInt(const c8* attributeName) = 0;
00187
00190 virtual s32 getAttributeAsInt(s32 index) = 0;
00191
00193 virtual void setAttribute(s32 index, s32 value) = 0;
00194
00195
00196
00197
00198
00199
00200
00202 virtual void addFloat(const c8* attributeName, f32 value) = 0;
00203
00205 virtual void setAttribute(const c8* attributeName, f32 value) = 0;
00206
00210 virtual f32 getAttributeAsFloat(const c8* attributeName) = 0;
00211
00214 virtual f32 getAttributeAsFloat(s32 index) = 0;
00215
00217 virtual void setAttribute(s32 index, f32 value) = 0;
00218
00219
00220
00221
00222
00223
00224
00226 virtual void addString(const c8* attributeName, const c8* value) = 0;
00227
00231 virtual void setAttribute(const c8* attributeName, const c8* value) = 0;
00232
00237 virtual core::stringc getAttributeAsString(const c8* attributeName) = 0;
00238
00242 virtual void getAttributeAsString(const c8* attributeName, c8* target) = 0;
00243
00246 virtual core::stringc getAttributeAsString(s32 index) = 0;
00247
00251 virtual void setAttribute(s32 index, const c8* value) = 0;
00252
00253
00254
00256 virtual void addString(const c8* attributeName, const wchar_t* value) = 0;
00257
00261 virtual void setAttribute(const c8* attributeName, const wchar_t* value) = 0;
00262
00267 virtual core::stringw getAttributeAsStringW(const c8* attributeName) = 0;
00268
00272 virtual void getAttributeAsStringW(const c8* attributeName, wchar_t* target) = 0;
00273
00276 virtual core::stringw getAttributeAsStringW(s32 index) = 0;
00277
00281 virtual void setAttribute(s32 index, const wchar_t* value) = 0;
00282
00283
00284
00285
00286
00287
00288
00290 virtual void addBinary(const c8* attributeName, void* data, s32 dataSizeInBytes) = 0;
00291
00293 virtual void setAttribute(const c8* attributeName, void* data, s32 dataSizeInBytes ) = 0;
00294
00296
00300 virtual void getAttributeAsBinaryData(const c8* attributeName, void* outData, s32 maxSizeInBytes) = 0;
00301
00303
00307 virtual void getAttributeAsBinaryData(s32 index, void* outData, s32 maxSizeInBytes) = 0;
00308
00310 virtual void setAttribute(s32 index, void* data, s32 dataSizeInBytes ) = 0;
00311
00312
00313
00314
00315
00316
00318 virtual void addArray(const c8* attributeName, core::array<core::stringw> value) = 0;
00319
00323 virtual void setAttribute(const c8* attributeName, const core::array<core::stringw> value) = 0;
00324
00329 virtual core::array<core::stringw> getAttributeAsArray(const c8* attributeName) = 0;
00330
00333 virtual core::array<core::stringw> getAttributeAsArray(s32 index) = 0;
00334
00336 virtual void setAttribute(s32 index, core::array<core::stringw> value) = 0;
00337
00338
00339
00340
00341
00342
00343
00344
00346 virtual void addBool(const c8* attributeName, bool value) = 0;
00347
00349 virtual void setAttribute(const c8* attributeName, bool value) = 0;
00350
00354 virtual bool getAttributeAsBool(const c8* attributeName) = 0;
00355
00358 virtual bool getAttributeAsBool(s32 index) = 0;
00359
00361 virtual void setAttribute(s32 index, bool value) = 0;
00362
00363
00364
00365
00366
00367
00368
00370 virtual void addEnum(const c8* attributeName, const c8* enumValue, const c8* const* enumerationLiterals) = 0;
00371
00373 virtual void addEnum(const c8* attributeName, s32 enumValue, const c8* const* enumerationLiterals) = 0;
00374
00376 virtual void setAttribute(const c8* attributeName, const c8* enumValue, const c8* const* enumerationLiterals) = 0;
00377
00381 virtual const c8* getAttributeAsEnumeration(const c8* attributeName) = 0;
00382
00384
00391 virtual s32 getAttributeAsEnumeration(const c8* attributeName, const c8* const* enumerationLiteralsToUse) = 0;
00392
00394
00401 virtual s32 getAttributeAsEnumeration(s32 index, const c8* const* enumerationLiteralsToUse) = 0;
00402
00405 virtual const c8* getAttributeAsEnumeration(s32 index) = 0;
00406
00410 virtual void getAttributeEnumerationLiteralsOfEnumeration(const c8* attributeName, core::array<core::stringc>& outLiterals) = 0;
00411
00415 virtual void getAttributeEnumerationLiteralsOfEnumeration(s32 index, core::array<core::stringc>& outLiterals) = 0;
00416
00418 virtual void setAttribute(s32 index, const c8* enumValue, const c8* const* enumerationLiterals) = 0;
00419
00420
00421
00422
00423
00424
00425
00426
00428 virtual void addColor(const c8* attributeName, video::SColor value) = 0;
00429
00430
00432 virtual void setAttribute(const c8* attributeName, video::SColor color) = 0;
00433
00437 virtual video::SColor getAttributeAsColor(const c8* attributeName) = 0;
00438
00441 virtual video::SColor getAttributeAsColor(s32 index) = 0;
00442
00444 virtual void setAttribute(s32 index, video::SColor color) = 0;
00445
00446
00447
00448
00449
00450
00451
00453 virtual void addColorf(const c8* attributeName, video::SColorf value) = 0;
00454
00456 virtual void setAttribute(const c8* attributeName, video::SColorf color) = 0;
00457
00461 virtual video::SColorf getAttributeAsColorf(const c8* attributeName) = 0;
00462
00465 virtual video::SColorf getAttributeAsColorf(s32 index) = 0;
00466
00468 virtual void setAttribute(s32 index, video::SColorf color) = 0;
00469
00470
00471
00472
00473
00474
00475
00476
00478 virtual void addVector3d(const c8* attributeName, core::vector3df value) = 0;
00479
00481 virtual void setAttribute(const c8* attributeName, core::vector3df v) = 0;
00482
00486 virtual core::vector3df getAttributeAsVector3d(const c8* attributeName) = 0;
00487
00490 virtual core::vector3df getAttributeAsVector3d(s32 index) = 0;
00491
00493 virtual void setAttribute(s32 index, core::vector3df v) = 0;
00494
00495
00496
00497
00498
00499
00500
00502 virtual void addPosition2d(const c8* attributeName, core::position2di value) = 0;
00503
00505 virtual void setAttribute(const c8* attributeName, core::position2di v) = 0;
00506
00510 virtual core::position2di getAttributeAsPosition2d(const c8* attributeName) = 0;
00511
00514 virtual core::position2di getAttributeAsPosition2d(s32 index) = 0;
00515
00517 virtual void setAttribute(s32 index, core::position2di v) = 0;
00518
00519
00520
00521
00522
00523
00524
00526 virtual void addRect(const c8* attributeName, core::rect<s32> value) = 0;
00527
00529 virtual void setAttribute(const c8* attributeName, core::rect<s32> v) = 0;
00530
00534 virtual core::rect<s32> getAttributeAsRect(const c8* attributeName) = 0;
00535
00538 virtual core::rect<s32> getAttributeAsRect(s32 index) = 0;
00539
00541 virtual void setAttribute(s32 index, core::rect<s32> v) = 0;
00542
00543
00544
00545
00546
00547
00549 virtual void addMatrix(const c8* attributeName, const core::matrix4& v) = 0;
00550
00552 virtual void setAttribute(const c8* attributeName, const core::matrix4& v) = 0;
00553
00557 virtual core::matrix4 getAttributeAsMatrix(const c8* attributeName) = 0;
00558
00561 virtual core::matrix4 getAttributeAsMatrix(s32 index) = 0;
00562
00564 virtual void setAttribute(s32 index, const core::matrix4& v) = 0;
00565
00566
00567
00568
00569
00570
00572 virtual void addQuaternion(const c8* attributeName, core::quaternion v) = 0;
00573
00575 virtual void setAttribute(const c8* attributeName, core::quaternion v) = 0;
00576
00580 virtual core::quaternion getAttributeAsQuaternion(const c8* attributeName) = 0;
00581
00584 virtual core::quaternion getAttributeAsQuaternion(s32 index) = 0;
00585
00587 virtual void setAttribute(s32 index, core::quaternion v) = 0;
00588
00589
00590
00591
00592
00593
00594
00596 virtual void addBox3d(const c8* attributeName, core::aabbox3df v) = 0;
00597
00599 virtual void setAttribute(const c8* attributeName, core::aabbox3df v) = 0;
00600
00604 virtual core::aabbox3df getAttributeAsBox3d(const c8* attributeName) = 0;
00605
00608 virtual core::aabbox3df getAttributeAsBox3d(s32 index) = 0;
00609
00611 virtual void setAttribute(s32 index, core::aabbox3df v) = 0;
00612
00613
00614
00615
00616
00617
00618
00620 virtual void addPlane3d(const c8* attributeName, core::plane3df v) = 0;
00621
00623 virtual void setAttribute(const c8* attributeName, core::plane3df v) = 0;
00624
00628 virtual core::plane3df getAttributeAsPlane3d(const c8* attributeName) = 0;
00629
00632 virtual core::plane3df getAttributeAsPlane3d(s32 index) = 0;
00633
00635 virtual void setAttribute(s32 index, core::plane3df v) = 0;
00636
00637
00638
00639
00640
00641
00642
00643
00645 virtual void addTriangle3d(const c8* attributeName, core::triangle3df v) = 0;
00646
00648 virtual void setAttribute(const c8* attributeName, core::triangle3df v) = 0;
00649
00653 virtual core::triangle3df getAttributeAsTriangle3d(const c8* attributeName) = 0;
00654
00657 virtual core::triangle3df getAttributeAsTriangle3d(s32 index) = 0;
00658
00660 virtual void setAttribute(s32 index, core::triangle3df v) = 0;
00661
00662
00663
00664
00665
00666
00667
00668
00670 virtual void addLine2d(const c8* attributeName, core::line2df v) = 0;
00671
00673 virtual void setAttribute(const c8* attributeName, core::line2df v) = 0;
00674
00678 virtual core::line2df getAttributeAsLine2d(const c8* attributeName) = 0;
00679
00682 virtual core::line2df getAttributeAsLine2d(s32 index) = 0;
00683
00685 virtual void setAttribute(s32 index, core::line2df v) = 0;
00686
00687
00688
00689
00690
00691
00692
00693
00695 virtual void addLine3d(const c8* attributeName, core::line3df v) = 0;
00696
00698 virtual void setAttribute(const c8* attributeName, core::line3df v) = 0;
00699
00703 virtual core::line3df getAttributeAsLine3d(const c8* attributeName) = 0;
00704
00707 virtual core::line3df getAttributeAsLine3d(s32 index) = 0;
00708
00710 virtual void setAttribute(s32 index, core::line3df v) = 0;
00711
00712
00713
00714
00715
00716
00717
00718
00720 virtual void addTexture(const c8* attributeName, video::ITexture* texture) = 0;
00721
00723 virtual void setAttribute(const c8* attributeName, video::ITexture* texture ) = 0;
00724
00727 virtual video::ITexture* getAttributeAsTexture(const c8* attributeName) = 0;
00728
00731 virtual video::ITexture* getAttributeAsTexture(s32 index) = 0;
00732
00734 virtual void setAttribute(s32 index, video::ITexture* texture) = 0;
00735
00736
00737
00738
00739
00740
00741
00742
00744 virtual void addUserPointer(const c8* attributeName, void* userPointer) = 0;
00745
00747 virtual void setAttribute(const c8* attributeName, void* userPointer) = 0;
00748
00751 virtual void* getAttributeAsUserPointer(const c8* attributeName) = 0;
00752
00755 virtual void* getAttributeAsUserPointer(s32 index) = 0;
00756
00758 virtual void setAttribute(s32 index, void* userPointer) = 0;
00759
00760 };
00761
00762 }
00763 }
00764
00765 #endif
00766
00767
00768