Main Page | Modules | Class List | File List | File Members

adif.h

00001 /***************************************************************************
00002                           adif.h  -  description
00003                              -------------------
00004     begin                : Wed May 15 2002
00005     copyright            : (C) 2002 by ARRL
00006     email                : MSimcik@localhost.localdomain
00007     revision             : $Id: adif_8h-source.html,v 1.6 2005/02/22 13:16:07 ke3z Exp $
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 /* function prototypes */
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 /* __ADIF_H */

Generated on Tue Feb 22 08:15:36 2005 for TrustedQSL Library API by doxygen 1.3.4