00001
00015 #ifndef INC_RVC_DBTABLEPROPERTIES_H
00016 #define INC_RVC_DBTABLEPROPERTIES_H
00017
00018 #ifndef INC_RVC_DBTABLE_H
00019 #include <rvc/dbtable.h>
00020 #endif
00021
00022 namespace RVC {
00023
00025 class DBTABLE_PROPERTIES : public RVC::DBTABLE {
00026 public:
00027
00029 enum ID {
00030 ID_Invalid = 0,
00031
00032 ID_Numeric = 0x00000000,
00033 ID_MinX = ID_Numeric | 1,
00034 ID_MaxX = ID_Numeric | 2,
00035 ID_MinY = ID_Numeric | 3,
00036 ID_MaxY = ID_Numeric | 4,
00037 ID_MinZ = ID_Numeric | 5,
00038 ID_MaxZ = ID_Numeric | 6,
00039 ID_PointDensity = ID_Numeric | 7,
00040
00041 ID_String = 0x10000000,
00042
00043 ID_MASK_Type = 0xF0000000
00044 };
00045
00047 class MAKEPARM : public RVC::DBTABLE::MAKEPARMS {
00048 public:
00050 MAKEPARM ();
00051 };
00052
00054 class RECORD : public RVC::DBTABLE::RECORD {
00055 public:
00056
00058 ID GetID () const
00059 { return (static_cast<ID>(*static_cast<const UINT32*>(GetFieldPtr(FIELDNUM_ID)))); }
00060
00062 double GetNumeric () const
00063 { return (*static_cast<const double*>(GetFieldPtr(FIELDNUM_Numeric))); }
00064
00066 void GetString (
00067 MISTRING& str
00068 ) const { GetValue(FIELDNUM_String,str); }
00069
00071 void SetNumeric (
00072 ID id,
00073 double value
00074 ) {
00075 *static_cast<INT32*>(GetFieldPtr(FIELDNUM_ID)) = id;
00076 SetValue(FIELDNUM_Numeric,value);
00077 }
00078
00080 void SetString (
00081 ID id,
00082 const MISTRING& str
00083 ) {
00084 *static_cast<INT32*>(GetFieldPtr(FIELDNUM_ID)) = id;
00085 SetValue(FIELDNUM_String,str);
00086 }
00087 };
00088
00090 DBTABLE_PROPERTIES ();
00091
00093 DBTABLE_PROPERTIES (
00094 const RVC::DBTABLE_PROPERTIES& rhs
00095 );
00096
00098 virtual ~DBTABLE_PROPERTIES ();
00099
00101 RVC::DBTABLE_PROPERTIES& operator= (
00102 const RVC::DBTABLE_PROPERTIES& rhs
00103 );
00104
00107 int ReadValue (
00108 ID id,
00109 double& value
00110 ) const;
00111
00114 int ReadValue (
00115 ID id,
00116 MISTRING& value
00117 ) const;
00118
00120 ERRVALUE WriteValue (
00121 ID id,
00122 double& value
00123 );
00124
00126 ERRVALUE WriteValue (
00127 ID id,
00128 const MISTRING& value
00129 );
00130
00131 private:
00132 #ifndef GENERATING_DOXYGEN_OUTPUT
00133
00134 enum FIELDNUM {
00135 FIELDNUM_ID = 0,
00136 FIELDNUM_Numeric = 1,
00137 FIELDNUM_String = 2,
00138 FIELDNUM_COUNT
00139 };
00140
00141 mutable RECORD m_RecordTemp;
00142 mutable SIMPLE_ARRAY<INT32> m_RecNums;
00143
00144 int ReadRecord (ID id) const;
00145 ERRVALUE WriteRecord (ID id);
00146
00147 virtual bool v_IsValidTable (const DBTABLE& table);
00148
00149 #endif // GENERATING_DOXYGEN_OUTPUT
00150
00151 };
00152
00153
00154 }
00155
00156 #endif // INC_RVC_DBTABLEPROPERTIES_H