// // ogis-struct.idl // // Structure definitions (common and Well-Known) from the OpenGIS // Simple Features Specification for CORBA. // // // Taken from the PDF document _OpenGIS(R) Simple Features // Specification For CORBA_, Revision 1.1, dated June 2, 1999. // // Separated major sections into separate files in order to support // greater flexibility in the use of the module. // // The aforementioned specification contains the following copyright // claims: // // Copyright 1997, 1998, 1999 Bentley Systems, Inc. // Copyright 1997, 1998, 1999 Environmental Systems Research Institute // Copyright 1997, 1998, 1999 Genasys II, Inc. // Copyright 1997, 1998, 1999 Oracle Corporation // Copyright 1997, 1998, 1999 University of California, Los Angeles. // Copyright 1997, 1998, 1999 Sun Microsystems, Inc. // // See the aforementioned specification for disclaimers and more // information. // // // Chuck Taylor, September 20, 2005. // // #ifndef _OGIS_STRUCT_IDL_ #define _OGIS_STRUCT_IDL_ #include module OGIS { //---------------------------------------------------------------------- // Forward declarations of interfaces //---------------------------------------------------------------------- interface FeatureType; //---------------------------------------------------------------------- // Common structures //---------------------------------------------------------------------- typedef string Istring; typedef sequence OctetSeq; struct Decimal { long precision; long scale; OctetSeq value; }; // Structure to describe name-value pairs struct NVPair { Istring name; // name is a string any value; // value is an ’any’ type }; typedef sequence NVPairSeq; struct PropertyDef { Istring name; CORBA::TypeCode type; boolean required; }; typedef sequence PropertyDefSeq; struct FeatureData { FeatureType type; NVPairSeq props; }; typedef sequence FeatureDataSeq; //---------------------------------------------------------------------- // Well-known Structures //---------------------------------------------------------------------- struct WKSPoint { double x; double y; }; typedef sequence WKSPointSeq; typedef sequence WKSLineString; typedef sequence WKSLineStringSeq; typedef sequence WKSLinearRing; typedef sequence WKSLinearRingSeq; struct WKSLinearPolygon { WKSLinearRing externalBoundary; WKSLinearRingSeq internalBoundaries; }; typedef sequence WKSLinearPolygonSeq; enum WKSType { WKSPointType,WKSMultiPointType, WKSLineStringType, WKSMultiLineStringType, WKSLinearRingType, WKSLinearPolygonType, WKSMultiLinearPolygonType, WKSCollectionType }; union WKSGeometry // near-equivalent to the ’CoordinateGeometry of the // spec’ switch (WKSType) { case WKSPointType: WKSPoint point; case WKSMultiPointType: WKSPointSeq multi_point; case WKSLineStringType: WKSLineString line_string; case WKSMultiLineStringType: WKSLineStringSeq multi_line_string; case WKSLinearRingType: WKSLinearRing linear_ring; case WKSLinearPolygonType: WKSLinearPolygon linear_polygon; case WKSMultiLinearPolygonType: WKSLinearPolygonSeq multi_linear_polygon; case WKSCollectionType: sequence collection; }; struct Envelope { WKSPoint minm; WKSPoint maxm; }; }; // End OGIS Module #endif // _OGIS_STRUCT_IDL_