#ifndef _GG_STRUCTS_H
#ifndef DOXYGEN_SHOULD_SKIP_THIS
#define _GG_STRUCTS_H
#endif
#include <sys/types.h>
#ifdef __cplusplus
extern "C"
{
#endif
typedef struct gaiaPointStruct
{
double X;
double Y;
double Z;
double M;
int DimensionModel;
struct gaiaPointStruct *Next;
struct gaiaPointStruct *Prev;
} gaiaPoint;
typedef gaiaPoint *gaiaPointPtr;
typedef struct gaiaDynamicLineStruct
{
int Error;
int Srid;
gaiaPointPtr First;
gaiaPointPtr Last;
} gaiaDynamicLine;
typedef gaiaDynamicLine *gaiaDynamicLinePtr;
typedef struct gaiaLinestringStruct
{
int Points;
double *Coords;
double MinX;
double MinY;
double MaxX;
double MaxY;
int DimensionModel;
struct gaiaLinestringStruct *Next;
} gaiaLinestring;
typedef gaiaLinestring *gaiaLinestringPtr;
typedef struct gaiaRingStruct
{
int Points;
double *Coords;
int Clockwise;
double MinX;
double MinY;
double MaxX;
double MaxY;
int DimensionModel;
struct gaiaRingStruct *Next;
struct gaiaPolygonStruct *Link;
} gaiaRing;
typedef gaiaRing *gaiaRingPtr;
typedef struct gaiaPolygonStruct
{
gaiaRingPtr Exterior;
int NumInteriors;
gaiaRingPtr Interiors;
int NextInterior;
double MinX;
double MinY;
double MaxX;
double MaxY;
int DimensionModel;
struct gaiaPolygonStruct *Next;
} gaiaPolygon;
typedef gaiaPolygon *gaiaPolygonPtr;
typedef struct gaiaGeomCollStruct
{
int Srid;
char endian_arch;
char endian;
const unsigned char *blob;
unsigned long size;
unsigned long offset;
gaiaPointPtr FirstPoint;
gaiaPointPtr LastPoint;
gaiaLinestringPtr FirstLinestring;
gaiaLinestringPtr LastLinestring;
gaiaPolygonPtr FirstPolygon;
gaiaPolygonPtr LastPolygon;
double MinX;
double MinY;
double MaxX;
double MaxY;
int DimensionModel;
int DeclaredType;
struct gaiaGeomCollStruct *Next;
} gaiaGeomColl;
typedef gaiaGeomColl *gaiaGeomCollPtr;
typedef struct gaiaPreRingStruct
{
gaiaLinestringPtr Line;
int AlreadyUsed;
struct gaiaPreRingStruct *Next;
} gaiaPreRing;
typedef gaiaPreRing *gaiaPreRingPtr;
typedef struct gaiaValueStruct
{
short Type;
char *TxtValue;
sqlite3_int64 IntValue;
double DblValue;
} gaiaValue;
typedef gaiaValue *gaiaValuePtr;
typedef struct gaiaDbfFieldStruct
{
char *Name;
unsigned char Type;
int Offset;
unsigned char Length;
unsigned char Decimals;
gaiaValuePtr Value;
struct gaiaDbfFieldStruct *Next;
} gaiaDbfField;
typedef gaiaDbfField *gaiaDbfFieldPtr;
typedef struct gaiaDbfListStruct
{
int RowId;
gaiaGeomCollPtr Geometry;
gaiaDbfFieldPtr First;
gaiaDbfFieldPtr Last;
} gaiaDbfList;
typedef gaiaDbfList *gaiaDbfListPtr;
typedef struct gaiaDbfStruct
{
int endian_arch;
int Valid;
char *Path;
FILE *flDbf;
gaiaDbfListPtr Dbf;
unsigned char *BufDbf;
int DbfHdsz;
int DbfReclen;
int DbfSize;
int DbfRecno;
void *IconvObj;
char *LastError;
} gaiaDbf;
typedef gaiaDbf *gaiaDbfPtr;
typedef struct gaiaShapefileStruct
{
int endian_arch;
int Valid;
int ReadOnly;
char *Path;
FILE *flShx;
FILE *flShp;
FILE *flDbf;
int Shape;
gaiaDbfListPtr Dbf;
unsigned char *BufDbf;
int DbfHdsz;
int DbfReclen;
int DbfSize;
int DbfRecno;
unsigned char *BufShp;
int ShpBfsz;
int ShpSize;
int ShxSize;
double MinX;
double MinY;
double MaxX;
double MaxY;
void *IconvObj;
char *LastError;
int EffectiveType;
int EffectiveDims;
} gaiaShapefile;
typedef gaiaShapefile *gaiaShapefilePtr;
typedef struct gaiaOutBufferStruct
{
char *Buffer;
int WriteOffset;
int BufferSize;
int Error;
} gaiaOutBuffer;
typedef gaiaOutBuffer *gaiaOutBufferPtr;
#ifndef OMIT_ICONV
#define VRTTXT_FIELDS_MAX 65535
#define VRTTXT_BLOCK_MAX 65535
#define VRTTXT_TEXT 1
#define VRTTXT_INTEGER 2
#define VRTTXT_DOUBLE 3
#define VRTTXT_NULL 4
struct vrttxt_line
{
off_t offset;
int len;
int field_offsets[VRTTXT_FIELDS_MAX];
int num_fields;
int error;
};
struct vrttxt_row
{
int line_no;
off_t offset;
int len;
int num_fields;
};
struct vrttxt_row_block
{
struct vrttxt_row rows[VRTTXT_BLOCK_MAX];
int num_rows;
int min_line_no;
int max_line_no;
struct vrttxt_row_block *next;
};
struct vrttxt_column_header
{
char *name;
int type;
};
typedef struct vrttxt_reader
{
struct vrttxt_column_header columns[VRTTXT_FIELDS_MAX];
FILE *text_file;
void *toUtf8;
char field_separator;
char text_separator;
char decimal_separator;
int first_line_titles;
int error;
struct vrttxt_row_block *first;
struct vrttxt_row_block *last;
struct vrttxt_row **rows;
int num_rows;
int line_no;
int max_fields;
int current_buf_sz;
int current_buf_off;
char *line_buffer;
char *field_buffer;
int field_offsets[VRTTXT_FIELDS_MAX];
int field_lens[VRTTXT_FIELDS_MAX];
int max_current_field;
int current_line_ready;
} gaiaTextReader;
typedef gaiaTextReader *gaiaTextReaderPtr;
#endif
typedef struct gaiaLayerExtentInfos
{
int Count;
double MinX;
double MinY;
double MaxX;
double MaxY;
} gaiaLayerExtent;
typedef gaiaLayerExtent *gaiaLayerExtentPtr;
typedef struct gaiaLayerAuthInfos
{
int IsReadOnly;
int IsHidden;
} gaiaLayerAuth;
typedef gaiaLayerAuth *gaiaLayerAuthPtr;
typedef struct gaiaAttributeFieldMaxSizeInfos
{
int MaxSize;
} gaiaAttributeFieldMaxSize;
typedef gaiaAttributeFieldMaxSize *gaiaAttributeFieldMaxSizePtr;
typedef struct gaiaAttributeFieldIntRangeInfos
{
sqlite3_int64 MinValue;
sqlite3_int64 MaxValue;
} gaiaAttributeFieldIntRange;
typedef gaiaAttributeFieldIntRange *gaiaAttributeFieldIntRangePtr;
typedef struct gaiaAttributeFieldDoubleRangeInfos
{
double MinValue;
double MaxValue;
} gaiaAttributeFieldDoubleRange;
typedef gaiaAttributeFieldDoubleRange *gaiaAttributeFieldDoubleRangePtr;
typedef struct gaiaLayerAttributeFieldInfos
{
int Ordinal;
char *AttributeFieldName;
int NullValuesCount;
int IntegerValuesCount;
int DoubleValuesCount;
int TextValuesCount;
int BlobValuesCount;
gaiaAttributeFieldMaxSizePtr MaxSize;
gaiaAttributeFieldIntRangePtr IntRange;
gaiaAttributeFieldDoubleRangePtr DoubleRange;
struct gaiaLayerAttributeFieldInfos *Next;
} gaiaLayerAttributeField;
typedef gaiaLayerAttributeField *gaiaLayerAttributeFieldPtr;
typedef struct gaiaVectorLayerItem
{
int LayerType;
char *TableName;
char *GeometryName;
int Srid;
int GeometryType;
int Dimensions;
int SpatialIndex;
gaiaLayerExtentPtr ExtentInfos;
gaiaLayerAuthPtr AuthInfos;
gaiaLayerAttributeFieldPtr First;
gaiaLayerAttributeFieldPtr Last;
struct gaiaVectorLayerItem *Next;
} gaiaVectorLayer;
typedef gaiaVectorLayer *gaiaVectorLayerPtr;
typedef struct gaiaVectorLayersListStr
{
gaiaVectorLayerPtr First;
gaiaVectorLayerPtr Last;
gaiaVectorLayerPtr Current;
} gaiaVectorLayersList;
typedef gaiaVectorLayersList *gaiaVectorLayersListPtr;
#ifdef __cplusplus
}
#endif
#endif