00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __DOTXSITEMPLATE_H
00016 #define __DOTXSITEMPLATE_H
00017
00018
00019
00020
00021 #include "SIBCArray.h"
00022 #include "SIBCNode.h"
00023 #include "SIBCString.h"
00024 #include "dotXSIParams.h"
00025
00026
00027
00028
00029 class CdotXSITemplate;
00030 class CXSIParser;
00031
00032
00033 typedef SI_Error ( *DOTXSIREADCALLBACK ) ( CXSIParser *in_pParser, CdotXSITemplate *i_pCurrentTemplate, CdotXSITemplate *i_pNewTemplate );
00034 typedef SI_Error ( *DOTXSIWRITECALLBACK ) ( CXSIParser *in_pParser, CdotXSITemplate *i_pCurrentTemplate, CdotXSITemplate *i_pNewTemplate, SI_Int i_nLevel );
00035
00036
00037
00038
00039
00041
00044 class XSIEXPORT CdotXSITemplates
00045 {
00046 public:
00047
00051 CdotXSITemplates();
00052
00057 CdotXSITemplates( SI_Bool in_bDeleteOnExit);
00058
00061 virtual ~CdotXSITemplates();
00062
00063
00067 SI_Int GetCount();
00068
00072 SI_Int GetTotalCount();
00073
00078 SI_Void Add( CdotXSITemplate *i_Template, SI_Int i_nPosition = -1 );
00079
00089 SI_Void Item( SI_Int i_nPosition, CdotXSITemplate **o_Template );
00090
00098 CdotXSITemplate *Item( SI_Int i_nPosition );
00099
00105 SI_Void Remove( SI_Int i_nPosition );
00106
00110 SI_Void Clear();
00111
00118 SI_Bool IsSupported( CSIBCString *i_sName, SI_Int &o_nInd );
00119
00129 SI_Bool Find( CSIBCString *i_sTemplateName, CSIBCString *i_sInstanceName, CdotXSITemplate **o_pTemplate );
00130
00137 CdotXSITemplate * FindByType( CSIBCString in_name );
00138
00145 CdotXSITemplates *ChildrenOfType( CSIBCString in_type );
00146
00147 CdotXSITemplate** ArrayPtr() { return m_Templates.ArrayPtr();} ;
00148
00149
00152 SI_Void MoveChild ( int in_iTemplate, int in_iNewPos );
00153
00154 private:
00155 SI_Int m_nCount;
00156 SI_Bool m_bDeleteMembers;
00157 CSIBCArray< CdotXSITemplate * > m_Templates;
00158 };
00159
00160
00161
00162
00163
00164
00166
00180 class XSIEXPORT CdotXSITemplate : public CSIBCNode
00181 {
00182 public:
00183
00184 enum eCOLLADATemplateType
00185 {
00186 NORMAL = 0,
00187 LIBRARY,
00188 NODE,
00189 URL
00190 };
00191
00197 CdotXSITemplate();
00198
00204 CdotXSITemplate( CSIBCString *i_sName );
00205
00220 CdotXSITemplate( CSIBCString i_sName,
00221 DOTXSIREADCALLBACK i_ReadCallback,
00222 DOTXSIWRITECALLBACK i_WriteCallback,
00223 SI_Int i_lVersionMajor, SI_Int i_lVersionMinor,
00224 SI_Int i_nNbParams,
00225 CdotXSIParam *i_Param1, ... );
00226
00242 CdotXSITemplate( CSIBCString i_sName,
00243 DOTXSIREADCALLBACK i_ReadCallback,
00244 DOTXSIWRITECALLBACK i_WriteCallback,
00245 SI_Int i_nNbParams,
00246 CdotXSIParam *i_Param1, ... );
00247
00248
00251 virtual ~CdotXSITemplate();
00252
00257 virtual SI_Void SetInstanceName( CSIBCString i_sInstanceName );
00258
00262 CSIBCString &InstanceName() { return m_sInstanceName; }
00263
00269 SI_Void SetUserDataType( CSIBCString i_sUserDataType );
00270
00274 CSIBCString &UserDataType() { return m_sUserDataType; }
00275
00279 CdotXSITemplates &Children() { return m_ChildrenCol; }
00280
00285 SI_Void SetParent( CdotXSITemplate *i_Parent );
00286
00291 SI_Void Reparent( CdotXSITemplate *i_Parent );
00292
00296 CdotXSITemplate *Parent() { return m_Parent; }
00297
00306 SI_Void SetSystemFlags( SI_Int i_nSystemFlags );
00307
00308
00316 SI_Void GetSystemFlags( SI_Int *o_nSystemFlags );
00317
00326 SI_Void SetUserFlags( SI_Int i_nUserFlags );
00327
00334 SI_Void GetUserFlags( SI_Int *o_nUserFlags );
00335
00340 CdotXSIParams &Params() { return m_ParamsCol; }
00341
00347 virtual SI_Void InitializeFromName( SI_Char *i_pChar, CXSIParser *in_pParser );
00348
00356 CdotXSITemplates *ChildrenOfType( CSIBCString in_type );
00357
00365 CdotXSITemplate *ChildrenOfTypeNamed( CSIBCString in_type, CSIBCString in_name );
00366
00367 virtual CdotXSITemplate *Clone();
00368
00372 eCOLLADATemplateType GetTemplateType() { return m_eType; };
00373
00376 SI_Void SetTemplateType (eCOLLADATemplateType in_etype) { m_eType = in_etype; };
00377
00378
00379 private:
00380 CSIBCString m_sInstanceName;
00381 CSIBCString m_sUserDataType;
00382 CdotXSITemplates m_ChildrenCol;
00383 CdotXSITemplate *m_Parent;
00384 SI_Int m_nSystemFlags;
00385 SI_Int m_nUserFlags;
00386 CdotXSIParams m_ParamsCol;
00387 SI_Int m_nVersionMajor, m_nVersionMinor;
00388 eCOLLADATemplateType m_eType;
00389
00390 public:
00392 DOTXSIREADCALLBACK m_ReadCallback;
00393
00395 DOTXSIWRITECALLBACK m_WriteCallback;
00396
00398 DOTXSIWRITECALLBACK m_WritePostCallback;
00399
00400 };
00401
00402
00403
00404
00405
00413 XSIEXPORT CdotXSITemplate* CreatedotXSITemplate();
00414
00418 XSIEXPORT CdotXSITemplates* CreatedotXSITemplates();
00419
00420
00421
00422
00423
00424
00425
00426 typedef CdotXSITemplate* (*TemplateCreation)();
00427
00428 #endif // __DOTXSITEMPLATE_H