True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

DescriptorItemDescriptor.h

00001 //---------------------------------------------------------------------------------
00002 // File Name: DescriptorItemDescriptor.h
00003 // Description:
00004 //
00005 // Copyright (C) 2004 True Axis Pty Ltd, Australia. 
00006 // All Rights Reserved.
00007 //
00008 // History:
00009 //      Created File.
00010 //---------------------------------------------------------------------------------
00011 
00012 #ifndef TA_DESCRIPTORITEMDESCRIPTOR_H
00013 #define TA_DESCRIPTORITEMDESCRIPTOR_H
00014 
00015 #ifndef TA_DESCRIPTORITEM_H
00016 #include "DescriptorItem.h"
00017 #endif // TA_DESCRIPTORITEM_H
00018 
00019 #ifndef TA_DESCRIPTOR_H
00020 #include "Descriptor.h"
00021 #endif // TA_DESCRIPTOR_H
00022 
00023 namespace TA
00024 {
00025 
00026 class TACOMMON_CLASS DescriptorItemDescriptor : public DescriptorItem
00027 {
00028 public:
00029     enum { INVALID_DATA_OFFSET = 0xFFFFFFFF };
00030 
00031     DescriptorItemDescriptor() : DescriptorItem() { m_nOffset = INVALID_DATA_OFFSET; }
00032     virtual ~DescriptorItemDescriptor() { Finalise(); }
00033 
00034     void Initialise(const Char* szName, Descriptor* pDescriptor, Descriptor& itemDescriptor)
00035     {
00036         m_nOffset = (u32)&itemDescriptor - (u32)pDescriptor;
00037         DescriptorItem::Initialise(szName, "");
00038     }
00039     void Initialise()
00040     {
00041         m_nOffset = 0;
00042         DescriptorItem::Initialise("", "");
00043     }
00044 
00045     void Finalise()
00046     {
00047         m_nOffset = INVALID_DATA_OFFSET;
00048         DescriptorItem::Finalise();
00049     }
00050 
00051     Descriptor& GetDescriptor(Descriptor* pDescriptor) { return GetDesc(pDescriptor); }
00052     static DescriptorItemDescriptor& TAC_CALL GetFromDescItem(DescriptorItem* pItem) 
00053     {
00054         TA_ASSERT(pItem->GetTypeID() == GetStaticTypeID());
00055         return *(DescriptorItemDescriptor*)pItem;
00056     }
00057 
00058     virtual String GetValueAsString(Descriptor* pDescriptor) const { return ""; }
00059     virtual String GetDisplayString(Descriptor* pDescriptor) const { return ""; } 
00060     virtual void SetValueFromString(const char* szString, Descriptor* pDescriptor) {}
00061     virtual void SetToDefaultValue(Descriptor* pDescriptor) {}
00062 
00063     virtual u32 GetTypeID() const { return s_nClassID; }
00064     static u32 GetStaticTypeID() { return s_nClassID; }
00065 
00066 private:
00067 
00068     static u32 s_nClassID;
00069     u32 m_nOffset;
00070     Descriptor& GetDesc(Descriptor* pDescriptor) 
00071     { 
00072         TA_ASSERT(pDescriptor);
00073         TA_ASSERT(m_nOffset != INVALID_DATA_OFFSET);
00074         return *(Descriptor*)((u32)pDescriptor + m_nOffset);
00075     }
00076 };
00077 
00078 };
00079 
00080 #endif // TA_DESCRIPTORITEMDESCRIPTOR_H


© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.