mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-24 00:47:57 -05:00
81 lines
2.3 KiB
C++
81 lines
2.3 KiB
C++
/***************************************************************************
|
|
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;
|
|
};
|