| 23 |
|
typedef struct s_idf_field { |
| 24 |
|
struct s_idf_field *next; /* next in parameter list */ |
| 25 |
|
char *rem; /* string following argument */ |
| 26 |
< |
char arg[2]; /* argument (extends struct) */ |
| 26 |
> |
char val[2]; /* value (extends struct) */ |
| 27 |
|
} IDF_FIELD; |
| 28 |
|
|
| 29 |
|
/* Input Data File parameter */ |
| 31 |
|
const char *pname; /* parameter name (type) */ |
| 32 |
|
struct s_idf_parameter *pnext; /* next parameter same type */ |
| 33 |
|
struct s_idf_parameter *dnext; /* next parameter in IDF */ |
| 34 |
+ |
int nfield; /* field count */ |
| 35 |
|
IDF_FIELD *flist; /* field list */ |
| 36 |
|
char rem[1]; /* comment (extends struct) */ |
| 37 |
|
} IDF_PARAMETER; |
| 41 |
|
char *hrem; /* header remarks */ |
| 42 |
|
IDF_PARAMETER *pfirst; /* first parameter in file */ |
| 43 |
|
IDF_PARAMETER *plast; /* last parameter loaded */ |
| 44 |
< |
LUTAB ptab; /* parameter table */ |
| 44 |
> |
LUTAB ptab; /* parameter hash table */ |
| 45 |
|
} IDF_LOADED; |
| 46 |
|
|
| 47 |
< |
/* Create a new parameter with empty field list (comment optional) */ |
| 47 |
> |
/* Create a new parameter with empty field list (comment & prev optional) */ |
| 48 |
|
extern IDF_PARAMETER *idf_newparam(IDF_LOADED *idf, const char *pname, |
| 49 |
< |
const char *comm, |
| 49 |
< |
IDF_PARAMETER *prev); |
| 49 |
> |
const char *comm, IDF_PARAMETER *prev); |
| 50 |
|
|
| 51 |
|
/* Add a field to the given parameter and follow with the given text */ |
| 52 |
|
extern int idf_addfield(IDF_PARAMETER *param, const char *fval, |
| 53 |
|
const char *comm); |
| 54 |
|
|
| 55 |
< |
/* Delete the specified parameter from our IDF */ |
| 55 |
> |
/* Retrieve the indexed field from parameter (first field index is 1) */ |
| 56 |
> |
extern IDF_FIELD *idf_getfield(IDF_PARAMETER *param, int fn); |
| 57 |
> |
|
| 58 |
> |
/* Delete the specified parameter from the IDF */ |
| 59 |
|
extern int idf_delparam(IDF_LOADED *idf, IDF_PARAMETER *param); |
| 60 |
|
|
| 61 |
+ |
/* Move the specified parameter to the given position in the IDF */ |
| 62 |
+ |
extern int idf_movparam(IDF_LOADED *idf, IDF_PARAMETER *param, |
| 63 |
+ |
IDF_PARAMETER *prev); |
| 64 |
+ |
|
| 65 |
|
/* Get a named parameter list */ |
| 66 |
|
extern IDF_PARAMETER *idf_getparam(IDF_LOADED *idf, const char *pname); |
| 67 |
|
|
| 71 |
|
/* Initialize an IDF struct */ |
| 72 |
|
extern IDF_LOADED *idf_create(const char *hdrcomm); |
| 73 |
|
|
| 74 |
+ |
/* Add comment(s) to header */ |
| 75 |
+ |
extern int idf_add2hdr(IDF_LOADED *idf, const char *hdrcomm); |
| 76 |
+ |
|
| 77 |
|
/* Load an Input Data File */ |
| 78 |
|
extern IDF_LOADED *idf_load(const char *fname); |
| 79 |
|
|
| 80 |
|
/* Write a parameter and fields to an open file */ |
| 81 |
< |
int idf_writeparam(IDF_PARAMETER *param, FILE *fp); |
| 81 |
> |
int idf_writeparam(IDF_PARAMETER *param, FILE *fp, |
| 82 |
> |
int incl_comm); |
| 83 |
|
|
| 84 |
|
/* Write out an Input Data File */ |
| 85 |
< |
extern int idf_write(IDF_LOADED *idf, const char *fname); |
| 85 |
> |
extern int idf_write(IDF_LOADED *idf, const char *fname, |
| 86 |
> |
int incl_comm); |
| 87 |
|
|
| 88 |
|
/* Free a loaded IDF */ |
| 89 |
|
extern void idf_free(IDF_LOADED *idf); |