00001
00131 #ifndef INC_RVC_SHAPE_H
00132 #define INC_RVC_SHAPE_H
00133
00134 #ifndef INC_RVC_GEOMETRC_H
00135 #include <rvc/geometrc.h>
00136 #endif
00137
00138 #ifndef INC_RVC_DBTABLE_H
00139 #include <rvc/dbtable.h>
00140 #endif
00141
00142 namespace RVC {
00143
00144 #ifndef GENERATING_DOXYGEN_OUTPUT
00145 class SHAPEHANDLE;
00146 #endif // GENERATING_DOXYGEN_OUTPUT
00147
00155 class SHAPE : public GEOMETRIC {
00156 public:
00157
00158 #ifndef GENERATING_DOXYGEN_OUTPUT
00159 class ELEMITERATOR;
00160 class LINKPARM_ARCSHAPE;
00161 class LINKPARM_LAS;
00162 class LINKPARM_ORACLE;
00163 class LINKPARM_ORACLE_OO4O;
00164 class LINKPARM_GEODATABASE;
00165 class LINKPARM_POSTGIS;
00166 class LINKPARM_MYSQL;
00167 class LINKPARMS;
00168 class MAKEPARMS;
00169 class MAKEPARM_ARCSHAPE;
00170 class MAKEPARM_ORACLE;
00171
00172
00173
00174 #endif // GENERATING_DOXYGEN_OUTPUT
00175
00176
00177 enum ELEMENTTYPE {
00178 ELEMENTTYPE_Unknown = 0,
00179 ELEMENTTYPE_Point,
00180 ELEMENTTYPE_Line,
00181 ELEMENTTYPE_SubRegion,
00182 ELEMENTTYPE_MultiPoint,
00183 ELEMENTTYPE_MultiLine,
00184 ELEMENTTYPE_Region,
00185 ELEMENTTYPE_MaxTypes
00186 };
00187
00189 enum LINKTYPE {
00190 LINKTYPE_Internal = 0,
00191 LINKTYPE_Oracle,
00192 LINKTYPE_ArcShape,
00193 LINKTYPE_Geodatabase,
00194 LINKTYPE_PostGIS,
00195 LINKTYPE_MySQL,
00196 LINKTYPE_OracleOCCI,
00197 LINKTYPE_LAS
00198 };
00199
00202 class ELEMENT {
00203 public:
00204
00206 ELEMENT (
00207 );
00208
00210 ELEMENT (
00211 const ELEMENT& rhs
00212 );
00213
00215 ~ELEMENT (
00216 );
00217
00219 ELEMENT& operator= (
00220 const ELEMENT& rhs
00221 );
00222
00224 void Clear (
00225 );
00226
00228 void ComputeExtents (
00229 DRECT3D& Extents
00230 ) const;
00231
00233 void ConvertForward (
00234 const TRANS2D_AFFINE& taf
00235 );
00236
00238 ERRVALUE ConvertForward (
00239 const TRANS2D_MAPGEN& tmg
00240 );
00241
00243 void ConvertInverse (
00244 const TRANS2D_AFFINE& taf
00245 );
00246
00248 ERRVALUE ConvertInverse (
00249 const TRANS2D_MAPGEN& tmg
00250 );
00251
00254 DIMENSION GetDimension (
00255 ) const { return (m_PolyLine.GetDimension()); }
00256
00259 ELEMTYPE GetElemType (
00260 ) const { return (m_ElemType); }
00261
00264 const DRECT2D* GetExtentsIfKnown (
00265 ) const { return (m_PolyLine.GetExtentsIfKnown()); }
00266
00269 void GetLines (
00270 POLYLINELIST& PolyLineList
00271 ) const;
00272
00276 INT32 GetNumComponents (
00277 ) const;
00278
00281 const POLYLINE& GetPoints (
00282 ) const { return (m_PolyLine); }
00283
00286 void GetPolygons (
00287 REGION2D& region
00288 ) const;
00289
00293 const DBTABLE::RECORD& GetRecord (
00294 ) const { return (m_Record); }
00295
00299 DBTABLE::RECORD& GetRecord (
00300 ) { return (m_Record); }
00301
00304 bool IsValid (
00305 ) const;
00306
00308 void SetPoints (
00309 const POLYLINE& PointList
00310 );
00311
00313 void SetLine (
00314 const POLYLINE& PolyLine
00315 );
00316
00318 void SetLines (
00319 const POLYLINELIST& PolyLineList
00320 );
00321
00323 void SetPolygon (
00324 const POLYLINE& Polygon
00325 );
00326
00328 void SetPolygons (
00329 const REGION2D& region
00330 );
00331
00334 void SetRecord (
00335 DBTABLE::RECORD& Record
00336 ) { m_Record = Record; }
00337
00338 private:
00339 #ifndef GENERATING_DOXYGEN_OUTPUT
00340 ELEMTYPE m_ElemType;
00341 POLYLINE m_PolyLine;
00342 SIMPLE_ARRAY<INT32> m_Index;
00343 DBTABLE::RECORD m_Record;
00344
00345 friend class SHAPE;
00346 #endif // GENERATING_DOXYGEN_OUTPUT
00347 };
00348
00349
00351 SHAPE (
00352 );
00353
00355 SHAPE (
00356 const RVC::SHAPE& rhs
00357 );
00358
00360 virtual ~SHAPE (
00361 );
00362
00364 RVC::SHAPE& operator= (
00365 const RVC::SHAPE& rhs
00366 );
00367
00371 INT32 Add (
00372 const ELEMENT& Element
00373 );
00374
00376 ERRVALUE AssignTable (
00377 ELEMENT& Element
00378 );
00379
00382 ERRVALUE Delete (
00383 INT32 ElemNum
00384 );
00385
00387 ELEMITERATOR ElementBegin (
00388 ) const;
00389
00391 ELEMITERATOR ElementEnd (
00392 ) const;
00393
00396 ERRVALUE GenerateRegionSubobject (
00397 );
00398
00400 ERRVALUE GetConnectionString (
00401 MISTRING& ConnectString
00402 );
00403
00405 ELEMENTTYPE GetElementType (
00406 ) const;
00407
00409 LINKTYPE GetLinkType (
00410 ) const;
00411
00413 ERRVALUE Link (
00414 RVC::OBJECT& parent,
00415 const DESCRIPTOR& Descriptor,
00416 const LINKPARMS& LinkParms,
00417 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00418 );
00419
00421 ERRVALUE Link (
00422 const RVC::OBJITEM& ObjItem,
00423 const LINKPARMS& LinkParms,
00424 #ifdef RVC_CREDENTIALS_MANDATORY
00425 const char* Source,
00426 const CREDENTIALS* Credentials
00427 #else
00428 const char* Source = 0,
00429 const CREDENTIALS* Credentials = 0
00430 #endif
00431 );
00432
00434 ERRVALUE Make (
00435 const RVC::OBJECT& parent,
00436 const DESCRIPTOR& Descriptor,
00437 const MAKEPARMS& MakeParms,
00438 const CREDENTIALS* Credentials RVC_DEFAULT_CREDENTIALS
00439 );
00440
00442 ERRVALUE Make (
00443 RVC::OBJITEM& ObjItem,
00444 const MAKEPARMS& MakeParms,
00445 #ifdef RVC_CREDENTIALS_MANDATORY
00446 const char* Source,
00447 const CREDENTIALS* Credentials
00448 #else
00449 const char* Source = 0,
00450 const CREDENTIALS* Credentials = 0
00451 #endif
00452 );
00453
00455 ERRVALUE Read (
00456 INT32 ElemNum,
00457 ELEMENT& Element
00458 ) const;
00459
00462 ERRVALUE Refresh (
00463 );
00464
00467 ERRVALUE Write (
00468 INT32 ElemNum,
00469 const ELEMENT& Element
00470 );
00471
00472 private:
00473 #ifndef GENERATING_DOXYGEN_OUTPUT
00474
00476 virtual ERRVALUE v_CloseObject ();
00477 virtual OBJTYPE v_GetDftObjectType () const;
00478 virtual bool v_IsObjectOpen () const;
00479 virtual ERRVALUE v_OpenObject (OPENMODE OpenMode, MDLGPARENT parent, const CREDENTIALS* Credentials);
00480
00482 virtual void v_GetExtents (DRECT3D &extents) const;
00483 virtual void v_GetScale (double& xscale, double& yscale) const;
00484 virtual double v_GetZOffset () const;
00485 virtual double v_GetZScale () const;
00486 virtual bool v_HasCapability (int Capability) const;
00487 virtual ERRVALUE v_ScanAutoLink ();
00488 virtual void v_SetScale (double xscale, double yscale);
00489 virtual void v_SetZOffset (double zoffset);
00490 virtual void v_SetZScale (double zscale);
00491
00493 virtual ERRVALUE v_ExtractTo (RVC::GEOMETRIC& DestObj, RVC::GEOMETRIC::ELEMTRANSLIST& TransList, const TRANS2D_MAPGEN& tmg, RVC::GEOMETRIC::EXTRACTFLAGS ExtractFlags) const;
00494 virtual INT32 v_FindClosestElementLow (ELEMTYPE ElemType, const DPOINT2D& SearchPt, GEOMETRIC::SEARCHFILTER* SearchFilter, double SearchDist, double* DistFromElem) const;
00495 virtual ERRVALUE v_GetElementExtents (ELEMTYPE ElemType, INT32 ElemNum, DRECT3D& Extents) const;
00496 virtual INT32 v_GetNextElementID (ELEMTYPE ElemType) const;
00497 virtual INT32 v_GetNumElements (ELEMTYPE ElemType) const;
00498 virtual POINTTYPE v_GetPointType () const;
00499 virtual INT32 v_GetPointSize () const;
00500 virtual QSEARCHTREE* v_GetSearchTree (ELEMTYPE ElemType) const;
00501 virtual double v_GetTotalLineLength () const;
00502 virtual bool v_IsElementDeleted (const RVC::ELEMENT& Element) const;
00503 virtual bool v_IsEmpty () const;
00504 virtual ERRVALUE v_SetExtents (const DRECT3D &extents);
00505 virtual ERRVALUE v_SetNextElementID (ELEMTYPE ElemType, INT32 NextElementID);
00506 virtual void v_SetSearchTree (ELEMTYPE ElemType, QSEARCHTREE* SearchTree) const;
00507 virtual ERRVALUE v_SetTotalLineLength (double length);
00508 virtual int v_SetupElemTransList (const RVC::GEOMETRIC::ELEMSELECTPARMS& SelectParms, RVC::GEOMETRIC::ELEMTRANSLIST& TransList, RVC::GEOMETRIC::ELEMSELECTFILTER* SelectFilter) const;
00509 virtual bool v_TestElementAgainstRegion (const RVC::ELEMENT& Element, const REGION2D& region, TESTCRITERIA TestMode) const;
00510 virtual ERRVALUE v_UpdateExtents (const DRECT3D &extents);
00511
00513 virtual ERRVALUE v_FindClosestElementsLow (const DPOINT2D& SearchPt, double SearchDist, SEARCHFILTER* SearchFilter, SIMPLE_ARRAY<RVC::ELEMENT>& ElementList, COMPONENT Component) const;
00514 virtual ERRVALUE v_FindElementDrawSet (ELEMTYPE ElemType, const DRECT2D& SearchExtents, SEARCHRESULT& SearchResult) const;
00515 virtual ERRVALUE v_FindElementSearchSet (ELEMTYPE ElemType, const DRECT2D& SearchExtents, SEARCHRESULT& SearchResult) const;
00516 virtual ERRVALUE v_FindElementSet (ELEMTYPE ElemType, const DRECT2D& SearchExtents, UNSIGNEDSET& ElemSet, bool BuildIndex) const;
00517 virtual ERRVALUE v_ReadElement (INT32 ElemNum, POLYLINELIST& LineList, DIMENSION dim) const;
00518 virtual ERRVALUE v_ReadElement (INT32 ElemNum, POLYLINE& PointList, DIMENSION dim) const;
00519 virtual ERRVALUE v_ReadElement (INT32 ElemNum, REGION2D& Region, DIMENSION dim) const;
00520 virtual ERRVALUE v_ReadNextLine (RVC::ELEMENT& Element, POLYLINELIST& LineList, DIMENSION dim) const;
00521 virtual ERRVALUE v_ReadNextPoint (RVC::ELEMENT& Element, POLYLINE& PointList, DIMENSION dim) const;
00522 virtual ERRVALUE v_ReadNextRegion (RVC::ELEMENT& Element, REGION2D& Region, DIMENSION dim) const;
00523 virtual ERRVALUE v_ReadRegion (const BITSET_UNOWNED& ElemSet, REGION2D& Region, DIMENSION dim, bool NoIslands) const;
00524
00525 ERRVALUE ExtractToCAD (RVC::GEOMETRIC& DestObj, RVC::GEOMETRIC::ELEMTRANSLIST& TransList, const TRANS2D_MAPGEN& tmg, RVC::GEOMETRIC::EXTRACTFLAGS ExtractFlags) const;
00526 ERRVALUE ExtractToRegion (RVC::GEOMETRIC& DestObj, RVC::GEOMETRIC::ELEMTRANSLIST& TransList, const TRANS2D_MAPGEN& tmg, RVC::GEOMETRIC::EXTRACTFLAGS ExtractFlags) const;
00527 ERRVALUE ExtractToShape (RVC::GEOMETRIC& DestObj, RVC::GEOMETRIC::ELEMTRANSLIST& TransList, const TRANS2D_MAPGEN& tmg, RVC::GEOMETRIC::EXTRACTFLAGS ExtractFlags) const;
00528 ERRVALUE ExtractToVector (RVC::GEOMETRIC& DestObj, RVC::GEOMETRIC::ELEMTRANSLIST& TransList, const TRANS2D_MAPGEN& tmg, RVC::GEOMETRIC::EXTRACTFLAGS ExtractFlags) const;
00529
00530 SHAPEHANDLE *m_ShapeHandle;
00531 mutable QSEARCHTREE *m_ShapeQTree;
00532 mutable ELEMENT m_WorkElement;
00533 mutable bool m_SetInstanceData;
00534 DBTABLE m_ShapeTable;
00535 mutable SIMPLE_ARRAY<UINT8> m_RecBuffer;
00536 #endif // GENERATING_DOXYGEN_OUTPUT
00537 };
00538
00539
00544 class SHAPE::ELEMITERATOR {
00545 public:
00546
00548 ELEMITERATOR (
00549 ) :
00550 m_ElemNum(-1),
00551 m_CurrentObj(0),
00552 m_Element(0)
00553 {}
00554
00556 ELEMITERATOR (
00557 const RVC::SHAPE* shape,
00558 INT32 ElemNum
00559 ) :
00560 m_ElemNum(ElemNum),
00561 m_CurrentObj(shape),
00562 m_Element(0)
00563 {}
00564
00566 ELEMITERATOR (
00567 const ELEMITERATOR& rhs
00568 );
00569
00571 ELEMITERATOR (
00572 const RVC::SHAPE* shape
00573 );
00574
00576 virtual ~ELEMITERATOR (
00577 );
00578
00580 ELEMITERATOR& operator= (
00581 const ELEMITERATOR& rhs
00582 );
00583
00585 const SHAPE::ELEMENT& operator* (
00586 ) const { return (*m_Element); }
00587
00589 const SHAPE::ELEMENT* operator-> (
00590 ) const { return (&**this); }
00591
00593 ELEMITERATOR& operator++ (
00594 );
00595
00597 ELEMITERATOR& operator-- (
00598 );
00599
00601 bool operator== (
00602 const ELEMITERATOR& rhs
00603 ) const { return (m_ElemNum == rhs.m_ElemNum && m_CurrentObj == rhs.m_CurrentObj); }
00604
00606 bool operator!= (
00607 const ELEMITERATOR& rhs
00608 ) const { return (!(*this == rhs)); }
00609
00612 INT32 GetElemNum (
00613 ) const { return (m_ElemNum); }
00614
00615 protected:
00616 INT32 m_ElemNum;
00617 const SHAPE *m_CurrentObj;
00618 SHAPE::ELEMENT* m_Element;
00619 };
00620
00621
00622
00623
00624
00627 class SHAPE::LINKPARMS {
00628 public:
00629
00631 virtual ~LINKPARMS (
00632 ) {}
00633
00635 CHAR_ENCODING GetEncoding (
00636 ) const {return (m_Encoding);}
00637
00640 SHAPE::LINKTYPE GetLinkType (
00641 ) const {return (m_LinkType);}
00642
00645 const MISTRING& GetLinkString (
00646 ) const {return (m_LinkString);}
00647
00652 bool GetStorePasswordInLinkObject (
00653 ) const { return (m_bStorePasswordInLinkObject); }
00654
00657 const MISTRING& GetTableName (
00658 ) const {return (m_LinkTable);}
00659
00660 protected:
00661
00662 LINKPARMS (
00663 const MISTRING& LinkString,
00664 SHAPE::LINKTYPE LinkType,
00665 CHAR_ENCODING Encoding,
00666 bool StorePasswordInLinkObject
00667 ) :
00668 m_LinkString(LinkString),
00669 m_LinkType(LinkType),
00670 m_Encoding(Encoding),
00671 m_bStorePasswordInLinkObject(StorePasswordInLinkObject)
00672 {}
00673
00674 void SetTableName (
00675 const MISTRING& TableName
00676 ) { m_LinkTable = TableName; }
00677
00678 private:
00679 #ifndef GENERATING_DOXYGEN_OUTPUT
00680 MISTRING m_LinkString;
00681 MISTRING m_LinkTable;
00682 SHAPE::LINKTYPE m_LinkType;
00683 CHAR_ENCODING m_Encoding;
00684 bool m_bStorePasswordInLinkObject;
00685
00686 friend class SHAPE;
00687 #endif // GENERATING_DOXYGEN_OUTPUT
00688 };
00689
00690
00692 class SHAPE::LINKPARM_ARCSHAPE : public RVC::SHAPE::LINKPARMS {
00693 public:
00694 LINKPARM_ARCSHAPE (
00695 const FILEPATH& filename,
00696 CHAR_ENCODING Encoding = CHAR_ENCODING_UTF8
00697 ) : LINKPARMS(filename.GetOSPath(), LINKTYPE_ArcShape, Encoding, false) {}
00698 };
00699
00700
00702 class SHAPE::LINKPARM_LAS : public RVC::SHAPE::LINKPARMS {
00703 public:
00704 LINKPARM_LAS (
00705 const FILEPATH& filename,
00706 CHAR_ENCODING Encoding = CHAR_ENCODING_ASCII
00707 ) : LINKPARMS(filename.GetOSPath(), LINKTYPE_LAS, Encoding, false) {}
00708 };
00709
00710
00712 class SHAPE::LINKPARM_ORACLE : public RVC::SHAPE::LINKPARMS {
00713 public:
00714 LINKPARM_ORACLE (
00715 const MISTRING& LinkString,
00716 const MISTRING& TableName,
00717 CHAR_ENCODING Encoding = CHAR_ENCODING_ASCII,
00718 bool StorePasswordInLinkObject = false
00719 ) :
00720 LINKPARMS(LinkString, LINKTYPE_OracleOCCI, Encoding, StorePasswordInLinkObject)
00721 {
00722 SetTableName(TableName);
00723 }
00724 };
00725
00727 class SHAPE::LINKPARM_ORACLE_OO4O : public RVC::SHAPE::LINKPARMS {
00728 public:
00729 LINKPARM_ORACLE_OO4O (
00730 const MISTRING& LinkString,
00731 const MISTRING& TableName,
00732 CHAR_ENCODING Encoding = CHAR_ENCODING_ASCII,
00733 bool StorePasswordInLinkObject = false
00734 ) :
00735 LINKPARMS(LinkString, LINKTYPE_Oracle, Encoding, StorePasswordInLinkObject)
00736 {
00737 SetTableName(TableName);
00738 }
00739 };
00740
00742 class SHAPE::LINKPARM_GEODATABASE : public RVC::SHAPE::LINKPARMS {
00743 public:
00744 LINKPARM_GEODATABASE (
00745 const MISTRING& LinkString,
00746 const MISTRING& TableName,
00747 bool StorePasswordInLinkObject = false
00748 ) :
00749 LINKPARMS(LinkString, LINKTYPE_Geodatabase, CHAR_ENCODING_Unicode, StorePasswordInLinkObject)
00750 {
00751 SetTableName(TableName);
00752 }
00753 };
00754
00755
00757 class SHAPE::LINKPARM_POSTGIS : public RVC::SHAPE::LINKPARMS {
00758 public:
00759 LINKPARM_POSTGIS (
00760 const MISTRING& LinkString,
00761 const MISTRING& TableName,
00762 bool StorePasswordInLinkObject = false
00763 ) :
00764 LINKPARMS(LinkString, LINKTYPE_PostGIS, CHAR_ENCODING_Unicode, StorePasswordInLinkObject)
00765 {
00766 SetTableName(TableName);
00767 }
00768 };
00769
00771 class SHAPE::LINKPARM_MYSQL : public RVC::SHAPE::LINKPARMS {
00772 public:
00773 LINKPARM_MYSQL (
00774 const MISTRING& LinkString,
00775 const MISTRING& TableName,
00776 bool StorePasswordInLinkObject = false
00777 ) :
00778 LINKPARMS(LinkString, LINKTYPE_MySQL, CHAR_ENCODING_Unicode, StorePasswordInLinkObject)
00779 {
00780 SetTableName(TableName);
00781 }
00782 };
00783
00784
00787 class SHAPE::MAKEPARMS : public GEOMETRIC::MAKEPARMSBASE {
00788 public:
00789
00791 virtual ~MAKEPARMS (
00792 ) {}
00793
00796 const MISTRING& GetConnectionString (
00797 ) const {return (m_ConnectString);}
00798
00799 const SPATREF::COORDREFSYS& GetCoordRefSys (
00800 ) const { return (m_CoordRefSys); }
00801
00804 ELEMENTTYPE GetElemType (
00805 ) const {return (m_ElemType);}
00806
00807 const DBTABLE::FIELDINFOARRAY& GetFieldInfo (
00808 ) const { return (m_FieldArray); }
00809
00812 SHAPE::LINKTYPE GetLinkType (
00813 ) const {return (m_LinkType);}
00814
00815 bool IsValidElementType (
00816 ELEMENTTYPE ElementType
00817 ) const { return (v_IsValidElementType(ElementType)); }
00818
00819 protected:
00820
00822 MAKEPARMS (
00823 LINKTYPE LinkType,
00824 ELEMENTTYPE ElemType,
00825 const MISTRING& ConnectString,
00826 const DBTABLE::FIELDINFOARRAY& FieldArray,
00827 const SPATREF::COORDREFSYS& CoordRefSys,
00828 POINTTYPE PointType = POINTTYPE_2DXY
00829 );
00830
00832 MAKEPARMS (
00833 const SHAPE& Template,
00834 LINKTYPE LinkType,
00835 const MISTRING& ConnectString,
00836 const SPATREF::COORDREFSYS* CoordRefSys = 0
00837 );
00838
00840 MAKEPARMS (
00841 const GEOMETRIC& GeometricObj,
00842 ELEMENTTYPE ElemType,
00843 LINKTYPE LinkType,
00844 const MISTRING& ConnectString,
00845 const DESCRIPTOR& BaseTable,
00846 const SPATREF::COORDREFSYS* CoordRefSys = 0
00847 );
00848
00849 private:
00850 LINKTYPE m_LinkType;
00851 ELEMENTTYPE m_ElemType;
00852 MISTRING m_ConnectString;
00853 DBTABLE::FIELDINFOARRAY m_FieldArray;
00854 SPATREF::COORDREFSYS m_CoordRefSys;
00855
00856 bool v_IsValidElementType (ELEMENTTYPE ElementType) const;
00857 };
00858
00859
00860 class SHAPE::MAKEPARM_ARCSHAPE : public SHAPE::MAKEPARMS {
00861 public:
00862 MAKEPARM_ARCSHAPE (
00863 ELEMENTTYPE ElemType,
00864 const FILEPATH& filename,
00865 const DBTABLE::FIELDINFOARRAY& FieldArray,
00866 const SPATREF::COORDREFSYS& CoordRefSys,
00867 POINTTYPE PointType = POINTTYPE_2DXY
00868 ) : MAKEPARMS(LINKTYPE_ArcShape, ElemType, filename.GetOSPath(), FieldArray, CoordRefSys, PointType) {}
00869
00870 MAKEPARM_ARCSHAPE (
00871 const SHAPE& Template,
00872 const FILEPATH& filename,
00873 const SPATREF::COORDREFSYS* CoordRefSys = 0
00874 ) : MAKEPARMS(Template, LINKTYPE_ArcShape, filename.GetOSPath(), CoordRefSys) {}
00875
00876 MAKEPARM_ARCSHAPE (
00877 const GEOMETRIC& GeometricObj,
00878 ELEMENTTYPE ElemType,
00879 const FILEPATH& filename,
00880 const DESCRIPTOR& BaseTable,
00881 const SPATREF::COORDREFSYS* CoordRefSys = 0
00882 ) : MAKEPARMS(GeometricObj, ElemType, LINKTYPE_ArcShape, filename.GetOSPath(), BaseTable, CoordRefSys) {}
00883
00884 private:
00885 bool v_IsValidElementType (ELEMENTTYPE ElementType) const;
00886 };
00887
00888
00889 class SHAPE::MAKEPARM_ORACLE : public SHAPE::MAKEPARMS {
00890 public:
00891 MAKEPARM_ORACLE (
00892 ELEMENTTYPE ElemType,
00893 const MISTRING& ConnectString,
00894 const DBTABLE::FIELDINFOARRAY& FieldArray,
00895 const SPATREF::COORDREFSYS& CoordRefSys,
00896 POINTTYPE PointType = POINTTYPE_2DXY
00897 ) : MAKEPARMS(LINKTYPE_OracleOCCI, ElemType, ConnectString, FieldArray, CoordRefSys, PointType) {}
00898
00899 MAKEPARM_ORACLE (
00900 const SHAPE& Template,
00901 const MISTRING& ConnectString,
00902 const SPATREF::COORDREFSYS* CoordRefSys = 0
00903 ) : MAKEPARMS(Template, LINKTYPE_OracleOCCI, ConnectString, CoordRefSys) {}
00904
00905 MAKEPARM_ORACLE (
00906 const GEOMETRIC& GeometricObj,
00907 ELEMENTTYPE ElemType,
00908 const MISTRING& ConnectString,
00909 const DESCRIPTOR& BaseTable,
00910 const SPATREF::COORDREFSYS* CoordRefSys = 0
00911 ) : MAKEPARMS(GeometricObj, ElemType, LINKTYPE_OracleOCCI, ConnectString, BaseTable, CoordRefSys) {}
00912
00913 private:
00914 bool v_IsValidElementType (ELEMENTTYPE ElementType) const;
00915 };
00916
00917 }
00918
00919 #endif