00001
00074 #ifndef INC_MIE_FEATURES_H
00075 #define INC_MIE_FEATURES_H
00076
00077 #ifndef INC_MI32_STDDEFNS_H
00078 #include <mi32/stddefns.h>
00079 #endif
00080
00081 #ifndef INC_MEMORY_H
00082 #include <memory.h>
00083 #define INC_MEMORY_H
00084 #endif
00085
00086 namespace MIE {
00087
00088 enum FEATURE {
00089 FEATURE_NONE = 0,
00090 FEATURE_NoMultiFile,
00091 FEATURE_NoMultiObject,
00092 FEATURE_SingleToMulti,
00093 FEATURE_MultiToSingle,
00094 FEATURE_NeedMultiSingle,
00095 FEATURE_SelectDirectory,
00096 FEATURE_SelectRDBMSSource,
00097 FEATURE_ProjIsOverride,
00098 FEATURE_NeedOptionsForm,
00099 FEATURE_NeedProj,
00100 FEATURE_NeedXYUnits,
00101 FEATURE_NeedZUnits,
00102 FEATURE_NeedLink,
00103 FEATURE_NeedMultiLink,
00104 FEATURE_NeedUserCRS,
00105 FEATURE_NeedImportGeorefOptions,
00106 FEATURE_NeedExportGeorefOptions,
00107 FEATURE_OverrideFileDialog,
00108 FEATURE_ParametersFirst,
00109 FEATURE_PromptOutputFilesOnly,
00110 FEATURE_LinkProjToXYUnits,
00111 FEATURE_NeedCoordNumDim,
00112 FEATURE_NeedCoordXYShift,
00113 FEATURE_NeedCoordZUnits,
00114 FEATURE_NeedVectorTopologyLevel,
00115 FEATURE_NeedRasterCompSeparate,
00116 FEATURE_NeedRasterNumBands,
00117 FEATURE_NeedRasterLinCol,
00118 FEATURE_NeedRasterDataType,
00119 FEATURE_NeedRasterCellSize,
00120 FEATURE_NeedRasterNullValue,
00121 FEATURE_NeedImpRastByteOrder,
00122 FEATURE_NeedExpRastByteOrder,
00123 FEATURE_NeedRasterFlipVert,
00124 FEATURE_NeedRasterFlipHorz,
00125 FEATURE_NeedRasterInvertBW,
00126 FEATURE_NeedRasterLinColRange,
00127 FEATURE_NeedRasterCompressOptions,
00128 FEATURE_NeedRasterSurfaceProperties,
00129 FEATURE_UseRangeWindow,
00130 FEATURE_NoChgNumBands,
00131 FEATURE_NoChgLinCol,
00132 FEATURE_NoChgDataType,
00133 FEATURE_NoChgCellSize,
00134 FEATURE_NoChgNullValue,
00135 FEATURE_NoChgByteOrder,
00136 FEATURE_LinkProjToCellSize,
00137 FEATURE_NeedTopologyLevel,
00138 FEATURE_NoOptimize,
00139 FEATURE_NoElementIDTable,
00140 FEATURE_NoStdAttrib,
00141 FEATURE_IsHDF,
00142 FEATURE_NeedVectorAssignLabels,
00143 FEATURE_NeedCharEncoding,
00144 FEATURE_TempFileIfCompressing,
00145 FEATURE_IsLegacy,
00146 FEATURE_UsesLegacyImport,
00147 FEATURE_UsesLegacyExport,
00148 FEATURE_NeedHyperCube,
00149 FEATURE_NoSMLClass,
00150 FEATURE_NoNullMask,
00151 FEATURE_SupportsFloat,
00152 FEATURE_NeedExtractOptions,
00153 FEATURE_HideExtractOptions,
00154 FEATURE_NoCRSOverrideToggle,
00155 FEATURE_NeedRasterContrast,
00156 FEATURE_CanExportMultiGeom,
00157 FEATURE_CanExportToExisting,
00158 FEATURE_NeedTableLink,
00159 FEATURE_CannotExportToNew,
00160 FEATURE_HasJobSupport,
00161 FEATURE_NoTestExtn,
00162 FEATURE_LAST
00163 };
00164
00166 class FEATURESET {
00167 public:
00168
00170 FEATURESET (
00171 ) { Clear(); }
00172
00175 FEATURESET (
00176 FEATURE objtype
00177 ) { Clear(); operator+=(objtype); }
00178
00180 FEATURESET (
00181 FEATURE objtype1,
00182 FEATURE objtype2
00183 ) { Clear(); operator+=(objtype1); operator+=(objtype2); }
00184
00186 FEATURESET (
00187 FEATURE objtype1,
00188 FEATURE objtype2,
00189 FEATURE objtype3
00190 ) { Clear(); operator+=(objtype1); operator+=(objtype2); operator+=(objtype3); }
00191
00193 FEATURESET& operator+= (
00194 FEATURE rhs
00195 ) { m_bits[rhs/32] |= 1 << (rhs % 32); return (*this); }
00196
00198 FEATURESET& operator+= (
00199 const MIE::FEATURESET& rhs
00200 ) { for (INT32 i = 0;(i < (FEATURE_LAST+31)/32);++i) m_bits[i] |= rhs.m_bits[i]; return (*this); }
00201
00203 FEATURESET& operator-= (
00204 FEATURE rhs
00205 ) { m_bits[rhs/32] &= ~(1 << (rhs % 32)); return (*this); }
00206
00208 void Clear (
00209 ) { memset(m_bits,0,sizeof(m_bits)); return; }
00210
00212 bool Contains (
00213 FEATURE objtype
00214 ) const { return ((m_bits[objtype/32] & (1 << (objtype % 32))) != 0); }
00215
00216 private:
00217 #ifndef GENERATING_DOXYGEN_OUTPUT
00218 UINT32 m_bits[(FEATURE_LAST+31)/32];
00219 #endif // GENERATING_DOXYGEN_OUTPUT
00220 };
00221
00222
00223 }
00224
00225
00226 #endif