5#include "tpcclibConfig.h"
33 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
38 if(verbose>0) printf(
"%s():\n", __func__);
39 if(par==NULL || par->
tacNr<1 || par->
parNr<1) {
53 ret=
iftPut(ift,
"content",
"parameters", 1, NULL);
55 statusSet(status, __func__, __FILE__, __LINE__, ret);
60 sprintf(tmp,
"%d", par->
parNr);
61 ret=
iftPut(ift,
"par_nr", tmp, 1, NULL);
68 if(strcasecmp(par->
h.
item[i].
key,
"model")==0)
continue;
69 if(strcasecmp(par->
h.
item[i].
key,
"dataNr")==0)
continue;
70 if(strcasecmp(par->
h.
item[i].
key,
"fitNr")==0)
continue;
71 if(strcasecmp(par->
h.
item[i].
key,
"fit_start")==0)
continue;
72 if(strcasecmp(par->
h.
item[i].
key,
"fit_end")==0)
continue;
77 statusSet(status, __func__, __FILE__, __LINE__, ret);
82 sprintf(tmp,
"%d", par->
r[0].
model);
83 iftPut(ift,
"model", tmp, 0, NULL);
86 sprintf(tmp,
"%d", par->
r[0].
dataNr);
87 iftPut(ift,
"data_nr", tmp, 0, NULL);
90 sprintf(tmp,
"%d", par->
r[0].
fitNr);
91 iftPut(ift,
"fit_nr", tmp, 0, NULL);
94 sprintf(tmp,
"%g min", par->
r[0].
start);
96 iftPut(ift,
"fit_start", tmp, 0, NULL);
97 sprintf(tmp,
"%g min", par->
r[0].
end);
99 iftPut(ift,
"fit_end", tmp, 0, NULL);
104 for(ri=0; ri<par->
tacNr; ri++) {
105 sprintf(tmp,
"%d", 1+ri);
106 iftPut(ift,
"parameter-set", tmp, 0, NULL);
109 sprintf(tmp,
"%d", par->
r[ri].
model);
110 iftPut(ift,
"model", tmp, 0, NULL);
113 sprintf(tmp,
"%d", par->
r[ri].
dataNr);
114 iftPut(ift,
"dataNr", tmp, 0, NULL);
117 sprintf(tmp,
"%d", par->
r[ri].
fitNr);
118 iftPut(ift,
"fitNr", tmp, 0, NULL);
121 sprintf(tmp,
"%g min", par->
r[ri].
start);
123 iftPut(ift,
"fit_start", tmp, 0, NULL);
124 sprintf(tmp,
"%g min", par->
r[ri].
end);
126 iftPut(ift,
"fit_end", tmp, 0, NULL);
128 if(!isnan(par->
r[ri].
wss)) {
129 sprintf(tmp,
"%g", par->
r[ri].
wss);
131 iftPut(ift,
"wss", tmp, 0, NULL);
133 for(pi=0; pi<par->
parNr; pi++)
if(!isnan(par->
r[ri].
p[pi])) {
135 else sprintf(tmp,
"%g %s", par->
r[ri].
p[pi],
unitName(par->
n[pi].
unit));
138 if(!isnan(par->
r[ri].
sd[pi])) {
139 sprintf(tmp,
"%g", par->
r[ri].
sd[pi]);
141 iftPut(ift,
"SD", tmp, 0, NULL);
143 if(!isnan(par->
r[ri].
cl1[pi])) {
144 sprintf(tmp,
"%g", par->
r[ri].
cl1[pi]);
146 iftPut(ift,
"95%CL1", tmp, 0, NULL);
148 if(!isnan(par->
r[ri].
cl2[pi])) {
149 sprintf(tmp,
"%g", par->
r[ri].
cl2[pi]);
151 iftPut(ift,
"95%CL2", tmp, 0, NULL);
157 statusSet(status, __func__, __FILE__, __LINE__, ret);
175 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
180 if(verbose>0) printf(
"%s()\n", __func__);
181 if(par==NULL || par->
tacNr<1 || par->
parNr<1) {
216 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
221 if(verbose>0) printf(
"%s()\n", __func__);
222 if(ift==NULL || ift->
keyNr<1) {
228 if(strcasecmp(ift->
item[0].
key,
"content") ||
229 strcasecmp(ift->
item[0].
value,
"parameters")
235 int ret, parNr, tacNr;
241 if(verbose>5) printf(
"parNr := %d\n", parNr);
248 if(verbose>5) printf(
"tacNr := %d\n", tacNr);
254 statusSet(status, __func__, __FILE__, __LINE__, ret);
264 if(ift->
item[i].
key==NULL || strlen(ift->
item[i].
key)<1)
continue;
266 if(strcasecmp(ift->
item[i].
key,
"parameter-set")==0)
break;
268 if(strcasecmp(ift->
item[i].
key,
"par_nr")==0)
continue;
269 if(strcasecmp(ift->
item[i].
key,
"format")==0)
continue;
270 if(strcasecmp(ift->
item[i].
key,
"tac_nr")==0)
continue;
275 statusSet(status, __func__, __FILE__, __LINE__, ret);
280 int i, pi=0, ri=0; ret=0;
285 printf(
"i=%d key='%s' value='%s'\n",
288 if(strcasecmp(ift->
item[i].
key,
"parameter-set")==0) {
289 ri++; pi=0;
if(ri<par->tacNr)
continue;
else break;}
291 if(strcasecmp(ift->
item[i].
key,
"tac_name")==0) {
296 if(strcasecmp(ift->
item[i].
key,
"wss")==0) {
300 if(strcasecmp(ift->
item[i].
key,
"model")==0) {
304 if(strcasecmp(ift->
item[i].
key,
"data_nr")==0) {
308 if(strcasecmp(ift->
item[i].
key,
"fit_nr")==0) {
312 if(strcasecmp(ift->
item[i].
key,
"fit_start")==0) {
316 if(strcasecmp(ift->
item[i].
key,
"fit_end")==0) {
321 if(strcasecmp(ift->
item[i].
key,
"SD")==0) {
325 if(strcasecmp(ift->
item[i].
key,
"95%CL1")==0) {
329 if(strcasecmp(ift->
item[i].
key,
"95%CL2")==0) {
334 if(pi>=par->
parNr) {ret++;
break;}
346 statusSet(status, __func__, __FILE__, __LINE__, ret);
int iftPut(IFT *ift, const char *key, const char *value, char comment, TPCSTATUS *status)
int iftFindNrOfKeys(IFT *ift, const char *key)
int iftFindKey(IFT *ift, const char *key, int start_index)
int iftGetUInt(IFT *ift, int index, unsigned int *v)
int iftGetDouble(IFT *ift, int index, double *v)
int iftGetInt(IFT *ift, int index, int *v)
int iftWrite(IFT *ift, FILE *fp, TPCSTATUS *status)
int parIsFitRange(PAR *par)
int parAllocate(PAR *par, int parNr, int tacNr)
int parIsDataNr(PAR *par)
int parWriteIFT(PAR *par, FILE *fp, TPCSTATUS *status)
int parToIFT(PAR *par, IFT *ift, TPCSTATUS *status)
int parFromIFT(PAR *par, IFT *ift, TPCSTATUS *status)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
int strTokenNr(const char *s1, const char *s2)
void strReplaceChar(char *s, char c1, char c2)
int strTokenNCpy(const char *s1, const char *s2, int i, char *s3, int count)
IFT h
Optional (but often useful) header information.
char name[MAX_PARNAME_LEN+1]
char name[MAX_TACNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
Header file for library libtpcextensions.
#define MAX_TACNAME_LEN
Max length of TAC ID name (not including trailing zero)
@ UNIT_UNKNOWN
Unknown unit.
#define MAX_PARNAME_LEN
Max string length for PAR name.
@ TPCERROR_FAIL
General error.
@ TPCERROR_UNSUPPORTED
Unsupported file type.
@ TPCERROR_NO_DATA
File contains no data.
@ TPCERROR_CANNOT_WRITE
Cannot write file.
int unitIdentify(const char *s)
char * unitName(int unit_code)
Header file for library libtpcift.
Header file for libtpcpar.
@ PAR_FORMAT_CSV_INT
International CSV.
@ PAR_FORMAT_IFT
Interfile-type data (supported for writing)
@ PAR_FORMAT_TSV_INT
International TSV (comma as decimal separator)