Commit 0e21f80e authored by cutealien's avatar cutealien

- CStringWArrayAttribute can use const-ref instead of full copy

- Put E_ATTRIBUTE_TYPE in own header EAttributes.h
- Put IAttribute in own header IAttribute.h


git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@2969 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 11ef630e
// Copyright (C) 2002-2009 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef __E_ATTRIBUTES_H_INCLUDED__
#define __E_ATTRIBUTES_H_INCLUDED__
namespace irr
{
namespace io
{
//! Types of attributes available for IAttributes
enum E_ATTRIBUTE_TYPE
{
// integer attribute
EAT_INT = 0,
// float attribute
EAT_FLOAT,
// string attribute
EAT_STRING,
// boolean attribute
EAT_BOOL,
// enumeration attribute
EAT_ENUM,
// color attribute
EAT_COLOR,
// floating point color attribute
EAT_COLORF,
// 3d vector attribute
EAT_VECTOR3D,
// 2d position attribute
EAT_POSITION2D,
// vector 2d
EAT_VECTOR2D,
// rectangle attribute
EAT_RECT,
// matrix attribute
EAT_MATRIX,
// quaternion attribute
EAT_QUATERNION,
// 3d bounding box
EAT_BBOX,
// plane
EAT_PLANE,
// 3d triangle
EAT_TRIANGLE3D,
// line 2d
EAT_LINE2D,
// line 3d
EAT_LINE3D,
// array of stringws attribute
EAT_STRINGWARRAY,
// array of float
EAT_FLOATARRAY,
// array of int
EAT_INTARRAY,
// binary data attribute
EAT_BINARY,
// texture reference attribute
EAT_TEXTURE,
// user pointer void*
EAT_USER_POINTER,
// known attribute type count
EAT_COUNT,
// unknown attribute
EAT_UNKNOWN
};
} // end namespace io
} // end namespace irr
#endif
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include "irrString.h" #include "irrString.h"
#include "irrArray.h" #include "irrArray.h"
#include "IXMLReader.h" #include "IXMLReader.h"
#include "EAttributes.h"
namespace irr namespace irr
{ {
...@@ -34,88 +35,6 @@ namespace io ...@@ -34,88 +35,6 @@ namespace io
{ {
class IXMLWriter; class IXMLWriter;
//! Types of attributes available for IAttributes
enum E_ATTRIBUTE_TYPE
{
// integer attribute
EAT_INT = 0,
// float attribute
EAT_FLOAT,
// string attribute
EAT_STRING,
// boolean attribute
EAT_BOOL,
// enumeration attribute
EAT_ENUM,
// color attribute
EAT_COLOR,
// floating point color attribute
EAT_COLORF,
// 3d vector attribute
EAT_VECTOR3D,
// 2d position attribute
EAT_POSITION2D,
// vector 2d
EAT_VECTOR2D,
// rectangle attribute
EAT_RECT,
// matrix attribute
EAT_MATRIX,
// quaternion attribute
EAT_QUATERNION,
// 3d bounding box
EAT_BBOX,
// plane
EAT_PLANE,
// 3d triangle
EAT_TRIANGLE3D,
// line 2d
EAT_LINE2D,
// line 3d
EAT_LINE3D,
// array of stringws attribute
EAT_STRINGWARRAY,
// array of float
EAT_FLOATARRAY,
// array of int
EAT_INTARRAY,
// binary data attribute
EAT_BINARY,
// texture reference attribute
EAT_TEXTURE,
// user pointer void*
EAT_USER_POINTER,
// known attribute type count
EAT_COUNT,
// unknown attribute
EAT_UNKNOWN
};
//! Provides a generic interface for attributes and their values and the possiblity to serialize them //! Provides a generic interface for attributes and their values and the possiblity to serialize them
class IAttributes : public virtual IReferenceCounted class IAttributes : public virtual IReferenceCounted
{ {
......
...@@ -1884,7 +1884,7 @@ class CStringWArrayAttribute : public IAttribute ...@@ -1884,7 +1884,7 @@ class CStringWArrayAttribute : public IAttribute
{ {
public: public:
CStringWArrayAttribute(const char* name, core::array<core::stringw> value) CStringWArrayAttribute(const char* name, const core::array<core::stringw>& value)
{ {
Name = name; Name = name;
setArray(value); setArray(value);
...@@ -1895,7 +1895,7 @@ public: ...@@ -1895,7 +1895,7 @@ public:
return Value; return Value;
} }
virtual void setArray(core::array<core::stringw> value) virtual void setArray(const core::array<core::stringw>& value)
{ {
Value = value; Value = value;
} }
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define __C_ATTRIBUTES_H_INCLUDED__ #define __C_ATTRIBUTES_H_INCLUDED__
#include "IAttributes.h" #include "IAttributes.h"
#include "IAttribute.h"
namespace irr namespace irr
{ {
...@@ -17,7 +18,6 @@ namespace video ...@@ -17,7 +18,6 @@ namespace video
namespace io namespace io
{ {
class IAttribute;
//! Implementation of the IAttributes interface //! Implementation of the IAttributes interface
class CAttributes : public IAttributes class CAttributes : public IAttributes
...@@ -654,77 +654,6 @@ protected: ...@@ -654,77 +654,6 @@ protected:
video::IVideoDriver* Driver; video::IVideoDriver* Driver;
}; };
class IAttribute : public virtual IReferenceCounted
{
public:
virtual ~IAttribute() {};
virtual s32 getInt() { return 0; }
virtual f32 getFloat() { return 0; }
virtual video::SColorf getColorf() { return video::SColorf(1.0f,1.0f,1.0f,1.0f); }
virtual video::SColor getColor() { return video::SColor(255,255,255,255); }
virtual core::stringc getString() { return core::stringc(getStringW().c_str()); }
virtual core::stringw getStringW() { return core::stringw(); }
virtual core::array<core::stringw> getArray() { return core::array<core::stringw>(); };
virtual bool getBool() { return false; }
virtual void getBinary(void* outdata, s32 maxLength) {};
virtual core::vector3df getVector() { return core::vector3df(); }
virtual core::position2di getPosition() { return core::position2di(); }
virtual core::rect<s32> getRect() { return core::rect<s32>(); }
virtual core::quaternion getQuaternion(){ return core::quaternion(); }
virtual core::matrix4 getMatrix() { return core::matrix4(); }
virtual core::triangle3df getTriangle() { return core::triangle3df(); }
virtual core::vector2df getVector2d() { return core::vector2df(); }
virtual core::vector2di getVector2di() { return core::vector2di(); }
virtual core::line2df getLine2d() { return core::line2df(); }
virtual core::line2di getLine2di() { return core::line2di(); }
virtual core::line3df getLine3d() { return core::line3df(); }
virtual core::line3di getLine3di() { return core::line3di(); }
virtual core::dimension2du getDimension2d() { return core::dimension2du(); }
virtual core::aabbox3d<f32> getBBox() { return core::aabbox3d<f32>(); }
virtual core::plane3df getPlane() { return core::plane3df(); }
virtual video::ITexture* getTexture() { return 0; }
virtual const char* getEnum() { return 0; }
virtual void* getUserPointer() { return 0; }
virtual void setInt(s32 intValue) {};
virtual void setFloat(f32 floatValue) {};
virtual void setString(const char* text) {};
virtual void setString(const wchar_t* text){ setString(core::stringc(text).c_str()); };
virtual void setArray( core::array<core::stringw> arr ) {};
virtual void setColor(video::SColorf color) {};
virtual void setColor(video::SColor color) {};
virtual void setBool(bool boolValue) {};
virtual void setBinary(void* data, s32 maxLenght) {};
virtual void setVector(core::vector3df v) {};
virtual void setPosition(core::position2di v) {};
virtual void setRect(core::rect<s32> v) {};
virtual void setQuaternion(core::quaternion v) {};
virtual void setMatrix(core::matrix4 v) {};
virtual void setTriangle(core::triangle3df v) {};
virtual void setVector2d(core::vector2df v) {};
virtual void setVector2d(core::vector2di v) {};
virtual void setLine2d(core::line2df v) {};
virtual void setLine2d(core::line2di v) {};
virtual void setLine3d(core::line3df v) {};
virtual void setLine3d(core::line3di v) {};
virtual void setDimension2d(core::dimension2du v) {};
virtual void setBBox(core::aabbox3d<f32> v) {};
virtual void setPlane(core::plane3df v) {};
virtual void setUserPointer(void* v) {};
virtual void setEnum(const char* enumValue, const char* const* enumerationLiterals) {};
virtual void setTexture(video::ITexture*) {};
core::stringc Name;
virtual E_ATTRIBUTE_TYPE getType() const = 0;
virtual const wchar_t* getTypeString() const = 0;
};
} // end namespace io } // end namespace io
} // end namespace irr } // end namespace irr
......
// Copyright (C) 2002-2009 Nikolaus Gebhardt
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#ifndef __I_ATTRIBUTE_H_INCLUDED__
#define __I_ATTRIBUTE_H_INCLUDED__
#include "IReferenceCounted.h"
#include "SColor.h"
#include "vector3d.h"
#include "vector2d.h"
#include "line2d.h"
#include "line3d.h"
#include "triangle3d.h"
#include "position2d.h"
#include "rect.h"
#include "matrix4.h"
#include "quaternion.h"
#include "plane3d.h"
#include "triangle3d.h"
#include "line2d.h"
#include "line3d.h"
#include "irrString.h"
#include "irrArray.h"
#include "EAttributes.h"
namespace irr
{
namespace io
{
class IAttribute : public virtual IReferenceCounted
{
public:
virtual ~IAttribute() {};
virtual s32 getInt() { return 0; }
virtual f32 getFloat() { return 0; }
virtual video::SColorf getColorf() { return video::SColorf(1.0f,1.0f,1.0f,1.0f); }
virtual video::SColor getColor() { return video::SColor(255,255,255,255); }
virtual core::stringc getString() { return core::stringc(getStringW().c_str()); }
virtual core::stringw getStringW() { return core::stringw(); }
virtual core::array<core::stringw> getArray() { return core::array<core::stringw>(); };
virtual bool getBool() { return false; }
virtual void getBinary(void* outdata, s32 maxLength) {};
virtual core::vector3df getVector() { return core::vector3df(); }
virtual core::position2di getPosition() { return core::position2di(); }
virtual core::rect<s32> getRect() { return core::rect<s32>(); }
virtual core::quaternion getQuaternion(){ return core::quaternion(); }
virtual core::matrix4 getMatrix() { return core::matrix4(); }
virtual core::triangle3df getTriangle() { return core::triangle3df(); }
virtual core::vector2df getVector2d() { return core::vector2df(); }
virtual core::vector2di getVector2di() { return core::vector2di(); }
virtual core::line2df getLine2d() { return core::line2df(); }
virtual core::line2di getLine2di() { return core::line2di(); }
virtual core::line3df getLine3d() { return core::line3df(); }
virtual core::line3di getLine3di() { return core::line3di(); }
virtual core::dimension2du getDimension2d() { return core::dimension2du(); }
virtual core::aabbox3d<f32> getBBox() { return core::aabbox3d<f32>(); }
virtual core::plane3df getPlane() { return core::plane3df(); }
virtual video::ITexture* getTexture() { return 0; }
virtual const char* getEnum() { return 0; }
virtual void* getUserPointer() { return 0; }
virtual void setInt(s32 intValue) {};
virtual void setFloat(f32 floatValue) {};
virtual void setString(const char* text) {};
virtual void setString(const wchar_t* text){ setString(core::stringc(text).c_str()); };
virtual void setArray( core::array<core::stringw> arr ) {};
virtual void setColor(video::SColorf color) {};
virtual void setColor(video::SColor color) {};
virtual void setBool(bool boolValue) {};
virtual void setBinary(void* data, s32 maxLenght) {};
virtual void setVector(core::vector3df v) {};
virtual void setPosition(core::position2di v) {};
virtual void setRect(core::rect<s32> v) {};
virtual void setQuaternion(core::quaternion v) {};
virtual void setMatrix(core::matrix4 v) {};
virtual void setTriangle(core::triangle3df v) {};
virtual void setVector2d(core::vector2df v) {};
virtual void setVector2d(core::vector2di v) {};
virtual void setLine2d(core::line2df v) {};
virtual void setLine2d(core::line2di v) {};
virtual void setLine3d(core::line3df v) {};
virtual void setLine3d(core::line3di v) {};
virtual void setDimension2d(core::dimension2du v) {};
virtual void setBBox(core::aabbox3d<f32> v) {};
virtual void setPlane(core::plane3df v) {};
virtual void setUserPointer(void* v) {};
virtual void setEnum(const char* enumValue, const char* const* enumerationLiterals) {};
virtual void setTexture(video::ITexture*) {};
core::stringc Name;
virtual E_ATTRIBUTE_TYPE getType() const = 0;
virtual const wchar_t* getTypeString() const = 0;
};
} // end namespace io
} // end namespace irr
#endif
...@@ -436,6 +436,7 @@ ...@@ -436,6 +436,7 @@
<Unit filename="../../include/IAnimatedMeshSceneNode.h" /> <Unit filename="../../include/IAnimatedMeshSceneNode.h" />
<Unit filename="../../include/IAttributeExchangingObject.h" /> <Unit filename="../../include/IAttributeExchangingObject.h" />
<Unit filename="../../include/IAttributes.h" /> <Unit filename="../../include/IAttributes.h" />
<Unit filename="../../include/EAttributes.h" />
<Unit filename="../../include/IBillboardSceneNode.h" /> <Unit filename="../../include/IBillboardSceneNode.h" />
<Unit filename="../../include/IBoneSceneNode.h" /> <Unit filename="../../include/IBoneSceneNode.h" />
<Unit filename="../../include/ICameraSceneNode.h" /> <Unit filename="../../include/ICameraSceneNode.h" />
...@@ -569,6 +570,7 @@ ...@@ -569,6 +570,7 @@
<Unit filename="CAttributeImpl.h" /> <Unit filename="CAttributeImpl.h" />
<Unit filename="CAttributes.cpp" /> <Unit filename="CAttributes.cpp" />
<Unit filename="CAttributes.h" /> <Unit filename="CAttributes.h" />
<Unit filename="IAttribute.h" />
<Unit filename="CB3DMeshFileLoader.cpp" /> <Unit filename="CB3DMeshFileLoader.cpp" />
<Unit filename="CB3DMeshFileLoader.h" /> <Unit filename="CB3DMeshFileLoader.h" />
<Unit filename="CBSPMeshFileLoader.cpp" /> <Unit filename="CBSPMeshFileLoader.cpp" />
......
...@@ -9,7 +9,7 @@ CppCompiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -D_MBCS -D_USRDLL -DIR ...@@ -9,7 +9,7 @@ CppCompiler=-D__GNUWIN32__ -W -DWIN32 -DNDEBUG -D_WINDOWS -D_MBCS -D_USRDLL -DIR
Includes=..\..\include;zlib Includes=..\..\include;zlib
Linker=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lwinmm -lopengl32_@@_ Linker=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lwinmm -lopengl32_@@_
Libs= Libs=
UnitCount=627 UnitCount=629
Folders=doc,include,include/core,include/gui,include/io,include/scene,include/video,Irrlicht,Irrlicht/extern,Irrlicht/extern/jpeglib,Irrlicht/extern/libpng,Irrlicht/extern/zlib,Irrlicht/gui,Irrlicht/io,Irrlicht/io/archive,Irrlicht/io/attributes,Irrlicht/io/file,Irrlicht/io/xml,Irrlicht/irr,Irrlicht/irr/IrrlichtDevice,Irrlicht/scene,Irrlicht/scene/animators,Irrlicht/scene/collision,Irrlicht/scene/mesh,Irrlicht/scene/mesh/loaders,Irrlicht/scene/mesh/writers,Irrlicht/scene/nodes,Irrlicht/scene/nodes/particles,Irrlicht/video,"Irrlicht/video/Burning Video",Irrlicht/video/DirectX8,Irrlicht/video/DirectX9,Irrlicht/video/Null,Irrlicht/video/Null/Loader,Irrlicht/video/Null/Writer,Irrlicht/video/OpenGL,Irrlicht/video/Software Folders=doc,include,include/core,include/gui,include/io,include/scene,include/video,Irrlicht,Irrlicht/extern,Irrlicht/extern/jpeglib,Irrlicht/extern/libpng,Irrlicht/extern/zlib,Irrlicht/gui,Irrlicht/io,Irrlicht/io/archive,Irrlicht/io/attributes,Irrlicht/io/file,Irrlicht/io/xml,Irrlicht/irr,Irrlicht/irr/IrrlichtDevice,Irrlicht/scene,Irrlicht/scene/animators,Irrlicht/scene/collision,Irrlicht/scene/mesh,Irrlicht/scene/mesh/loaders,Irrlicht/scene/mesh/writers,Irrlicht/scene/nodes,Irrlicht/scene/nodes/particles,Irrlicht/video,"Irrlicht/video/Burning Video",Irrlicht/video/DirectX8,Irrlicht/video/DirectX9,Irrlicht/video/Null,Irrlicht/video/Null/Loader,Irrlicht/video/Null/Writer,Irrlicht/video/OpenGL,Irrlicht/video/Software
ObjFiles= ObjFiles=
PrivateResource= PrivateResource=
...@@ -6318,3 +6318,22 @@ Priority=1000 ...@@ -6318,3 +6318,22 @@ Priority=1000
OverrideBuildCmd=0 OverrideBuildCmd=0
BuildCmd= BuildCmd=
[Unit628]
FileName=..\..\include\EAttributes.h
CompileCpp=1
Folder=include/io
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
[Unit629]
FileName=IAttribute.h
CompileCpp=1
Folder=Irrlicht/io/attributes
Compile=1
Link=1
Priority=1000
OverrideBuildCmd=0
BuildCmd=
...@@ -563,6 +563,9 @@ ...@@ -563,6 +563,9 @@
<File <File
RelativePath=".\..\..\include\IAttributes.h"> RelativePath=".\..\..\include\IAttributes.h">
</File> </File>
<File
RelativePath=".\..\..\include\EAttributes.h">
</File>
<File <File
RelativePath=".\..\..\include\IFileList.h"> RelativePath=".\..\..\include\IFileList.h">
</File> </File>
...@@ -1942,6 +1945,9 @@ ...@@ -1942,6 +1945,9 @@
<File <File
RelativePath=".\CAttributes.h"> RelativePath=".\CAttributes.h">
</File> </File>
<File
RelativePath=".\IAttribute.h">
</File>
<File <File
RelativePath=".\CFileList.cpp"> RelativePath=".\CFileList.cpp">
</File> </File>
......
...@@ -793,6 +793,10 @@ ...@@ -793,6 +793,10 @@
RelativePath=".\..\..\include\IAttributes.h" RelativePath=".\..\..\include\IAttributes.h"
> >
</File> </File>
<File
RelativePath=".\..\..\include\EAttributes.h"
>
</File>
<File <File
RelativePath="..\..\include\IFileArchive.h" RelativePath="..\..\include\IFileArchive.h"
> >
...@@ -2710,6 +2714,10 @@ ...@@ -2710,6 +2714,10 @@
RelativePath="CAttributes.h" RelativePath="CAttributes.h"
> >
</File> </File>
<File
RelativePath="IAttribute.h"
>
</File>
<File <File
RelativePath="CFileList.cpp" RelativePath="CFileList.cpp"
> >
......
...@@ -891,6 +891,10 @@ ...@@ -891,6 +891,10 @@
RelativePath="..\..\include\IAttributes.h" RelativePath="..\..\include\IAttributes.h"
> >
</File> </File>
<File
RelativePath="..\..\include\EAttributes.h"
>
</File>
<File <File
RelativePath="..\..\include\IFileList.h" RelativePath="..\..\include\IFileList.h"
> >
...@@ -3163,6 +3167,10 @@ ...@@ -3163,6 +3167,10 @@
RelativePath="CAttributes.h" RelativePath="CAttributes.h"
> >
</File> </File>
<File
RelativePath="IAttribute.h"
>
</File>
<File <File
RelativePath="CFileList.cpp" RelativePath="CFileList.cpp"
> >
......
...@@ -528,6 +528,10 @@ ...@@ -528,6 +528,10 @@
RelativePath="..\..\include\IAttributes.h" RelativePath="..\..\include\IAttributes.h"
> >
</File> </File>
<File
RelativePath="..\..\include\EAttributes.h"
>
</File>
<File <File
RelativePath="..\..\include\IFileList.h" RelativePath="..\..\include\IFileList.h"
> >
...@@ -2345,6 +2349,10 @@ ...@@ -2345,6 +2349,10 @@
RelativePath="CAttributes.h" RelativePath="CAttributes.h"
> >
</File> </File>
<File
RelativePath="IAttribute.h"
>
</File>
<File <File
RelativePath="CFileList.cpp" RelativePath="CFileList.cpp"
> >
......
...@@ -279,6 +279,9 @@ ...@@ -279,6 +279,9 @@
<File <File
RelativePath="..\..\include\IAttributes.h"> RelativePath="..\..\include\IAttributes.h">
</File> </File>
<File
RelativePath="..\..\include\EAttributes.h">
</File>
<File <File
RelativePath="..\..\include\IBillboardSceneNode.h"> RelativePath="..\..\include\IBillboardSceneNode.h">
</File> </File>
...@@ -876,6 +879,9 @@ ...@@ -876,6 +879,9 @@
<File <File
RelativePath=".\CAttributes.h"> RelativePath=".\CAttributes.h">
</File> </File>
<File
RelativePath=".\IAttribute.h">
</File>
<File <File
RelativePath=".\CColorConverter.cpp"> RelativePath=".\CColorConverter.cpp">
</File> </File>
......
Test suite pass at GMT Tue Dec 1 18:25:07 2009 Test suite pass at GMT Wed Dec 2 15:59:13 2009
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment