Changeset 11319
- Timestamp:
- 02/03/12 15:48:33 (13 years ago)
- Location:
- issm/trunk-jpl/src/c/objects/KML
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/objects/KML/KMLFileReadUtils.cpp ¶
r10840 r11319 229 229 /*}}}*/ 230 230 231 /*FUNCTION KMLFileTagName {{{1*/ 232 char* KMLFileTagName(char* pname, 233 char* ktag){ 234 235 return(KMLFileTagName(pname,NULL,0, 236 ktag)); 237 } 238 /*}}}*/ 239 240 /*FUNCTION KMLFileTagName {{{1*/ 241 char* KMLFileTagName(char* pname,int *m,int maxlen, 242 char* ktag){ 243 244 /* for the given tag buffer, read and store the name */ 245 246 char* ktagi; 247 char* ktokn; 248 249 if (strncmp(&ktag[0],"<" ,1) || strncmp(&ktag[strlen(ktag)-1],">",1)) 250 _error_("KMLFileTagName -- Missing tag delimiters in %s.\n",ktag); 251 252 /* strtok modifies ktag, so work on copy */ 253 254 ktagi=(char *) xmalloc((strlen(ktag)+1)*sizeof(char)); 255 memcpy(ktagi,ktag,(strlen(ktag)+1)*sizeof(char)); 256 257 /* skip opening delimeter and find subsequent blank or closing delimiter */ 258 259 ktokn=strtok(ktagi,"< >"); 260 // _printf_(true,"KMLFileTagName -- initial token=\"%s\".\n",ktokn); 261 262 if (!pname) { 263 if (maxlen) 264 pname=(char *) xmalloc((maxlen +1)*sizeof(char)); 265 else 266 pname=(char *) xmalloc((strlen(ktokn)+1)*sizeof(char)); 267 } 268 269 if (maxlen && (maxlen < strlen(ktokn))) { 270 _printf_(true,"KMLFileTagName -- string field too short for %s.\n",ktag); 271 _printf_(true,"KMLFileTagName -- \"%s\" truncated to %d characters.\n",ktokn,maxlen); 272 strncpy(pname,ktokn,maxlen); 273 } 274 else 275 memcpy(pname,ktokn,(strlen(ktokn)+1)*sizeof(char)); 276 277 xfree((void**)&ktagi); 278 279 if (m) 280 *m=strlen(pname); 281 282 return(pname); 283 } 284 /*}}}*/ 285 231 286 /*FUNCTION KMLFileTagAttrib {{{1*/ 232 287 int KMLFileTagAttrib(KML_Object* kobj, … … 352 407 353 408 /*FUNCTION KMLFileTokenParse {{{1*/ 409 char* KMLFileTokenParse(char* pstr, 410 char* ktag, 411 FILE* fid){ 412 413 return(KMLFileTokenParse(pstr,NULL,0, 414 ktag, 415 fid)); 416 } 417 /*}}}*/ 418 419 /*FUNCTION KMLFileTokenParse {{{1*/ 354 420 char* KMLFileTokenParse(char* pstr,int *m,int maxlen, 355 421 char* ktag, … … 357 423 358 424 char* kstr; 359 char* pstro=NULL;360 425 361 426 /* get next token and allocate if necessary */ … … 371 436 else 372 437 pstr=(char *) xmalloc((strlen(kstr)+1)*sizeof(char)); 373 pstro=pstr;374 438 } 375 439 … … 401 465 // _printf_(true,"KMLFileTokenParse -- %s=\"%s\".\n",ktag,pstr); 402 466 403 return(pstr o);467 return(pstr); 404 468 } 405 469 /*}}}*/ -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KMLFileReadUtils.h ¶
r10840 r11319 21 21 int c, 22 22 int bufblk); 23 char* KMLFileTagName(char* pname, 24 char* ktag); 25 char* KMLFileTagName(char* pname,int *m,int maxlen, 26 char* ktag); 23 27 int KMLFileTagAttrib(KML_Object* kobj, 24 28 char* ktag); … … 29 33 char* ktag, 30 34 FILE* fid); 35 char* KMLFileTokenParse(char* pstr, 36 char* ktag, 37 FILE* fid); 31 38 char* KMLFileTokenParse(char* pstr,int *m,int maxlen, 32 33 39 char* ktag, 40 FILE* fid); 34 41 int KMLFileTokenParse(float* pfval, 35 42 char* ktag, -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Container.cpp ¶
r11202 r11319 74 74 75 75 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 76 77 76 strcat(indent2," "); 78 77 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Feature.cpp ¶
r11202 r11319 96 96 97 97 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 98 99 98 strcat(indent2," "); 100 99 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_File.cpp ¶
r11202 r11319 76 76 77 77 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 78 79 78 strcat(indent2," "); 80 79 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_GroundOverlay.cpp ¶
r11202 r11319 80 80 81 81 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 82 83 82 strcat(indent2," "); 84 83 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_MultiGeometry.cpp ¶
r11202 r11319 78 78 79 79 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 80 81 80 strcat(indent2," "); 82 81 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Object.cpp ¶
r11202 r11319 26 26 attrib =new DataSet; 27 27 commnt =new DataSet; 28 unknwn =new DataSet; 28 29 29 30 } … … 40 41 commnt =NULL; 41 42 } 43 if (unknwn) { 44 delete unknwn; 45 unknwn =NULL; 46 } 42 47 43 48 } … … 52 57 _printf_(flag," attrib: (size=%d)\n" ,attrib->Size()); 53 58 _printf_(flag," commnt: (size=%d)\n" ,commnt->Size()); 59 _printf_(flag," unknwn: (size=%d)\n" ,unknwn->Size()); 54 60 55 61 return; … … 90 96 _printf_(flag,"%s commnt: [empty]\n" ,indent); 91 97 98 /* loop over the unknown objects for the object */ 99 100 if (unknwn->Size()) 101 for (i=0; i<unknwn->Size(); i++) { 102 ((KML_Unknown *)unknwn->GetObjectByOffset(i))->DeepEcho(indent); 103 } 104 else 105 _printf_(flag,"%s unknwn: [empty]\n" ,indent); 106 92 107 return; 93 108 } … … 96 111 void KML_Object::Write(FILE* filout,const char* indent){ 97 112 113 int i; 114 char indent2[81]; 115 98 116 // attributes always written in keyword line of derived classes 99 117 // comments always written after keyword line of derived classes 100 118 101 ; 119 /* loop over the unknown objects for the object */ 120 121 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 122 strcat(indent2," "); 123 124 if (unknwn->Size()) 125 for (i=0; i<unknwn->Size(); i++) { 126 ((KML_Unknown *)unknwn->GetObjectByOffset(i))->Write(filout,indent2); 127 } 102 128 103 129 return; … … 106 132 /*FUNCTION KML_Object::Read {{{1*/ 107 133 void KML_Object::Read(FILE* fid,char* kstr){ 134 135 KML_Object* kobj; 108 136 109 137 /* process field within opening and closing tags */ … … 118 146 else if (!strncmp(kstr,"<",1)) { 119 147 _printf_(true,"KML_Object::Read -- Unrecognized opening tag %s.\n",kstr); 120 KMLFileTagSkip(kstr, 121 fid); 148 // KMLFileTagSkip(kstr, 149 // fid); 150 kobj=(KML_Object*)new KML_Unknown(); 151 kobj->Read(fid,kstr); 152 unknwn ->AddObject((Object*)kobj); 122 153 } 123 154 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Object.h ¶
r11202 r11319 21 21 DataSet* attrib; 22 22 DataSet* commnt; 23 DataSet* unknwn; 23 24 24 25 /*KML_Object constructors, destructors {{{1*/ -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Overlay.cpp ¶
r11202 r11319 79 79 80 80 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 81 82 81 strcat(indent2," "); 83 82 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Placemark.cpp ¶
r11202 r11319 76 76 77 77 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 78 79 78 strcat(indent2," "); 80 79 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Polygon.cpp ¶
r11202 r11319 92 92 93 93 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 94 95 94 strcat(indent2," "); 96 95 … … 134 133 135 134 memcpy(indent4,indent,(strlen(indent)+1)*sizeof(char)); 136 137 135 strcat(indent4," "); 138 136 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Style.cpp ¶
r11202 r11319 109 109 110 110 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 111 112 111 strcat(indent2," "); 113 112 -
TabularUnified issm/trunk-jpl/src/c/objects/KML/KML_Unknown.cpp ¶
r11295 r11319 80 80 void KML_Unknown::Write(FILE* filout,const char* indent){ 81 81 82 char indent2[81]; 83 82 84 fprintf(filout,"%s<%s",indent,name); 83 85 WriteAttrib(filout," "); … … 85 87 WriteCommnt(filout,indent); 86 88 87 KML_Object::Write(filout,indent);88 89 89 if (value ) 90 90 fprintf(filout,"%s %s\n",indent,value); 91 92 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 93 strcat(indent2," "); 94 95 KML_Object::Write(filout,indent2); 91 96 92 97 fprintf(filout,"%s</%s>\n",indent,name); … … 102 107 char** pcom=NULL; 103 108 109 /* get object name */ 110 111 name=KMLFileTagName(NULL, 112 kstr); 113 // _printf_(true,"KML_Unknown::Read -- opening name=%s.\n",name); 114 104 115 /* get object attributes and check for solo tag */ 105 116 … … 112 123 while (kstri=KMLFileToken(fid, 113 124 &ncom,&pcom)) { 125 // _printf_(true,"KML_Unknown::Read -- kstri=%s.\n",kstri); 114 126 if (!strncmp(&kstri[0],"</", 2) && 115 127 !strncmp(&kstri[2],name,strlen(name))) { 128 // _printf_(true,"KML_Unknown::Read -- closing name=%s.\n",name); 116 129 xfree((void**)&kstri); 117 130 break; … … 120 133 _error_("KML_Unknown::Read -- Unexpected closing tag %s.\n",kstri); 121 134 122 else if (strncmp(kstri,"<",1)) 123 KMLFileTokenParse( value ,NULL,0,124 NULL,125 fid);135 else if (strncmp(kstri,"<",1)) { 136 value=(char *) xmalloc((strlen(kstri)+1)*sizeof(char)); 137 memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char)); 138 } 126 139 127 140 else if (!strncmp(kstri,"<",1))
Note:
See TracChangeset
for help on using the changeset viewer.