00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __ADIF_H
00011 #define __ADIF_H
00012
00013 #include <stdio.h>
00014 #include <stdlib.h>
00015
00024 #define TQSL_ADIF_FIELD_NAME_LENGTH_MAX 64
00025 #define TQSL_ADIF_FIELD_SIZE_LENGTH_MAX 10
00026 #define TQSL_ADIF_FIELD_TYPE_LENGTH_MAX 1
00027
00028 #ifndef TQSL_ADIF_BOOLEAN
00029 typedef enum { TQSL_FALSE, TQSL_TRUE } TQSL_ADIF_BOOLEAN;
00030 #endif
00031
00032 typedef void * tQSL_ADIF;
00033
00035 typedef enum
00036 {
00037 TQSL_ADIF_RANGE_TYPE_NONE,
00038 TQSL_ADIF_RANGE_TYPE_MINMAX,
00039 TQSL_ADIF_RANGE_TYPE_ENUMERATION
00040 } TQSL_ADIF_RANGE_TYPE;
00041
00043 typedef enum
00044 {
00045 TQSL_ADIF_GET_FIELD_SUCCESS,
00046 TQSL_ADIF_GET_FIELD_NO_NAME_MATCH,
00047 TQSL_ADIF_GET_FIELD_NO_TYPE_MATCH,
00048 TQSL_ADIF_GET_FIELD_NO_RANGE_MATCH,
00049 TQSL_ADIF_GET_FIELD_NO_ENUMERATION_MATCH,
00050 TQSL_ADIF_GET_FIELD_NO_RESULT_ALLOCATION,
00051 TQSL_ADIF_GET_FIELD_NAME_LENGTH_OVERFLOW,
00052 TQSL_ADIF_GET_FIELD_DATA_LENGTH_OVERFLOW,
00053 TQSL_ADIF_GET_FIELD_SIZE_OVERFLOW,
00054 TQSL_ADIF_GET_FIELD_TYPE_OVERFLOW,
00055 TQSL_ADIF_GET_FIELD_ERRONEOUS_STATE,
00056 TQSL_ADIF_GET_FIELD_EOF
00057 } TQSL_ADIF_GET_FIELD_ERROR;
00058
00060 typedef struct
00061 {
00062 char name[TQSL_ADIF_FIELD_NAME_LENGTH_MAX + 1];
00063 char type[TQSL_ADIF_FIELD_TYPE_LENGTH_MAX + 1];
00064 TQSL_ADIF_RANGE_TYPE rangeType;
00065 unsigned int max_length;
00066 long signed min_value;
00067 long signed max_value;
00068 const char **enumStrings;
00069 void *userPointer;
00070 } tqsl_adifFieldDefinitions;
00071
00073 typedef struct
00074 {
00075 char name[TQSL_ADIF_FIELD_NAME_LENGTH_MAX + 1];
00076 char size[TQSL_ADIF_FIELD_SIZE_LENGTH_MAX + 1];
00077 char type[TQSL_ADIF_FIELD_TYPE_LENGTH_MAX + 1];
00078 unsigned char *data;
00079 unsigned int adifNameIndex;
00080 void *userPointer;
00081 } tqsl_adifFieldResults;
00082
00083
00084
00085
00086 #ifdef __cplusplus
00087 extern "C" {
00088 #endif
00089
00091 DLLEXPORT char *tqsl_adifGetError( TQSL_ADIF_GET_FIELD_ERROR status );
00092
00094 DLLEXPORT int tqsl_beginADIF(tQSL_ADIF *adifp, const char *filename);
00095
00112 DLLEXPORT int tqsl_getADIFField(tQSL_ADIF adif, tqsl_adifFieldResults *field, TQSL_ADIF_GET_FIELD_ERROR *status,
00113 const tqsl_adifFieldDefinitions *adifFields, const char * const *typesDefined,
00114 unsigned char *(*allocator)(size_t) );
00115
00117 DLLEXPORT int tqsl_getADIFLine(tQSL_ADIF adif, int *lineno);
00118
00120 DLLEXPORT int tqsl_endADIF(tQSL_ADIF *adifp);
00121
00127 DLLEXPORT int tqsl_adifMakeField(const char *fieldname, char type, const unsigned char *value, int len,
00128 unsigned char *buf, int buflen);
00129
00130 #ifdef __cplusplus
00131 }
00132 #endif
00133
00136 #endif