00001
00002
00003
00004
00005
00006
00007
00008
00009
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.