Go to the source code of this file.
|
char * | KMLFileToken (FILE *fid, int *pncom=NULL, char ***ppcom=NULL) |
|
char * | KMLFileTokenComment (FILE *fid) |
|
void | KMLFileTokenBuffer (char **pbuffer, int *pibuf, int *pbuflen, int c, int bufblk) |
|
char * | KMLFileTagName (char *pname, char *ktag) |
|
char * | KMLFileTagName (char *pname, int *m, int maxlen, char *ktag) |
|
int | KMLFileTagAttrib (KML_Object *kobj, char *ktag) |
|
int | KMLFileTokenParse (int *pival, char *ktag, FILE *fid) |
|
int | KMLFileTokenParse (bool *pbval, char *ktag, FILE *fid) |
|
char * | KMLFileTokenParse (char *pstr, char *ktag, FILE *fid) |
|
char * | KMLFileTokenParse (char *pstr, int *m, int maxlen, char *ktag, FILE *fid) |
|
int | KMLFileTokenParse (float *pfval, char *ktag, FILE *fid) |
|
int | KMLFileTokenParse (double *pdval, char *ktag, FILE *fid) |
|
int | KMLFileTokenParse (double **pdval, int *m, int maxlen, char *ktag, FILE *fid) |
|
int | KMLFileTokenParse (double **pdval, int *m, int n, int maxlen, char *ktag, FILE *fid) |
|
int | KMLFileTagSkip (char *ktag, FILE *fid) |
|
◆ KMLFileToken()
char* KMLFileToken |
( |
FILE * |
fid, |
|
|
int * |
pncom = NULL , |
|
|
char *** |
ppcom = NULL |
|
) |
| |
Definition at line 18 of file KMLFileReadUtils.cpp.
23 bool inew=1,itag=0,ifield=0;
25 int ibuf=0,buflen=1024,bufblk=1024;
26 char *buffer=NULL,*bufferc=NULL,**pcom2=NULL;
28 buffer=xNew<char>(buflen);
36 while ((c=getc(fid)) != EOF) {
38 if (inew && isspace(c))
42 if (!itag && !ifield) {
54 pcom2=xNew<char*>(*pncom);
55 memcpy(pcom2,*ppcom,(*pncom-1)*
sizeof(
char*));
56 xDelete<char*>(*ppcom);
60 (*ppcom)[*pncom-1]=bufferc;
63 xDelete<char>(bufferc);
100 pcom2=xNew<char*>(*pncom);
101 memcpy(pcom2,*ppcom,(*pncom-1)*
sizeof(
char*));
102 xDelete<char*>(*ppcom);
106 (*ppcom)[*pncom-1]=bufferc;
109 xDelete<char>(bufferc);
126 if (isspace(buffer[ibuf-1]))
140 xDelete<char>(buffer);
◆ KMLFileTokenComment()
char* KMLFileTokenComment |
( |
FILE * |
fid | ) |
|
Definition at line 145 of file KMLFileReadUtils.cpp.
152 int ibuf=0,buflen=1024,bufblk=1024;
155 buffer=xNew<char>(buflen);
160 while ((c=getc(fid)) != EOF) {
162 if (inew && isspace(c))
172 if ((ibuf == 1 && buffer[0] !=
'<') ||
173 (ibuf == 2 && buffer[1] !=
'!') ||
174 (ibuf == 3 && buffer[2] !=
'-') ||
175 (ibuf == 4 && buffer[3] !=
'-')) {
176 for (i=ibuf-1; i>=0; i--)
177 ungetc(buffer[i],fid);
178 xDelete<char>(buffer);
185 if (buffer[ibuf-3]==
'-' && buffer[ibuf-2]==
'-' && buffer[ibuf-1]==
'>')
192 if (isspace(buffer[ibuf-1]))
203 xDelete<char>(buffer);
◆ KMLFileTokenBuffer()
void KMLFileTokenBuffer |
( |
char ** |
pbuffer, |
|
|
int * |
pibuf, |
|
|
int * |
pbuflen, |
|
|
int |
c, |
|
|
int |
bufblk |
|
) |
| |
Definition at line 208 of file KMLFileReadUtils.cpp.
218 if (*pibuf+2 > *pbuflen) {
220 buffer2=xNew<char>(*pbuflen);
221 memcpy(buffer2,*pbuffer,(*pbuflen-bufblk)*
sizeof(
char));
222 xDelete<char>(*pbuffer);
230 (*pbuffer)[(*pibuf)++]=c;
231 (*pbuffer)[ *pibuf ]=
'\0';
◆ KMLFileTagName() [1/2]
char* KMLFileTagName |
( |
char * |
pname, |
|
|
char * |
ktag |
|
) |
| |
◆ KMLFileTagName() [2/2]
char* KMLFileTagName |
( |
char * |
pname, |
|
|
int * |
m, |
|
|
int |
maxlen, |
|
|
char * |
ktag |
|
) |
| |
Definition at line 243 of file KMLFileReadUtils.cpp.
251 if (strncmp(&ktag[0],
"<" ,1) || strncmp(&ktag[strlen(ktag)-1],
">",1))
252 _error_(
"KMLFileTagName -- Missing tag delimiters in " << ktag <<
".\n");
256 ktagi=xNew<char>(strlen(ktag)+1);
257 memcpy(ktagi,ktag,(strlen(ktag)+1)*
sizeof(
char));
261 ktokn=strtok(ktagi,
"< >");
266 pname=xNew<char>(maxlen +1);
268 pname=xNew<char>(strlen(ktokn)+1);
271 if (maxlen && (maxlen < strlen(ktokn))) {
272 _printf0_(
"KMLFileTagName -- string field too short for " << ktag <<
".\n");
273 _printf0_(
"KMLFileTagName -- \"" << ktokn <<
"\" truncated to " << maxlen <<
" characters.\n");
274 strncpy(pname,ktokn,maxlen);
277 memcpy(pname,ktokn,(strlen(ktokn)+1)*
sizeof(
char));
279 xDelete<char>(ktagi);
◆ KMLFileTagAttrib()
int KMLFileTagAttrib |
( |
KML_Object * |
kobj, |
|
|
char * |
ktag |
|
) |
| |
Definition at line 287 of file KMLFileReadUtils.cpp.
295 char quote[]={
'\"',
'\0'};
300 ktagi=xNew<char>(strlen(ktag)+1);
301 memcpy(ktagi,ktag,(strlen(ktag)+1)*
sizeof(
char));
306 ktokn=strtok(ktagi,
" ");
310 while((ktokn=strtok(NULL,
" =?/>"))){
313 ktokv=strtok(NULL,quote);
322 xDelete<char>(ktagi);
326 if ((!strncmp(&ktag[0],
"<?" ,2) && !strncmp(&ktag[strlen(ktag)-2],
"?>",2)) ||
327 (!strncmp(&ktag[0],
"<!DOCTYPE",9) && !strncmp(&ktag[strlen(ktag)-1],
">",1)) ||
328 (!strncmp(&ktag[0],
"<" ,1) && !strncmp(&ktag[strlen(ktag)-2],
"/>",2)))
◆ KMLFileTokenParse() [1/8]
int KMLFileTokenParse |
( |
int * |
pival, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 335 of file KMLFileReadUtils.cpp.
346 _error_(
"KMLFileTokenParse -- Missing integer field for " << ktag <<
".\n");
348 sscanf(kstr,
"%d",pival);
358 (strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
359 {
_error_(
"KMLFileTokenParse -- Missing closing tag for " << ktag <<
".\n");}
◆ KMLFileTokenParse() [2/8]
int KMLFileTokenParse |
( |
bool * |
pbval, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 370 of file KMLFileReadUtils.cpp.
380 {
_error_(
"KMLFileTokenParse -- Missing bool field for " << ktag <<
".\n");}
382 sscanf(kstr,
"%d",&ival);
393 (strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
394 {
_error_(
"KMLFileTokenParse -- Missing closing tag for " << ktag <<
".\n");}
◆ KMLFileTokenParse() [3/8]
char* KMLFileTokenParse |
( |
char * |
pstr, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
◆ KMLFileTokenParse() [4/8]
char* KMLFileTokenParse |
( |
char * |
pstr, |
|
|
int * |
m, |
|
|
int |
maxlen, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 413 of file KMLFileReadUtils.cpp.
424 _error_(
"KMLFileTokenParse -- Missing string field for " << ktag <<
".\n");
428 pstr=xNew<char>(maxlen +1);
430 pstr=xNew<char>(strlen(kstr)+1);
433 if (maxlen && (maxlen < strlen(kstr))) {
434 _printf0_(
"KMLFileTokenParse -- string field too short for " << ktag <<
".\n");
435 _printf0_(
"KMLFileTokenParse -- \"" << kstr <<
"\" truncated to " << maxlen <<
" characters.\n");
436 strncpy(pstr,kstr,maxlen);
439 memcpy(pstr,kstr,(strlen(kstr)+1)*
sizeof(
char));
453 (strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
454 {
_error_(
"KMLFileTokenParse -- Missing closing tag for " << ktag <<
".\n");}
◆ KMLFileTokenParse() [5/8]
int KMLFileTokenParse |
( |
float * |
pfval, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 464 of file KMLFileReadUtils.cpp.
475 {
_error_(
"KMLFileTokenParse -- Missing integer field for " << ktag <<
".\n");}
477 sscanf(kstr,
"%g",pfval);
487 (strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
488 {
_error_(
"KMLFileTokenParse -- Missing closing tag for " << ktag <<
".\n");}
◆ KMLFileTokenParse() [6/8]
int KMLFileTokenParse |
( |
double * |
pdval, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 498 of file KMLFileReadUtils.cpp.
509 _error_(
"KMLFileTokenParse -- Missing integer field for " << ktag <<
".\n");
511 sscanf(kstr,
"%lg",pdval);
521 (strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
522 {
_error_(
"KMLFileTokenParse -- Missing closing tag for " << ktag <<
".\n");}
◆ KMLFileTokenParse() [7/8]
int KMLFileTokenParse |
( |
double ** |
pdval, |
|
|
int * |
m, |
|
|
int |
maxlen, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 532 of file KMLFileReadUtils.cpp.
540 char delim[]={
' ',
',',
'\f',
'\n',
'\r',
'\t',
'\v',
'\0'};
547 _error_(
"KMLFileTokenParse -- Missing double [m] field for " << ktag <<
".\n");
551 *pdval=xNew<IssmPDouble>(maxlen );
553 *pdval=xNew<IssmPDouble>((strlen(kstr)+1)/2);
558 ktok=strtok(kstr,delim);
561 if (maxlen && (maxlen < i+1))
562 _error_(
"KMLFileTokenParse -- Double [m] field too short for " << ktag <<
".\n");
563 sscanf(ktok,
"%lg",&((*pdval)[i]));
564 ktok=strtok(NULL,delim);
569 dval2=xNew<double>(i+1);
570 memcpy(dval2,*pdval,(i+1)*
sizeof(
double));
571 xDelete<double>(*pdval);
586 (strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
587 {
_error_(
"KMLFileTokenParse -- Missing closing tag for " << ktag <<
".\n");}
◆ KMLFileTokenParse() [8/8]
int KMLFileTokenParse |
( |
double ** |
pdval, |
|
|
int * |
m, |
|
|
int |
n, |
|
|
int |
maxlen, |
|
|
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 599 of file KMLFileReadUtils.cpp.
607 char delim[]={
' ',
',',
'\f',
'\n',
'\r',
'\t',
'\v',
'\0'};
614 _error_(
"KMLFileTokenParse -- Missing double [m x n] field for " << ktag <<
".\n");
618 *pdval=xNew<IssmPDouble>(maxlen*n );
620 *pdval=xNew<IssmPDouble>((strlen(kstr)+1)/2);
625 ktok=strtok(kstr,delim);
628 if (maxlen && (maxlen*n < i+1))
629 _error_(
"KMLFileTokenParse -- Double [m x n] field too short for " << ktag <<
".\n");
631 sscanf(ktok,
"%lg",&((*pdval)[i]));
632 ktok=strtok(NULL,delim);
637 dval2=xNew<double>((i+1)*n);
638 memcpy(dval2,*pdval,((i+1)*n)*
sizeof(
double));
639 xDelete<double>(*pdval);
648 _printf0_(
"KMLFileTokenParse -- Double [m x n] field for " << ktag <<
" does not have multiple of n values.\n");
657 (strncmp(&(kstr[2]),&(ktag[1]),strlen(ktag)-1)))
658 {
_error_(
"KMLFileTokenParse -- Missing closing tag for " << ktag <<
".\n");}
◆ KMLFileTagSkip()
int KMLFileTagSkip |
( |
char * |
ktag, |
|
|
FILE * |
fid |
|
) |
| |
Definition at line 670 of file KMLFileReadUtils.cpp.
677 _printf0_(
"KMLFileTagSkip -- input tag " << ktag <<
".\n");
682 if((kstr[0] ==
'<') && (kstr[1] ==
'/') && (!strncmp(&(kstr[2]),&(ktag[1]),(strcspn(ktag,
" >")-1)/
sizeof(
char)))){
683 _printf0_(
"KMLFileTagSkip -- closing tag " << kstr <<
".\n");
690 else if ((kstr[0] ==
'<') &&
692 _printf0_(
"KMLFileTagSkip -- opening tag " << kstr <<
".\n");
699 else if ((kstr[0] ==
'<') &&
701 _error_(
"KMLFileTagSkip -- Unexpected closing tag " << kstr <<
".\n");
707 _error_(
"KMLFileTokenParse -- Corresponding closing tag for " << ktag <<
" not found.\n");