/* $Id: sdetype.h,v 1.306 2003/11/05 19:43:11 jose2260 Exp $ */
/***********************************************************************
*
*N  {sdetype.h}  --  Spatial Database Engine Datatypes/Defines Header File
*
*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*
*P  Purpose:
* 
*                  Spatial Database Engine Datatypes/Defines Header File
*
*   COPYRIGHT 1992-2003 ESRI
*
*   TRADE SECRETS: ESRI PROPRIETARY AND CONFIDENTIAL
*   Unpublished material - all rights reserved under the
*   Copyright Laws of the United States.
*
*   For additional information, contact:
*   Environmental Systems Research Institute, Inc.
*   Attn: Contracts Dept
*   380 New York Street
*   Redlands, California, USA 92373
*
*   email: contracts@esri.com
*   
*E
*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*
*H  History:
*
*E
***********************************************************************/
#ifndef SDE_TYPES
#define SDE_TYPES
#ifdef __cplusplus
extern "C" {
#endif
#include 
#include 
#include 
#include "sg.h"
#define SE_ALL                     0
/************************************************************
*** Backwards compatibility macros for SDE 3.0 code -- use
*** SE_RELEASE and SE_connection_get_release() instead.
*** At some future point these will probably be removed.
************************************************************/
#ifndef SDE_COMMON
#  define SE_VERSION SE_RELEASE
#  define SE_connection_get_version SE_connection_get_release
#endif /* SDE_COMMON */
/************************************************************
*** ALLOWABLE SHAPE TYPE MASKS FOR LAYERS
************************************************************/
#define SE_NIL_TYPE_MASK           (1L)
#define SE_POINT_TYPE_MASK         (1L<<1) #define
	SE_LINE_TYPE_MASK
	(1L<<2)
	SE_SIMPLE_LINE_TYPE_MASK
	(1L<<3)
	SE_AREA_TYPE_MASK
	(1L<<4)
	SE_MULTIPART_TYPE_MASK
	(1L<<18)
	/************************************************************
	***
	ALLOWABLE
	STORAGE
	TYPE
	MASKS
	FOR
	LAYERS
	************************************************************/
	SE_STORAGE_NORMALIZED_TYPE
	(1L<<23)
	SE_STORAGE_SDEBINARY_TYPE
	(1L<<24)
	SE_STORAGE_WKB_TYPE
	(1L<<25)
	SE_STORAGE_SQL_TYPE
	(1L<<26)
	SE_STORAGE_SPATIAL_TYPE
	(1L<<27)
	SE_STORAGE_LOB_TYPE
	(1L<<28)
	LAYER
	CHARATERISTICS
	SE_LAYER_AUTO_REGISTER
	(1L<<5)
	SE_LAYER_HAS_USER_DEFINED_EXTENT
	(1L<<6)
	SE_LAYER_HAS_GEODETIC_EXTENT
	(1L<<1)
	PRECISION
	SE_LAYER_PRECISION_DEFAULT
	0
	SE_LAYER_PRECISION_32_BIT
	32
	SE_LAYER_PRECISION_64_BIT
	64
	OGC
	Declarations
	SE_OGC_STORAGE_NORMALIZED
	SE_OGC_STORAGE_WKB
	1
	SE_OGC_STORAGE_OTHER
	2
	Geometry
	Values
	typedef
	enum
	{
	SE_OGC_GEOMETRY="0,"
	SE_OGC_POINT="1,"
	SE_OGC_CURVE="2,"
	SE_OGC_LINESTRING="3,"
	SE_OGC_SURFACE="4,"
	SE_OGC_POLYGON="5,"
	SE_OGC_COLLECTION="6,"
	SE_OGC_MULTIPOINT="7,"
	SE_OGC_MULTICURVE="8,"
	SE_OGC_MULTILINESTRING="9,"
	SE_OGC_MULTISURFACE="10,"
	SE_OGC_MULTIPOLYGON=11
	}
	SE_OGC_GEOMETRY_TYPES;
	/**************************************************************************
	OBSOLETE
	DEFINES
	--
	NOT
	NEW
	CODE
	***************************************************************************/
	SE_NORMALIZED_TYPE_MASK
	SE_EXTERNAL_TYPE_MASK
	SE_REGISTERED_TYPE_MASK
	/***************************************/
	/******
	ACCESS
	RIGHTS
	CONSTANTS
	********/
	SE_SELECT_PRIVILEGE
	(1<<1)
	SE_UPDATE_PRIVILEGE
	(1<<2)
	SE_INSERT_PRIVILEGE
	(1<<3)
	SE_DELETE_PRIVILEGE
	(1<<4)
	/***************************************************/
	TABLE
	UPDATING
	DBMS
	STATS
	SE_UPDATE_ADDS_TABLE_STATS
	SE_UPDATE_DELETES_TABLE_STATS
	SE_UPDATE_FEATURE_TABLE_STATS
	SE_UPDATE_BUSINESS_TABLE_STATS
	SE_UPDATE_RASTER_TABLE_STATS
	SE_UPDATE_XML_TABLE_STATS
	(1L<<7)
	SE_UPDATE_ALL_TABLE_STATS
	(SE_UPDATE_ADDS_TABLE_STATS
	|
	\
	SE_UPDATE_BUSINESS_TABLE_STATS)
	LOCKING
	MODES
	SE_WRITE_LOCK
	SE_READ_LOCK
	ATTRIBUTE
	DATA
	TYPES
	SE_INT16_TYPE
	/*
	2-byte
	Integer
	*/
	SE_INT32_TYPE
	4-byte
	SE_FLOAT32_TYPE
	3
	Float
	SE_FLOAT64_TYPE
	4
	8-byte
	SE_STRING_TYPE
	5
	Null
	Term.
	Character
	Array
	SE_BLOB_TYPE
	6
	Variable
	Length
	SE_DATE_TYPE
	7
	Struct
	tm
	Date
	SE_SHAPE_TYPE
	8
	Shape
	(SE_SHAPE)
	SE_RASTER_TYPE
	9
	Raster
	SE_XML_TYPE
	10
	XML
	Document
	SE_INT64_TYPE
	11
	SE_UUID_TYPE
	12
	A
	Universal
	Unique
	ID
	SE_CLOB_TYPE
	13
	SE_NSTRING_TYPE
	14
	UNICODE
	SE_NCLOB_TYPE
	15
	Large
	Object
	SE_POINT_TYPE
	20
	Point
	ADT
	SE_CURVE_TYPE
	21
	LineString
	SE_LINESTRING_TYPE
	22
	SE_SURFACE_TYPE
	23
	Polygon
	SE_POLYGON_TYPE
	24
	SE_GEOMETRYCOLLECTION_TYPE
	25
	MultiPoint
	SE_MULTISURFACE_TYPE
	26
	SE_MULTICURVE_TYPE
	27
	SE_MULTIPOINT_TYPE
	28
	SE_MULTILINESTRING_TYPE
	29
	MultiLineString
	SE_MULTIPOLYGON_TYPE
	30
	MultiPolygon
	SE_GEOMETRY_TYPE
	31
	OLD
	(Depreciated)
	SE_SMALLINT_TYPE
	SE_INTEGER_TYPE
	SE_FLOAT_TYPE
	SE_DOUBLE_TYPE
	DEFINING
	LIMITS
	<a
	name=SE_MAX_MESSAGE_LENGTH>#define SE_MAX_MESSAGE_LENGTH      512 /* MAXIMUM ERROR MESSAGE LENGTH */
#define SE_MAX_SQL_MESSAGE_LENGTH 4096 /* MAXIMUM SQL ERROR MESSAGE LENGTH */
#define SE_MAX_PATH_LEN            512 /* MAXIMUM FILE PATH NAME LENGTH */
#define SE_MAX_CONFIG_KEYWORD_LEN  32  /* MAXIMUM CONFIGURATION KEYWORD 
                                          LENGTH */
#define SE_MAX_CONFIG_STR_LEN     2048 /* MAXIMUM CONFIGURATION STRING LENGTH */
#define SE_MAX_PROP_NAME_LEN       32  /* MAXIMUM PROPERTY NAME LENGTH */
#define SE_MAX_PROP_VAL_LEN        512 /* MAXIMUM PROPERTY VALUE LENGTH */
#define SE_MAX_DESCRIPTION_LEN     64  /* MAXIMUM LAYER DESCRIPTION LENGTH */
#define SE_MAX_FEAT_CLASS_LEN      128 /* MAXIMUM FILEINFO FEATUE CLASS 
                                          DESCRIPTION LENGTH */
#define SE_MAX_COLUMN_LEN          32  /* MAXIMUM COLUMN NAME LENGTH */
#define SE_MAX_TABLE_LEN           160 /* MAXIMUM TABLE NAME LENGTH */
#define SE_MAX_SCHEMA_TABLE_LEN    30  /* MAXIMUN TABLE 'ONLY' NAME LENGTH */
#define SE_MAX_ALIAS_LEN           32  /* MAXIMUM TABLE ALIAS LENGTH */
#define SE_MAX_ENTITY_LEN          256 /* MAXIMUM ENTITY TYPE LENGTH */
#define SE_MAX_HINT_LEN            1024/* MAXIMUM DBMS HINT LENGTH */
#define SE_MAX_OWNER_LEN           32  /* MAXIMUM TABLE OWNER NAME LENGTH */
#define SE_MAX_INDEX_LEN           160 /* MAXIMUM INDEX NAME LENGTH */
#define SE_MAX_GROUP_LEN           26  /* MAXIMUM GROUP NAME LENGTH */
#define SE_MAX_COLUMNS             256 /* MAXIMUM NUMBER OF COLUMNS */
#define SE_MAX_ANNO_TEXT_LEN       255 /* MAXIMUM ANNOTATION TEXT LENGTH */
#define SE_MAX_VERSION_LEN         64  /* MAXIMUM VERSION NAME LENGTH */
#define SE_MAX_OSNAME_LEN          64  /* MAXIMUM OPERATING SYSTEM NAME LENGTH */
#define SE_MAX_OSVERSION_LEN       128 /* MAXIMUM OPERATING SYSTEM VERSION LENGTH */
#define SE_MAX_DBMSVERSION_LEN     128 /* MAXIMUM DATABASE VERSION LENGTH */
#define SE_MAX_VERSION_INPUT_LEN   62  /* MAXIMUM USER-SUPPLIED VERSION NAME
                                          LENGTH */
#define SE_MAX_OBJECT_NAME_LEN     160 /* MAXIMUM OBJECT NAME LENGTH */
#define SE_MAX_METADATA_CLASS_LEN  32  /* MAXIMUM CLASS NAME LENGTH */
#define SE_MAX_METADATA_PROPERTY_LEN 32/* MAXIMUM PROPERTY NAME LENGTH */
#define SE_MAX_METADATA_VALUE_LEN  255 /* MAXIMUM VALUE LENGTH */
#define SE_MAX_LOCATOR_PROPERTY_LEN 32 /* MAXIMUM PROPERTY NAME LENGTH */
#define SE_MAX_LOCATOR_VALUE_LEN   255 /* MAXIMUM VALUE LENGTH */
#define SE_MAX_SERVER_LEN          32  /* MAXIMUM SERVER NAME LENGTH */
#define SE_MAX_INSTANCE_LEN        32  /* MAXIMUM INSTANCE NAME LENGTH */
#define SE_MAX_PASSWORD_LEN        32  /* MAXIMUM PASSWORD NAME LENGTH */
#define SE_MAX_DATABASE_LEN        32  /* MAXIMUM DATABASE NAME LENGTH */
#define SE_MAX_SCL_CODESIZE        256 /* MAXIMUM SCL OBJECT CODE LENGTH */
#define SE_MAX_FUNCTION_LEN        32  /* MAXIMUM FUNCTION NAME LENGTH */
#define SE_MAX_KEYWORD_LEN         32  /* MAXIMUM DBMS RESERVED KEYWORD LENGTH */
#define SE_MAX_LOGFILE_NAME_LEN    64  /* MAXIMUM BASE LOGFILE NAME LENGTH */
#define SE_UUID_STRING_LEN         40  /* UUID STRING LENGTH + 1 Nil byte +
                                          3 bytes for alignment. */
#define SE_MAX_XML_INDEX_NAME_LEN  32  /* MAXIMUM XML INDEX NAME LENGTH */
#define SE_MAX_XML_TAG_NAME_LEN   256  /* MAXIMUM XML TAG NAME STRING LENGTH */
#define SE_MAX_SID_COLUMN_LEN      38  /* MAXIMUM LENGTH OF STATE_ID COLUMN */
#define SE_MAX_LIN_COLUMN_LEN      38  /* MAXIMUM LENGTH OF LINEAGE_NAME COLUMN */
#define SE_MAX_TRANSFORM_NAME_LEN 256  /* MAXIMUM LENGTH OF A TRANSFORM NAME */
/* CONSTANTS ALLOWING FOR FULLY QUALIFIED TABLE AND COLUMN NAMES */
#define SE_QUALIFIED_TABLE_NAME    (SE_MAX_DATABASE_LEN + SE_MAX_OWNER_LEN +\
                                    SE_MAX_TABLE_LEN + 2)
#define SE_QUALIFIED_COLUMN_LEN    (SE_QUALIFIED_TABLE_NAME + \
                                    SE_MAX_COLUMN_LEN + 1)
#define SE_QUALIFIED_VERSION_LEN   (SE_MAX_OWNER_LEN + SE_MAX_VERSION_LEN + 1)
#define SE_QUALIFIED_LOGFILE_NAME  (SE_MAX_DATABASE_LEN + SE_MAX_OWNER_LEN +\
                                    SE_MAX_LOGFILE_NAME_LEN + 2)
#define SE_QUALIFIED_OBJECT_NAME   (SE_MAX_DATABASE_LEN + SE_MAX_OWNER_LEN +\
                                    SE_MAX_OBJECT_NAME_LEN + 2)
#define SE_QUALIFIED_XML_INDEX_LEN (SE_MAX_XML_INDEX_NAME_LEN + \
                                     SE_MAX_OWNER_LEN + 1)
/************************************************************
*** Minimum gridsize for Layer 
************************************************************/
#define SE_MIN_GRIDSIZE        256 /* MINIMUM LAYER GRIDSIZE (system units) */
/************************************************************
*** ATTRIBUTE INDICATOR VALUES
************************************************************/
#define SE_IS_NULL_VALUE       1
#define SE_IS_NOT_NULL_VALUE   2
/************************************************************
*** LOG FILE DEFINES
************************************************************/
#define SE_INPUT_MODE              0
#define SE_OUTPUT_MODE             1
#define SE_EXTEND_MODE             2
#define SE_OUTPUT_NO_DELETE_MODE   3
#define SE_LOG_PERSISTENT          1
#define SE_LOG_TEMPORARY           2
#define SE_LOG_FOR_TABLE           1
#define SE_LOG_FOR_LAYER           2
#define SE_LOG_INTERSECT           1
#define SE_LOG_UNION               2
#define SE_LOG_DIFFERENCE          3
#define SE_LOG_SYMDIFF             4
typedef enum {
      SE_LOGFILE_DELETE_MODE_DEFER = 0,
      SE_LOGFILE_DELETE_MODE_IMMEDIATE
} SE_LOGFILE_DELETE_MODE;
/************************************************************
*** SPATIAL REFERENCE DEFINES
************************************************************/
#define SE_MAX_SPATIALREF_AUTHNAME_LEN 256
#define SE_MAX_SPATIALREF_SRTEXT_LEN 2048
typedef struct _SE_SpatialRef *SE_SPATIALREFINFO;
/************************************************************
*** ALLOWABLE SPATIAL INDEX TYPE DEFINES FOR LAYERS
*** NOTE: THEIR AVAILABILITY IS DBMS DEPENDENT. 
************************************************************/
#define  SE_SPATIALINDEX_MULTI_GRID        1
#define  SE_SPATIALINDEX_DBTUNE            0
#define  SE_SPATIALINDEX_NONE             -1
#define  SE_SPATIALINDEX_RTREE            -2
#define  SE_SPATIALINDEX_FIXED_QUADTREE   -3
#define  SE_SPATIALINDEX_HYBRID_QUADTREE  -4
#define  SE_SPATIALINDEX_UNKNOWN          -5
/************************************************************
*** SEARCH ORDERS
************************************************************/
#define     SE_ATTRIBUTE_FIRST  1   /* DO NOT USE SPATIAL INDEX */
#define     SE_SPATIAL_FIRST    2   /* USE SPATIAL INDEX */
#define     SE_OPTIMIZE         3   /* LET SDE DECIDE */
/************************************************************
*** QUERY TYPES
************************************************************/
#define  SE_QUERYTYPE_ATTRIBUTE_FIRST  1
#define  SE_QUERYTYPE_JFA              2 
#define  SE_QUERYTYPE_JSF              3 
#define  SE_QUERYTYPE_JSFA             4 
#define  SE_QUERYTYPE_V3               5 
#define  SE_MAX_QUERYTYPE              5
/************************************************************
*** CONSTANTS FOR SE_PTABLE_SNAP routine
************************************************************/
#define SE_SNAP2D      0
#define SE_SNAP3D      1
/************************************************************
*** INDIVIDUAL BIT-MASKS FOR STATISTICS OPERATIONS
************************************************************/
#define SE_MIN_STATS      0x0001
#define SE_AVERAGE_STATS  0x0002
#define SE_MAX_STATS      0x0004
#define SE_STD_DEV_STATS  0x0008
#define SE_COUNT_STATS    0x0010
#define SE_DISTINCT_STATS 0x0020
#define SE_BASIC_STATS    SE_MIN_STATS | SE_AVERAGE_STATS | SE_MAX_STATS | \
                          SE_STD_DEV_STATS | SE_COUNT_STATS
#define SE_ALL_STATS      SE_BASIC_STATS | SE_DISTINCT_STATS
/************************************************************
*** CONCURRENCY POLICIES
************************************************************/
#define SE_UNPROTECTED_POLICY  0
#define SE_ONE_THREAD_POLICY   1
#define SE_TRYLOCK_POLICY      2
#define SE_LOCK_POLICY         3
/********************************************************************
*** SPATIAL FILTER TYPES FOR SPATIAL CONSTRAINTS AND STABLE SEARCHES
*********************************************************************/
#define SE_SHAPE_FILTER  1
#define SE_ID_FILTER     2
/************************************************************
*** STABLE OPTIONS
************************************************************/
#define SE_DELETE_CURRENT (LONG)0
/************************************************/
/***  SDE ROWID pseudo-column -- Obsolete!!!! ***/
/***  Only present for backwards compatibity: ***/
/***  Use registered tables row ID's instead. ***/
/************************************************/
#define SE_ROW_ID   "SE_ROW_ID"
/**************************
*  Binary Conversion Enum *
**************************/
typedef enum
{
  SE_BINARY_CONVERSION_TO_LOB      = 1,
  SE_BINARY_CONVERSION_TO_LONGRAW  = 2
} SE_BINARY_CONVERSION;
/*******************************/
/***  Shape attribute names  ***/
/*******************************/
#define SE_SHAPE_ATTRIBUTE_NUMOFPTS   0
#define SE_SHAPE_ATTRIBUTE_ENTITY     1
#define SE_SHAPE_ATTRIBUTE_XMIN       2
#define SE_SHAPE_ATTRIBUTE_XMAX       3
#define SE_SHAPE_ATTRIBUTE_YMIN       4
#define SE_SHAPE_ATTRIBUTE_YMAX       5
#define SE_SHAPE_ATTRIBUTE_ZMIN       6
#define SE_SHAPE_ATTRIBUTE_ZMAX       7
#define SE_SHAPE_ATTRIBUTE_MMIN       8
#define SE_SHAPE_ATTRIBUTE_MMAX       9
#define SE_SHAPE_ATTRIBUTE_AREA      10
#define SE_SHAPE_ATTRIBUTE_LENGTH    11
#define SE_SHAPE_ATTRIBUTE_TEXT      12
#define SE_SHAPE_ATTRIBUTE_FID       13
/**********************************/
/*****   DBMS IDENTIFIERS *********/
/**********************************/
#define SE_DBMS_IS_UNKNOWN  -1
#define SE_DBMS_IS_OTHER     0
#define SE_DBMS_IS_ORACLE    1
#define SE_DBMS_IS_INFORMIX  2
#define SE_DBMS_IS_SYBASE    3
#define SE_DBMS_IS_DB2       4
#define SE_DBMS_IS_SQLSERVER 5
#define SE_DBMS_IS_ARCINFO   6
#define SE_DBMS_IS_IUS       7
#define SE_DBMS_IS_DB2_EXT   8
#define SE_DBMS_IS_ARCSERVER 9
#define SE_DBMS_IS_JET       10
/******************************/
/***  DBMS Properties  ***/
/******************************/
#define SE_DBMS_CAN_RENAME                      (1<<0) #define
	SE_DBMS_CAN_ADD_COL
	(1<<1)
	SE_DBMS_CAN_DROP_COL
	(1<<2)
	SE_DBMS_OWNER_PREFIXES_TABLE
	(1<<3)
	SE_DBMS_IS_CASE_SENSITIVE
	(1<<4)
	SE_DBMS_SUPPORT_DELIMITED_IDENTIFIER
	(1<<5)
	SE_DBMS_IS_CASE_SENSITIVE_IN_COMPARISON
	(1<<6)
	SE_DBMS_IS_USER_CASE_SENSITIVE
	(1<<7)
	SE_DBMS_IS_PASSWORD_CASE_SENSITIVE
	(1<<8)
	SE_DBMS_UNICODE_IN_ALL_CHAR
	(1<<9)
	SE_DBMS_UNICODE_IN_STRING_TYPE
	(1<<10)
	SE_DBMS_UNICODE_IN_CLOB_TYPE
	(1<<11)
	SE_DBMS_UNICODE_IN_OBJECT_NAMES
	(1<<12)
	SE_DBMS_CODEPAGE_IS_UTF8
	(1<<13)
	SE_DBMS_CODEPAGE_IS_UTF16
	(1<<14)
	SE_DBMS_CODEPAGE_IS_UCS2
	(1<<15)
	SE_DBMS_CHAR_TYPES_STORE_UTF8
	(1<<16)
	SE_DBMS_CHAR_TYPES_STORE_UTF16
	(1<<17)
	SE_DBMS_CHAR_TYPES_STORE_UCS2
	(1<<18)
	SE_DBMS_NCHAR_TYPES_STORE_UTF8
	(1<<19)
	SE_DBMS_NCHAR_TYPES_STORE_UTF16
	(1<<20)
	SE_DBMS_NCHAR_TYPES_STORE_UCS2
	(1<<21)
	SE_DBMS_CODEPAGE_IS_UNICODE
	\
	(SE_DBMS_CODEPAGE_IS_UTF8
	|\
	SE_DBMS_CODEPAGE_IS_UCS2)
	/*******
	Lock
	type
	values
	for
	SE_TABLE_LOCK
	*******/
	/*****************************************************/
	SE_TABLE_SHARED_SCHEMA_LOCK
	1
	SE_TABLE_EXCLUSIVE_SCHEMA_LOCK
	2
	/****************************************************************************/
	/***
	INSTANCE
	MODES
	--
	Returned
	in
	system_mode
	field
	of
	SE_INSTANCE_STATUS
	*/
	SE_INSTANCE_ACCEPTING
	SE_INSTANCE_BLOCKING
	SE_INSTANCE_LOCK
	SE_INSTANCE_LAYER_READ_LOCK
	0
	SE_INSTANCE_LAYER_WRITE_LOCK
	SE_INSTANCE_AREA_READ_LOCK
	SE_INSTANCE_AREA_WRITE_LOCK
	3
	SE_INSTANCE_AUTO_LOCK
	4
	/************************************/
	SE_instance_control()
	options
	SE_CONTROL_INSTANCE_SHUTDOWN
	SE_CONTROL_INSTANCE_PAUSE
	SE_CONTROL_INSTANCE_RESUME
	SE_CONTROL_INSTANCE_KILL
	SE_CONTROL_INSTANCE_KILL_ALL
	5
	SE_CONTROL_INSTANCE_START
	6
	/****************************************/
	SE_ANNO
	text
	justification
	SE_ANNO_UPPER_LEFT
	SE_ANNO_UPPER_CENTER
	SE_ANNO_UPPER_RIGHT
	SE_ANNO_CENTER_LEFT
	SE_ANNO_CENTER_CENTER
	SE_ANNO_CENTER_RIGHT
	SE_ANNO_LOWER_LEFT
	7
	SE_ANNO_LOWER_CENTER
	8
	SE_ANNO_LOWER_RIGHT
	9
	Registered
	Table
	Row
	ID
	Types
	SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE
	SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER
	SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE
	/*********************************************************/
	SDE-maintained
	rowid
	columns
	allocation
	methods
	***/
	SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE
	SE_REGISTRATION_ROW_ID_ALLOCATION_MANY
	Metadata
	Object
	SE_METADATA_OBJECT_TYPE_TABLE
	SE_METADATA_OBJECT_TYPE_LOCATOR
	SE_METADATA_OBJECT_TYPE_XML_COLUMN
	Locator
	Status
	SE_LOCATOR_TEMPLATE
	SE_LOCATOR_VALIDATED
	SE_LOCATOR_DEFINED
	/*********************************************/
	External
	FileInfo
	SE_FILEINFO_OBJECT_TYPE_EXPORT_FMT
	SE_FILEINFO_OBJECT_TYPE_SHAPEFILE
	SE_FILEINFO_OBJECT_TYPE_COVERAGE
	/********************************/
	Version
	Reserved
	Names
	SE_DEFAULT_VERSION_NAME
	"DEFAULT"
	SE_QUALIFIED_DEFAULT_VERSION_NAME
	"sde"
	"."
	/******************************/
	Access
	SE_VERSION_ACCESS_PUBLIC
	SE_VERSION_ACCESS_PROTECTED
	SE_VERSION_ACCESS_PRIVATE
	/****************************/
	State
	Ids
	SE_BASE_STATE_ID
	(0)
	SE_NULL_STATE_ID
	(-1)
	SE_DEFAULT_STATE_ID
	(-2)
	/*************************************/
	Conflict
	Filter
	SE_STATE_DIFF_NOCHECK
	SE_STATE_DIFF_NOCHANGE_UPDATE
	SE_STATE_DIFF_NOCHANGE_DELETE
	SE_STATE_DIFF_UPDATE_NOCHANGE
	SE_STATE_DIFF_UPDATE_UPDATE
	SE_STATE_DIFF_UPDATE_DELETE
	SE_STATE_DIFF_INSERT
	SE_STATE_DIFF_RESTORE
	/*******************************************************/
	(for
	SE_INSTANCE_STATE_LOCK)
	SE_STATE_TREE_SHARED_LOCK
	SE_STATE_TREE_EXCLUSIVE_LOCK
	SE_STATE_SHARED_LOCK
	SE_STATE_EXCLUSIVE_LOCK
	SE_STATE_SHARED_AUTOLOCK
	SE_STATE_EXCLUSIVE_AUTOLOCK
	Rowlocking
	SE_ROWLOCKING_LOCK_ON_QUERY
	(1)
	SE_ROWLOCKING_LOCK_ON_INSERT
	SE_ROWLOCKING_LOCK_ON_UPDATE
	SE_ROWLOCKING_UNLOCK_ON_QUERY
	SE_ROWLOCKING_UNLOCK_ON_UPDATE
	SE_ROWLOCKING_FILTER_MY_LOCKS
	SE_ROWLOCKING_FILTER_OTHER_LOCKS
	SE_ROWLOCKING_FILTER_UNLOCKED
	SE_ROWLOCKING_LOCK_ONLY
	SE_OBJECTLOCK_NO_LOCK_SET
	(99)
	SE_OBJECTLOCK_SHARED_LOCK
	SE_OBJECTLOCK_EXCLUSIVE_LOCK
	SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK
	(2)
	/*****************************/
	SE_VERSION_SHARED_LOCK
	SE_VERSION_EXCLUSIVE_LOCK
	SE_VERSION_EXCLUSIVE_AUTOLOCK
	Trace
	Mode
	SE_TRACE_API_BRIEF
	(1<<0)
	SE_TRACE_API_VERBOSE
	SE_TRACE_TIME_MINSEC
	SE_TRACE_TIME_HRMINSEC
	SE_TRACE_FLUSH
	SE_TRACE_CLIENT_SIDE
	SE_TRACE_SRVR_SIDE
	XML
	TAG
	DATA
	SE_XML_INDEX_STRING_TYPE
	/*
	index
	type.
	SE_XML_INDEX_DOUBLE_TYPE
	numeric
	SE_XML_INDEX_TEMPLATE
	SE_XML_INDEX_DEFINITION
	SE_XML_INDEX_AUTO
	/*********************************/
	Raster
	Interleave
	<a
	name=SE_RASTER_INTERLEAVE_TYPE>typedef enum {
    SE_RASTER_INTERLEAVE_BIP,        /* interleave by pixel */  
    SE_RASTER_INTERLEAVE_BIL,        /* interleave by line */
    SE_RASTER_INTERLEAVE_BSQ         /* band sequential */
} SE_RASTER_INTERLEAVE_TYPE;
/*********************************/
/***   Interpolation Methods   ***/
/*********************************/
typedef enum {
    SE_INTERPOLATION_NONE,           /* no interpolation */
    SE_INTERPOLATION_NEAREST,        /* nearest-neighbor interpolation */
    SE_INTERPOLATION_BILINEAR,       /* bilinear interpolation */
    SE_INTERPOLATION_BICUBIC         /* bicubic interpolation */
} SE_INTERPOLATION_TYPE;
/********************************/
/*** Raster Callback Function ***/
/********************************/
typedef LONG (* SE_RASTER_PROC) (
    void              *user_data,
    void              **pixels,
    LONG              *pixels_length,
    void              **bitmask,
    LONG              *bitmask_length
);
/********************************/
/***    Bin Function Types    ***/
/********************************/
typedef enum {
    SE_BIN_FUNCTION_NONE = 0,
    SE_BIN_FUNCTION_AUTO,
    SE_BIN_FUNCTION_DIRECT,
    SE_BIN_FUNCTION_LINEAR,
    SE_BIN_FUNCTION_LOGARITHM,
    SE_BIN_FUNCTION_EXPLICIT
} SE_BIN_FUNCTION_TYPE;
/********************************/
/***  Raster Colormap Types   ***/
/********************************/
typedef enum {
    SE_COLORMAP_NONE = 0,
    SE_COLORMAP_RGB,
    SE_COLORMAP_RGBA
} SE_COLORMAP_TYPE;
/********************************/
/***  Colormap's Data Types   ***/
/********************************/
typedef enum {
    SE_COLORMAP_DATA_BYTE,
    SE_COLORMAP_DATA_SHORT
} SE_COLORMAP_DATA_TYPE;
/********************************/
/***    Raster Mosaic Mode    ***/
/********************************/
#define SE_MOSAIC_MODE_NONE    0
#define SE_MOSAIC_MODE_MERGE   1
#define SE_MOSAIC_MODE_DELETE  2
/***************************************************************************/
/***  function_id Constants(total 50 function constants). ***/
/***************************************************************************/
/* The string functions */
typedef enum {
   SE_DBMS_FUNCTION_UPPERCASE,       /* 0:Returns char in upper case */
   SE_DBMS_FUNCTION_LOWERCASE,       /* 1:Returns char in lower case */
   SE_DBMS_FUNCTION_CONCAT,          /* 2:Returns char1 concatenated with char2 */
   SE_DBMS_FUNCTION_ASCII,           /* 3:Returns decimal representation of char c */
   SE_DBMS_FUNCTION_LENGTH,          /* 4:Return length in CHAR */
   SE_DBMS_FUNCTION_LENGTHB,         /* 5:Returns length in bytes */
   SE_DBMS_FUNCTION_CHR,             /* 6:Returns the character of the binary equivalent */
   SE_DBMS_FUNCTION_LTRIM,           /* 7:remove spaces from the left */
   SE_DBMS_FUNCTION_RTRIM,           /* 8:remove trailing from the right */
   SE_DBMS_FUNCTION_SUBSTR,          /* 9:Returns a portion of char at M and N c long */
   SE_DBMS_FUNCTION_SUBSTRB,         /* 10:Returns a portion of byes at m and n bytes long */
   SE_DBMS_FUNCTION_SOUNDEX,         /* 11:Returns a char containing the phonetic representation of char2 */
   SE_DBMS_FUNCTION_TRANSLATE,       /* 12:Returns char with each char in from replaced by its corresponding char in to */
   SE_DBMS_FUNCTION_TRIM,            /* 13:strip the leading, trailing, * or both from the string */
   SE_DBMS_FUNCTION_CEIL,            /* 14:Returns smallest integer >= n */
   SE_DBMS_FUNCTION_FLOOR,           /* 15:Returns largest integer <= n
	*/
	SE_DBMS_FUNCTION_ROUND,
	/*
	16:Returns
	rounded
	to
	m
	place
	of
	SE_DBMS_FUNCTION_LN,
	17:Returns
	natural
	logarithm
	SE_DBMS_FUNCTION_LOG10,
	18:Returns
	base
	10
	SE_DBMS_FUNCTION_LOG,
	19:Returns
	SE_DBMS_FUNCTION_MOD,
	20:Returns
	the
	reminder
	divided
	by
	SE_DBMS_FUNCTION_POWER,
	21:Returns
	power
	SE_DBMS_FUNCTION_SIGN,
	22:Returns
	-1
	for
	negative
	and
	0
	zero
	1
	positive
	SE_DBMS_FUNCTION_TRUNC,
	23:Returns
	truncted
	decimal
	SE_DBMS_FUNCTION_SINH,
	24:Returns
	hyperbolic
	sine
	x
	SE_DBMS_FUNCTION_COSH,
	25:Returns
	cosine
	SE_DBMS_FUNCTION_TANH,
	26:Returns
	tangent
	SE_DBMS_FUNCTION_ASIN,
	27:Returns
	arcsine
	SE_DBMS_FUNCTION_ACOS,
	28:Returns
	arccosine
	SE_DBMS_FUNCTION_ATAN,
	29:Returns
	arctangent
	SE_DBMS_FUNCTION_HEX,
	30:Returns
	hexadecimal
	representation
	a
	SE_DBMS_FUNCTION_SIN,
	31:Returns
	SE_DBMS_FUNCTION_COS,
	32:Returns
	SE_DBMS_FUNCTION_TAN,
	33:Returns
	SE_DBMS_FUNCTION_EXTRACT,
	34:Returns
	numeric
	value
	date
	SE_DBMS_FUNCTION_BITLEN,
	35:Returns
	string
	length
	in
	bits
	SE_DBMS_FUNCTION_POSITION,
	36:Returns
	indicates
	starting
	position
	search
	source
	SE_DBMS_FUNCTION_ABS,
	37:Returns
	absolute
	SE_DBMS_FUNCTION_VARIANCE,
	38:Returns
	variance
	SE_DBMS_FUNCTION_STDDEV,
	39:Returns
	standard
	deviation
	SE_DBMS_FUNCTION_AVG,
	40:Returns
	average
	SE_DBMS_FUNCTION_COUNT,
	41:Returns
	number
	rows
	query
	SE_DBMS_FUNCTION_MAX,
	42:Returns
	maximum
	expression
	SE_DBMS_FUNCTION_MIN,
	43:Returns
	minimum
	SE_DBMS_FUNCTION_SUM,
	44:Returns
	sum
	values
	SE_DBMS_FUNCTION_COALSCE,
	45:Returns
	first
	NOT_NULL
	SE_DBMS_FUNCTION_CONVERT,
	46:The
	convert
	function
	SE_DBMS_FUNCTION_CAST,
	47:Converts
	one
	data
	type
	another
	SE_DBMS_FUNCTION_USER
	48:Returns
	current
	user
	name=SE_BUILD_MODE
	}
	SE_SQL_FUNCTION;
	SQL
	special
	characters
	DBMSs
	typedef
	enum
	{
	SE_SQL_WILDCARD_MANYMATCH_CHAR="49,"
	always
	start
	from
	total
	constants
	SE_SQL_WILDCARD_SINGLEMATCH_CHAR,
	SE_SQL_DELIMITED_CHAR_PREFIX,
	SE_SQL_DELIMITED_CHAR_SUFFIX,
	SE_SQL_DEFAULT_ESCAPE_CHAR_PREFIX,
	SE_SQL_DEFAULT_ESCAPE_CHAR_SUFFIX,
	SE_SQL_ESCAPE_CLAUSE_PREFIX,
	SE_SQL_ESCAPE_CLAUSE_SUFFIX
	SE_SQL_SPECIAL_CHARACTER;
	Sublineage
	SE_SUBLINEAGE_SOURCE,
	SE_SUBLINEAGE_DIFF,
	SE_SUBLINEAGE_PAST,
	SE_LINEAGE_SOURCE,
	SE_LINEAGE_DIFF,
	SE_LINEAGE_NONE
	SE_LINEAGE_TYPES;
	/***************************************************************************/
	/***
	annotation
	alignment
	***/
	#define
	SE_ANNO_ALIGN_DEFAULT
	SE_ANNO_ALIGN_LEFT
	SE_ANNO_ALIGN_RIGHT
	2
	SE_ANNO_ALIGN_CENTER
	3
	SE_ANNO_ALIGN_AUTOMATIC
	4
	Shape
	Types
	(Re)Definitions
	(see
	sg.h
	full
	definition)
	SgSimpleShapePoint
	SE_POINT;
	SgShapePoint
	SE_SDEPOINT;
	SgShapeEnvelope
	SE_ENVELOPE;
	SgCoordRef
	SE_COORDREF;
	struct
	LFLOAT
	minz;
	minm;
	maxz;
	maxm;
	SE_ZMEXTENT;
	/**************************/
	Build
	Modes
	<a>typedef enum {
  SE_Build_Polygons_From_All_Rings              = 0,
  SE_Build_Polygons_From_Clockwise_Rings        = 3,
  SE_Build_Polygons_From_CounterClockwise_Rings = 2,
  SE_Build_SimpleLines                          = 4,
  /* The following codes are obsolete, and are only included for backwards
     compatibility. */
  SE_Build_Clockwise_Polygons                   = 0,
  SE_Build_CounterClockwise_Polygons            = 1,
  SE_Build_Forward_Polygons                     = 2,
  SE_Build_Backward_Polygons                    = 3
} SE_BUILD_MODE;
/****************************/
/*** Shape Rotation Modes ***/
/****************************/
typedef enum {
  SE_DEFAULT_ROTATION,
  SE_LEFT_HAND_ROTATION,
  SE_RIGHT_HAND_ROTATION
} SE_ROTATION_TYPE;
/*******************************/
/***  Transformation Types   ***/
/*******************************/
typedef enum {
  SE_TRANSFORM_UNKNOWN = 0,
  SE_TRANSFORM_PLANER,
  SE_TRANSFORM_PROJECTIVE,
  SE_TRANSFORM_POLYNOMIAL,
  SE_TRANSFORM_CUSTOM
} SE_TRANSFORM_TYPE;
typedef enum {
  SE_POLYNOMIAL_1ST_ORDER = 0,
  SE_POLYNOMIAL_2ND_ORDER,
  SE_POLYNOMIAL_3RD_ORDER
} SE_POLYNOMIAL_TYPE;
/************************************************************
*** LOG FILE TYPES
************************************************************/
typedef int                 SE_LOG;
typedef struct _SE_LogFile  *SE_LOGINFO;
/************************************************************
*** SDE BLOB ATTRIBUTE STRUCTURE "SE_BLOB_INFO"
************************************************************/
typedef struct {
    LONG        blob_length;            /* LENGTH IN BYTES OF BLOB */
    CHAR        *blob_buffer;           /* LINEAR BUFFER OF BLOB DATA */
} SE_BLOB_INFO;
typedef struct {
    LONG        clob_length;            /* LENGTH IN BYTES OF CLOB */
    CHAR        *clob_buffer;           /* LINEAR BUFFER OF CLOB DATA */
} SE_CLOB_INFO;
typedef struct {
    LONG        nclob_length;           /* LENGTH IN BYTES OF NCLOB */ 
    SE_WCHAR    *nclob_buffer;          /* LINEAR BUFFER OF NCLOB DATA */
} SE_NCLOB_INFO;
/************************************************************
*** SDE COLUMN DEFINITION STRUCTURE "SE_COLUMN_DEF"
************************************************************/
typedef struct {
    CHAR  column_name[SE_MAX_COLUMN_LEN]; /* the column name */
    LONG  sde_type;                       /* the SDE data type */
    LONG  size;                           /* the size of the column values */
    SHORT decimal_digits;                 /* number of digits after decimal */
    BOOL  nulls_allowed;                  /* allow NULL values ? */
    SHORT row_id_type;                    /* column's use as table's row id */
} SE_COLUMN_DEF;
/************************************************************
*** SDE SSA INPUT DEFINITION STRUCTURE "SE_INPUT_DESC"
************************************************************/
typedef struct {
    LONG  sde_type;                       /* the SDE data type */
    LONG  size;                           /* the size of the input values */
} SE_INPUT_DESC;
/************************************************************
*** SDE SQL CONSTRUCTOR
************************************************************/
typedef struct {
    LONG       num_tables;    /* number of tables */
    CHAR       **tables;      /* table names */
    CHAR       *where;        /* where clause */
} SE_SQL_CONSTRUCT;
/************************************************************
*** SDE INDEX DESCRIPTION STRUCTURE "SE_INDEX_DEF"
************************************************************/
typedef struct {
    SHORT num_columns;                    /* number of columns */
    CHAR  **column_name;                  /* the column name */
    CHAR  index_name[SE_MAX_COLUMN_LEN];   /* the index name */
    BOOL  unique;                         /* unique index */
    BOOL  *ascending;                      /* ascending order */
} SE_INDEX_DEF;
/************************************************************
*** SDE POINT TABLE STRUCTURES
************************************************************/
typedef struct _SE_PointTable *SE_PTABLE;
typedef struct
{
    LFLOAT  x, y, z;
    ULONG   mask;
} SE_SNAPPED_POINT;
/************************************************************
*** SDE RELEASE/VERSION STRUCTURE
************************************************************/
typedef struct
{
    LONG    major;             /* Major release    */
    LONG    minor;             /* Minor release    */
    LONG    bug;               /* Bug version      */
    CHAR    desc[96];          /* Description      */
    LONG    release;           /* Release Number   */
    LONG    rel_low_supported; /* Lowest Release supported */
}   SE_RELEASE;
/************************************************************
*** SE_QUERYFROM JOIN TYPES
************************************************************/
typedef enum 
{
  SE_INNER_JOIN = 1
} SE_JOIN_TYPE;
/************************************************************
*** SE_QUERYFROM JOIN CONSTRAINTS
************************************************************/
typedef enum 
{
  SE_JOIN_ON = 1
} SE_JOIN_CONSTRAINT;
/************************************************************
*** SDE SHAPE HANDLE
************************************************************/
typedef struct _SE_ShapeRecord *SE_SHAPE;
/************************************************************
*** SDE ANNOTATION HANDLE
************************************************************/
typedef struct _SE_AnnoRecord *SE_ANNO;
/************************************************************
*** SDE EXTERNAL DATA FILE HANDLE 
************************************************************/
typedef struct _SE_ExternalFileInfo *SE_FILEINFO;
/************************************************************
*** SDE LAYER HANDLE
************************************************************/
typedef struct _SE_LayerRecord *SE_LAYERINFO;
/************************************************************
*** SDE METADATA HANDLE
************************************************************/
typedef struct _SE_MetaData *SE_METADATAINFO;
/************************************************************
*** SDE REGISTRATION HANDLE
************************************************************/
typedef struct _SE_Registration *SE_REGINFO;
/************************************************************
*** SDE VERSION HANDLE
************************************************************/
typedef struct _SE_VersionRecord *SE_VERSIONINFO;
/************************************************************
*** SDE STATE HANDLE
************************************************************/
typedef struct _SE_StateRecord *SE_STATEINFO;
/************************************************************
*** SDE LOCATOR HANDLE
************************************************************/
typedef struct _SE_Locator *SE_LOCATORINFO;
/************************************************************
*** SDE OBJECTLOCK HANDLE
************************************************************/
typedef struct _SE_ObjectLock *SE_OBJECTLOCKINFO;
/************************************************************
*** SDE CONNECTION HANDLE
************************************************************/
typedef struct _SE_ClientRecord *SE_CONNECTION;
/************************************************************
*** SDE STREAM HANDLE
************************************************************/
typedef struct _SE_StreamRecord *SE_STREAM;
/************************************************************
*** SDE UUID GENERATOR HANDLE
************************************************************/
typedef struct _SE_UUIDsysRecord *SE_UUIDGENERATOR;
/************************************************************
*** SDE XML TAG HANDLE
************************************************************/
typedef struct _SE_XmlTagInfo *SE_XMLTAGINFO;
/************************************************************
*** SDE XML INDEX HANDLE
************************************************************/
typedef struct _SE_XmlIndexInfo *SE_XMLINDEXINFO;
/************************************************************
*** SDE XML COLUMN HANDLE
************************************************************/
typedef struct _SE_XmlColumnInfo *SE_XMLCOLUMNINFO;
/************************************************************
*** SDE XML DOCUMENT HANDLE
************************************************************/
typedef struct _SE_XmlDoc       *SE_XMLDOC;
/************************************************************
*** SDE REGISTERED COLUMN HANDLE
************************************************************/
typedef struct _SE_RegisteredColumn *SE_COLUMNINFO;
/************************************************************
*** SDE SERVER INFORMATION HANDLE
************************************************************/
typedef struct _SE_ServerinfoRecord *SE_SERVERINFO;
/************************************************************
*** SDE XML CONSTRAINT HANDLE
************************************************************/
typedef struct _SE_XMLConstraint       *SE_XMLCONSTRAINT;
/************************************************************
*** SDE SHAPE SOURCE HANDLE
************************************************************/
typedef struct _SE_ShapeSource       *SE_SHAPESOURCE;
/************************************************************
*** SDE SPATIAL CONSTRAINT HANDLE
************************************************************/
typedef struct _SE_SpatialConstraint       *SE_SPATIALCONSTRAINT;
/************************************************************
*** SDE ATTRIBUTE CONSTRAINT HANDLE
************************************************************/
typedef struct _SE_AttributeConstraint     *SE_ATTRIBUTECONSTRAINT;
/************************************************************
*** SDE ATTRIBUTE CONSTRAINT HANDLE
************************************************************/
typedef struct _SE_RasterConstraintRecord  *SE_RASTERCONSTRAINT;
/************************************************************
*** SDE QUERY WHERE HANDLE
************************************************************/
typedef struct _SE_QueryWhere       *SE_QUERYWHERE;
/************************************************************
*** SDE QUERY TABLE HANDLE
************************************************************/
typedef struct _SE_QueryTable       *SE_QUERYTABLE;
/************************************************************
*** SDE QUERY FROM HANDLE
************************************************************/
typedef struct _SE_QueryFrom       *SE_QUERYFROM;
/************************************************************
*** SDE QUERY COLUMN HANDLE
************************************************************/
typedef struct _SE_QueryColumn       *SE_QUERYCOLUMN;
/************************************************************
*** SDE QUERY SELECT HANDLE
************************************************************/
typedef struct _SE_QuerySelect       *SE_QUERYSELECT;
/************************************************************
*** SDE QUERY HANDLE
************************************************************/
typedef struct _SE_QueryInfo         *SE_QUERYINFO;
/************************************************************
*** SDE TRANSFORM HANDLE
************************************************************/
typedef struct _SE_TransformRecord   *SE_TRANSFORMINFO;
/************************************************************
*** SDE SPATIAL FILTER STRUCTURE
************************************************************/
typedef struct {
  CHAR   table[SE_QUALIFIED_TABLE_NAME];    /* the spatial table name */
  CHAR   column[SE_MAX_COLUMN_LEN];         /* the spatial column name */
  LONG   filter_type;                       /* the type of spatial filter */
  union
  {
    SE_SHAPE    shape;                      /* a shape object */
    struct
    {
      LONG  id;                             /* A SDE_ROW_ID id for a shape */
      CHAR  table[SE_QUALIFIED_TABLE_NAME]; /* The shape's spatial table */
    } id;
  } filter;
  LONG  method;                            /* the search method to satisfy */
  BOOL  truth;         /* TRUE to pass the test, FALSE if it must NOT pass */
  char  *cbm_source ;                   /* set ONLY if the method is SM_CBM */
  UCHAR *cbm_object_code ;                      /* internal system use only */
} SE_FILTER;
/************************************************************
*** SDE STREAM SPECIFICATION
************************************************************/
typedef struct {
    LONG  min_size;            /* minimum size of buffer */
    LONG  max_size;            /* total size of buffer */
    LONG  min_objects;         /* minimum number of objects to put in buffer */
    LONG  max_array_size;      /* maximum number of elements per array */
    LONG  attribute_bytes;     /* attribute array buffer size */
    LONG  shape_point_bytes;   /* shape geometry array buffer size */
    LONG  blob_bytes;          /* obsolete as of ArcSDE 8.0.2 */
    LONG  max_bytes_per_blob;  /* obsolete as of ArcSDE 8.0.2 */
    LONG  stream_pool_size;    /* minimum # of streams to keep in the pool */
    LONG  raster_buf_size;     /* raster buffer size */
} SE_STREAM_SPEC;
/* Stream info structure passed to SSA at initialization time. */
typedef struct _SE_StreamInfo {
  SE_STREAM_SPEC   stream_spec;        /* Stream settings. */
  SE_LOG           logfile;            /* Output logfile handle. */
  BOOL             logfile_only;       /* Don't return rows, only log rows. */
  LONG             rowlock_action;     /* Automatic row locking rule. */
  const SE_FILTER  *spatial_filters;   /* Current spatial filters. */
  SHORT            num_filters;        /* Number of spatial filters. */
  BOOL             buffered_write;     /* Buffered I/O on or off. */
  LONG             state_id;           /* Current state id. */
  LONG             difference_id;      /* Current difference id. */
  LONG             difference_type;    /* Current difference type. */
} SE_STREAM_INFO;
/************************************************************
*** SDE STATISTICS STRUCTURES
************************************************************/
typedef struct {
    LONG        freq;          /* frequency of value */
    union {
        CHAR      *str_val;    /* SE_STRING_TYPE value */
        LONG      int_val;     /* SE_INTEGER_TYPE value */
        LFLOAT    double_val;  /* SE_DOUBLE_TYPE value */
        struct tm date_val;    /* SE_DATE_TYPE value */
        SE_WCHAR  *wstr_val;   /* SE_NSTRING_TYPE value */
    }uval;
}  SE_VALUE;
typedef struct {
    LONG        num_distinct;  /* number of distinct values */
    LONG        type;          /* value type */
    SE_VALUE    *values;       /* array of counts and union'ed values */
}  SE_DISTINCT;
typedef struct {
    LONG        count;         /* number of rows */
    LFLOAT      min;           /* minimum value */
    LFLOAT      average;       /* average value */
    LFLOAT      max;           /* maximum value */
    LFLOAT      std_dev;       /* standard deviation */
    SE_DISTINCT *distinct;     /* distinct info */
}  SE_STATS;
/************************************************************
*** SDE ERROR STRUCTURE
************************************************************/
typedef struct {
    LONG sde_error;                          /* SDE error code */
    LONG ext_error;                          /* DBMS or OS errno code */
    CHAR err_msg1[SE_MAX_MESSAGE_LENGTH];    /* DBMS or SE_error_get_string
                                                msg */
    CHAR err_msg2[SE_MAX_SQL_MESSAGE_LENGTH];/* Second DBMS error, if
                                                applicable */
} SE_ERROR;
/************************************************************
*** SDE FEATURE TABLE STRUCTURES
************************************************************/
typedef struct _SE_STableRec *SE_STABLE;
/************************************************************
*** SE_layer_statistics STRUCTURES
************************************************************/
typedef struct {
  LONG     features;            /* Features indexed by this grid level. */
  LONG     indexRecords;        /* Index records in this grid level. */
  LONG     groupCounts[8];      /* Index rec count by group: <=4,>4, >10, >25,
                                                      >50, >100, >250, >500. */
  LONG     maxFPG;              /* Maximum number of features per grid cell. */
  LONG     gridCells;           /* # of grid cells in this level. */
  LONG     featuresInside1;     /* # of features wholly inside one grid cell. */
} SE_GRID_STATS;
typedef struct {
  CHAR          table[SE_QUALIFIED_TABLE_NAME]; /* Spatial table. */
  CHAR          column[SE_MAX_COLUMN_LEN];      /* Spatial column. */
  LONG          nGrids;                         /* # of spatial index grids. */
  SE_GRID_STATS grids[3];                       /* Individual grid stats. */
} SE_SI_STATS;
typedef struct {                 /*** Layer statistics structure. ***/
   LONG        layer_id;           /* Layer id. */
   LONG        NILs;               /* # of Nil shapes in layer. */
   LONG        POINTs,MultiPOINTs; /* # of Point and Multipoints in layer. */
   LONG        LINEs,MultiLINEs;   /* # of Lines & Multilines in layer. */
   LONG        SIMPLE_LINEs,MultiSIMPLE_LINEs; /* # of Simple Lines &
                                                  Simple Multilines. */
   LONG        AREAs,MultiAREAs;   /* # of Area and Multiareas in layer. */
   LONG        TotalFeatures;      /* Total # of shapes in layer. */
   SE_ENVELOPE bounds;             /* Layer extrema. */
   LONG        lastModified;       /* POSIX time_t date last modified.*/
   LONG        minFid,maxFid;      /* Minimum and maximum IDs in layer. */
   LONG        minPoints,maxPoints;/* Min/max # of pts in layer shapes. */
   LFLOAT      minArea,maxArea;    /* Min and max area shape areas. */
   LFLOAT      minLength,maxLength;/* Min and max linear shape lengths. */
   LFLOAT      averagePoints;      /* Average number of points/shape. */
   LFLOAT      averageArea;        /* Average area/shape. */
   LFLOAT      averageLength;      /* Average length/shape. */
} SE_LAYER_STATS;
/************************************************************
*** SDE LAYER LOCKS STRUCTURES
************************************************************/
typedef struct {
   CHAR          username[SE_MAX_OWNER_LEN + 4];
   LONG          lock_type;
   SE_ENVELOPE   bounds;
} SE_LAYER_LOCKS;
/************************************************************
*** SDE TABLE LOCKS STRUCTURES
************************************************************/
typedef struct {
   CHAR          username[SE_MAX_OWNER_LEN + 4];
   LONG          lock_type;
} SE_TABLE_LOCK;
/************************************************************
*** SDE VERSION LOCK STRUCTURES
************************************************************/
typedef struct {
   CHAR          username[SE_MAX_OWNER_LEN + 4];
   LONG          lock_mode;
} SE_VERSION_LOCK;
/************************************************************
*** SDE INSTANCE STRUCTURES
************************************************************/
typedef struct {
  SE_RELEASE   version;     /* Release version of specified instance.       */
  LONG         connections; /* Number of current connections to SDE on node.*/
  LONG         system_mode; /* Accepting connections or blocking.           */
} SE_INSTANCE_STATUS;
typedef struct {
    LONG svrpid;                           /* Forked Server Task pid */
    LONG cstime;                           /* Connection Start time */
    BOOL xdr_needed;                       /* Use XDR Boolean */
    CHAR sysname[SE_MAX_OWNER_LEN + 1];    /* Client Operating System  Name */
    CHAR nodename[SE_MAX_OWNER_LEN + 1];   /* Client Host Node Name */
    CHAR username[SE_MAX_OWNER_LEN + 1];   /* User Name */
} SE_INSTANCE_USER;

/* For future developments, please do not use the structure
   SE_INSTANCE_CONFIG and API SE_instance_configuration() for
   instance/server configuration info. They are provided only for
   backward compatibility and will be deprecated for the post
   9.0 releases. Instead, please use SE_SERVERINFO structure
   and SE_instance_serverconfig_get_info() API respectively. */
typedef struct {
        LONG max_connections;
        LONG max_locks;
        LONG max_state_locks;
        LONG max_table_locks;
        LONG max_object_locks;
        LONG child_timeout;
        LONG min_net_block_size;
        LONG max_net_block_size;
        LONG min_net_obj_count;
        LONG max_mem_dissolve;
        LONG max_blob_size;
        LONG max_mem_blob;
        LONG auto_commit_freq;
        LONG max_init_feats;
        LONG max_distinct;
        LONG max_streams;
        LONG stream_pool_size;
        LONG max_layers;
        LONG max_registrations;
        LONG max_rastercolumns;
        LONG shape_point_buf_size;
        LONG attribute_buf_size;
        LONG blob_buf_size;
        LONG raster_buf_size;
        LONG max_array_size;
        LONG max_array_bytes;
        LONG max_time_diff;
        CHAR home_path[SE_MAX_PATH_LEN];        /* PATH TO SDE HOME DIR */
        CHAR log_path[SE_MAX_PATH_LEN];         /* PATH TO SDE LOG FILE DIR */
        CHAR tmp_path[SE_MAX_PATH_LEN];         /* PATH TO SDE TEMP FILE DIR */
        LONG dbms_id;                           /* Underlying DBMS ID. */ 
        LONG dbms_properties;                   /* DBMS properties. */ 
        LONG client_count;                      /* Connection count */
        BOOL state_caching;
        BOOL tcp_keepalive;
        BOOL instance_read_only;
        LONG default_precision;
        BOOL state_autolocking;
} SE_INSTANCE_CONFIG;
typedef struct {
    LONG    pid;
    LONG    rcount;     /* TOT # READS BY PROCESS */
    LONG    wcount;     /* TOT # WRITES BY PROCESS */
    LONG    opcount;    /* TOT # F OPERATIONS BY PROCESS */
    LONG    numlocks;   /* TOT # F LOCKS HELD BY THIS PID */
    LONG    fb_partial; /* TOT # F PARTIAL SHAPES SHIPPED BY THIS PROCESS */
    LONG    fb_count;   /* TOT # F BUFFERS LOADED BY THIS PROCESS */
    LONG    fb_fcount;  /* TOT # F SHAPES BUFFERED BY THIS PROCESS */
    LONG    fb_kbytes;  /* TOT # F 1K BYTES BUFFERED DATA BY THIS PROCESS */
} SE_INSTANCE_STATS;
typedef struct {
    LONG        pid;    
    SHORT       layer_id;
    LONG        lock_type;
} SE_INSTANCE_LOCK;
typedef struct _SE_InstanceStateLock {
  LONG   pid;       /* Gsrvr process id that holds this lock. */
  LONG   state_id;  /* State being locked. */
  SHORT  lock_type; /* Shared, exclusive or table. */
} SE_INSTANCE_STATE_LOCK;
typedef struct _SE_InstanceTableLock {
  LONG   pid;       /* Gsrvr process id that holds this lock. */
  LONG   registration_id;  /* table being locked. */
  SHORT  lock_type; /* Shared, exclusive or table. */
} SE_INSTANCE_TABLE_LOCK;
typedef struct _SE_InstanceVersionLock {
  LONG   pid;         /* Gsrvr process id that holds this lock. */
  LONG   version_id;  /* Version being locked. */
  SHORT  lock_mode;   /* Shared or exclusive. */
} SE_INSTANCE_VERSION_LOCK;
/************************************************************
*** Struct to receive shape comparison info.
************************************************************/
typedef struct {
        LONG    primary_entity_type ;
        LONG    secondary_entity_type ;
        LONG    mask ;
        LONG    sectdims[3][3] ;
} SE_CBM_INFO ;
/************************************************************
*** Struct to receive dbtune table error data.
************************************************************/
typedef struct {
  CHAR    keyword[SE_MAX_CONFIG_KEYWORD_LEN];
  CHAR    parameter_name[SE_MAX_CONFIG_KEYWORD_LEN];
  CHAR    config_string[SE_MAX_CONFIG_STR_LEN];
} SE_DBTUNE;
/************************************************************
*** Struct to receive server_config table error data.
************************************************************/
typedef struct {
    CHAR prop_name [SE_MAX_PROP_NAME_LEN];
    CHAR char_prop_value[SE_MAX_PROP_VAL_LEN];
    LONG num_prop_value;
} SE_SVR_CONFIG_ERR;
/*****************************************************************************
**  Spatial Database Engine API Prototypes
**
*****************************************************************************/
#ifdef WIN32
#define SDEAPI __stdcall
#else
#define SDEAPI
#endif
/*
 * ==========================================================================
 *
 * THE FOLLOWING FUNCTIONS ARE FOR PUBLIC USE.
 *
 * ==========================================================================
 */
/* Annotation object functions */
extern LONG SDEAPI SE_anno_create             (SE_ANNO        *anno);
extern LONG SDEAPI SE_anno_duplicate(          const SE_ANNO  src_anno, 
                                               SE_ANNO        tgt_anno);
extern void SDEAPI SE_anno_free               (SE_ANNO        anno);
extern LONG SDEAPI SE_anno_get_alignment      (const SE_ANNO  anno,
                                               LONG *alignment);
extern LONG SDEAPI SE_anno_get_justification  (const SE_ANNO  anno,
                                               LONG           *justification);
extern LONG SDEAPI SE_anno_get_leader         (const SE_ANNO  anno,
                                               SE_SHAPE       leader);
extern LONG SDEAPI SE_anno_get_level          (const SE_ANNO  anno,
                                               LONG           *level);
extern LONG SDEAPI SE_anno_get_offset         (const SE_ANNO  anno,
                                               LFLOAT         *x_offset,
                                               LFLOAT         *y_offset);
extern LONG SDEAPI SE_anno_get_placement      (const SE_ANNO  anno,
                                               SE_SHAPE       placement);
extern LONG SDEAPI SE_anno_get_symbol         (const SE_ANNO  anno,
                  &nbs