8#include "tpcclibConfig.h"
20static char *info[] = {
21 "Copy sample times from file2 into file1, or, copy a specified TAC column",
22 "from file2 as sample times into file1.",
23 "Files must have the same number of samples (time frames).",
24 "If file1 contains only one data column, that is assumed to represent y",
25 "values, and x values are added as new column to the left.",
27 "Usage: @P [Options] tacfile1 tacfile2 [tacid]",
31 " Copy sample time column(s) from file2 into file1 as TAC column(s).",
34 "See also: tacmultx, tacsety, taclist, tacadd0, tacframe, addtimes, tacformat",
36 "Keywords: TAC, tool, time, simulation",
55int main(
int argc,
char **argv)
57 int ai, help=0, version=0, verbose=1;
59 char tacfile1[FILENAME_MAX], tacfile2[FILENAME_MAX], rname[
MAX_TACNAME_LEN];
65 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
66 tacfile1[0]=tacfile2[0]=rname[0]=(char)0;
68 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
70 char *cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!*cptr)
continue;
71 if(strcasecmp(cptr,
"X2Y")==0) {
74 fprintf(stderr,
"Error: invalid option '%s'\n", argv[ai]);
83 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
88 if(ai<argc) {
strlcpy(tacfile1, argv[ai++], FILENAME_MAX);}
89 if(ai<argc) {
strlcpy(tacfile2, argv[ai++], FILENAME_MAX);}
90 for(
int n=0; ai<argc; ai++, n++) {
92 fprintf(stderr,
"Error: invalid argument '%s'.\n", argv[ai]);
99 if(!tacfile2[0]) {
tpcPrintUsage(argv[0], info, stdout);
return(1);}
103 for(ai=0; ai<argc; ai++) printf(
"%s ", argv[ai]);
105 printf(
"tacfile1 := %s\n", tacfile1);
106 printf(
"tacfile2 := %s\n", tacfile2);
107 printf(
"mode := %d\n", mode);
108 if(rname[0]) printf(
"rname := %s\n", rname);
119 if(verbose>1) printf(
"reading %s\n", tacfile1);
120 ret=
tacRead(&tac1, tacfile1, &status);
127 printf(
"tacNr1 := %d\n", tac1.
tacNr);
128 printf(
"sampleNr1 := %d\n", tac1.
sampleNr);
131 printf(
"isframe1 := %d\n", tac1.
isframe);
135 if(verbose>1) printf(
"reading %s\n", tacfile2);
136 ret=
tacRead(&tac2, tacfile2, &status);
143 printf(
"tacNr2 := %d\n", tac2.
tacNr);
144 printf(
"sampleNr2 := %d\n", tac2.
sampleNr);
147 printf(
"isframe2 := %d\n", tac2.
isframe);
153 fprintf(stderr,
"Error: datafiles have different sample number.\n");
160 if(mode==0 || mode==1) {
163 if(verbose>0) {printf(
"Note: assuming initially no x column.\n"); fflush(stdout);}
164 for(
int i=0; i<tac1.
sampleNr; i++) {
165 tac1.
c[0].
y[i]=tac1.
x[i];
177 if(verbose>1) printf(
"adding x from '%s'\n", tacfile2);
178 for(
int i=0; i<tac1.
sampleNr; i++) {
179 tac1.
x[i]=tac2.
x[i]; tac1.
x1[i]=tac2.
x1[i]; tac1.
x2[i]=tac2.
x2[i];
185 if(verbose>1) printf(
"selecting TAC to be copied as x.\n");
189 fprintf(stderr,
"Error: no match found for '%s'.\n", rname);
193 fprintf(stderr,
"Error: more than one TAC matches '%s'.\n", rname);
196 for(
int i=0; i<tac2.
tacNr; i++)
if(tac2.
c[i].
sw) {voi=i;
break;}
198 if(verbose>1) printf(
"adding region '%s' as x\n", tac1.
c[voi].
name);
200 tac1.
x[i]=tac1.
x1[i]=tac1.
x2[i]=tac2.
c[voi].
y[i];
207 fprintf(stderr,
"Error: cannot allocate memory.\n");
218 fprintf(stderr,
"Error: cannot allocate memory.\n");
232 if(verbose>2) printf(
"writing %s\n", tacfile1);
233 FILE *fp; fp=fopen(tacfile1,
"w");
235 fprintf(stderr,
"Error: cannot open file for writing (%s)\n", tacfile1);
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
char * roinameAddField(char *roiname, const char *field, const unsigned int in, const unsigned int count)
void statusInit(TPCSTATUS *s)
char * errorMsg(tpcerror e)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
char name[MAX_TACNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
tpcerror error
Error code.
int tacAllocateMore(TAC *tac, int tacNr)
int tacRead(TAC *d, const char *fname, TPCSTATUS *status)
char * tacFormattxt(tacformat c)
int tacWrite(TAC *tac, FILE *fp, tacformat format, int extra, TPCSTATUS *status)
int tacYNaNs(TAC *tac, const int i)
int tacSelectTACs(TAC *d, const char *region_name, int reset, TPCSTATUS *status)
Header file for library libtpcextensions.
#define MAX_TACNAME_LEN
Max length of TAC ID name (not including trailing zero).
char * unitName(int unit_code)
Header file for library libtpctac.
@ TAC_FORMAT_UNKNOWN
Unknown format.