6#include "tpcclibConfig.h"
87 for(
int i=csv->
_item_nr; i<nr; i++) {
124 for(
int ri=0; ri<csv2->
row_nr; ri++)
125 for(
int ci=0; ci<csv2->
col_nr; ci++) {
128 char *cp=
csvCell(csv1, ri, ci);
165 if(csv->
nr==0) {r=c=0;}
169 r=csv->
c[csv->
nr-1].
row+1;
171 c=csv->
c[csv->
nr-1].
col+1;
250 if(csv==NULL)
return(0);
255 for(
int i=0; i<csv->
nr; i++)
if(csv->
c[i].
row==row && csv->
c[i].
col>n) n=csv->
c[i].
col;
276 int maxri=0, maxci=0;
277 for(
int i=0; i<csv->
nr; i++) {
278 if(csv->
c[i].
row>maxri) maxri=csv->
c[i].
row;
279 if(csv->
c[i].
col>maxci) maxci=csv->
c[i].
col;
296 if(csv==NULL)
return(0);
297 if(csv->
nr<2)
return(1);
299 i=0; r=csv->
c[i].
row; m++;
300 for(i=1; i<csv->
nr; i++) {
301 if(r==csv->
c[i].
row) {
304 if(n>0 && m!=n)
return(0);
305 r=csv->
c[i].
row; n=m; m=1;
307 if(n>0 && m!=n)
return(0);
332 for(
int i=0; i<csv->
nr; i++)
if(csv->
c[i].
col==ci) {
339 if(csv->
c[i].
col==ci) {
366 if(csv==NULL)
return((
char*)NULL);
367 for(
int i=0; i<csv->
nr; i++)
368 if(csv->
c[i].
row==row && csv->
c[i].
col==col)
392 for(
int i=0; i<csv->
nr; i++)
if(csv->
c[i].
row==row && csv->
c[i].
col==col) {ci=i;
break;}
418 for(
int j=i+1; j<csv->
nr; j++) {
445 for(
int ci=0; ci<csv->
col_nr; ci++) {
446 char *cp=
csvCell(csv, ri, ci);
if(cp==NULL)
continue;
447 if(*cp==
'\0' || *cp==
'#')
continue;
456 for(i=0; i<csv->
nr; i++)
if(csv->
c[i].
row>ri) csv->
c[i].
row--;
490static int csvReorgQSort(
const void *c1,
const void *c2)
509 int verbose=0;
if(status!=NULL) verbose=status->
verbose;
510 if(verbose>0) printf(
"%s()\n", __func__);
512 if(d==NULL || d->
nr<1) {
518 qsort(d->
c, d->
nr,
sizeof(
CSV_item), csvReorgQSort);
548 for(
int i=0; i<csv->
nr; i++) {
549 int cr=csv->
c[i].
col;
int csvIsRegular(CSV *csv)
int csvPutInt(CSV *csv, int v, int newline)
int csvRemoveComments(CSV *csv)
char * csvCell(CSV *csv, int row, int col)
int csvAllocate(CSV *csv, int nr)
int csvCellReplace(CSV *csv, int row, int col, const char *s)
int csvRemoveItem(CSV *csv, int i)
int csvSetDimensions(CSV *csv)
int csvTrimRight(CSV *csv)
int csvDuplicate(CSV *csv1, CSV *csv2)
Make a duplicate of CSV structure.
int csvTranspose(CSV *csv)
int csvPutString(CSV *csv, const char *s, int newline)
int csvReorg(CSV *d, TPCSTATUS *status)
int csvRowLength(CSV *csv, int row)
int csvRemoveEmptyRows(CSV *csv)
int csvPutDouble(CSV *csv, double v, int newline, int tointl)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
void strReplaceChar(char *s, char c1, char c2)
char * strdup(const char *s)
int verbose
Verbose level, used by statusPrint() etc.
Header file for library libtpccsv.
@ TPCERROR_FAIL
General error.
@ TPCERROR_OUT_OF_MEMORY
Cannot allocate memory.
@ TPCERROR_NO_DATA
File contains no data.
@ TPCERROR_MISSING_DATA
File contains missing values.