/*************************************************************************** qgsbdfbase.h - Dbase IV Header -------------------------------------- Date : 25-Dec-2003 Copyright : (C) 2003 by Gary E.Sherman email : sherman at mrcc.com *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* $Id$ */ // Dbase header structure struct DbaseHeader { unsigned char valid_dbf; char year; char month; char day; long num_recs; short size_hdr; short size_rec; char reserved[3]; char lan[13]; char reserved2[4]; }; // Field descriptor array - defines a field and its attributes (type, // length, etc. struct FieldDescriptorArray { char field_name[11]; char field_type; long field_addr; /* used only in memory */ unsigned char field_length; unsigned char field_decimal; char reserved[2]; char work_area; char lan[2]; char set_fields; char reserved2[8]; }; // Typedefs typedef struct FieldDescriptorArray Fda; typedef struct DbaseHeader DbH; // Field Array class class DbaseFieldArray { public: DbaseFieldArray(int numberOfFields); void addField(char *name, char type, unsigned char length, unsigned char decimal); int getNumFields(); Fda *getField(int index); private: struct FieldDescriptorArray *fda; unsigned int fieldCount; int numFields; }; // Dbase file class (incomplete implementation) class DbaseFile { public: DbaseFile(char *fileName, int numRecords, int recordSize, DbaseFieldArray &fda); void writeHeader(); void writeFieldDescriptors(); void writeRecord(const char *data); void closeFile(); struct DbaseHeader header; private: char * fileName; int numRecords; int recordSize; DbaseFieldArray fieldArray; long pos; bool firstRecord; };