Changeset 4870 for trunk/psLib/src/types
- Timestamp:
- Aug 24, 2005, 12:00:57 PM (21 years ago)
- Location:
- trunk/psLib/src/types
- Files:
-
- 3 edited
-
psMetadata.c (modified) (2 diffs)
-
psMetadataConfig.c (modified) (3 diffs)
-
psMetadataConfig.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/types/psMetadata.c
r4817 r4870 12 12 * @author Ross Harman, MHPCC 13 13 * 14 * @version $Revision: 1.7 6$ $Name: not supported by cvs2svn $15 * @date $Date: 2005-08- 18 23:41:45$14 * @version $Revision: 1.77 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2005-08-24 22:00:53 $ 16 16 * 17 17 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 427 427 METADATA_ADD_TYPE(Array,psArray*,PS_META_ARRAY) 428 428 429 psBool psMetadataRemove(psMetadata *md,430 long where,431 const char *key)429 bool psMetadataRemove(psMetadata *md, 430 long where, 431 const char *key) 432 432 { 433 433 PS_ASSERT_PTR_NON_NULL(md,NULL); -
trunk/psLib/src/types/psMetadataConfig.c
r4589 r4870 10 10 * @author Eric Van Alst, MHPCC 11 11 * 12 * @version $Revision: 1.3 7$ $Name: not supported by cvs2svn $13 * @date $Date: 2005-0 7-21 01:40:10$12 * @version $Revision: 1.38 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-08-24 22:00:53 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 58 58 /** Maximum size of a string */ 59 59 #define MAX_STRING_LENGTH 256 60 #define MAXSTR 256 60 61 61 62 … … 1161 1162 } 1162 1163 1164 psString psMetadataConfigFormat(psMetadata *md) 1165 { 1166 PS_ASSERT_PTR_NON_NULL(md, NULL); 1167 1168 psString newString = NULL; 1169 psString newStr = NULL; 1170 char mdString[2048]; 1171 psMetadataItem *item = NULL; 1172 psMetadataIterator *iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL); 1173 psDataType type = PS_DATA_UNKNOWN; 1174 // int size = 0; 1175 int i = 0; 1176 char content[MAXSTR]; 1177 char buffer[MAXSTR]; 1178 char *buffer2; 1179 strcpy(content, "\0"); 1180 strcpy(mdString, "\0"); 1181 1182 while ( (item = psMetadataGetAndIncrement(iter)) ) { 1183 type = item->type; 1184 if ( type == 65537) 1185 type = PS_DATA_STRING; 1186 if ( type == 65538) 1187 type = PS_DATA_VECTOR; 1188 if ( type == 65547) 1189 type = PS_DATA_METADATA; 1190 1191 switch (type) { 1192 case PS_DATA_BOOL: 1193 // size = strlen(item->name); 1194 snprintf(content, MAXSTR, "%s BOOL ", item->name); 1195 strncat(mdString, content, MAXSTR); 1196 if ( item->data.B ) 1197 strncat(mdString, "TRUE", MAXSTR); 1198 else 1199 strncat(mdString, "FALSE", MAXSTR); 1200 if ( item->comment != NULL ) { 1201 // size = strlen(item->comment); 1202 snprintf(content, MAXSTR, " #%s \n", item->comment); 1203 strncat(mdString, content, MAXSTR); 1204 } else { 1205 snprintf(content, MAXSTR, "\n"); 1206 strncat(mdString, content, MAXSTR); 1207 } 1208 break; 1209 case PS_DATA_S32: 1210 // size = strlen(item->name); 1211 snprintf(content, MAXSTR, "%s S32 ", item->name); 1212 strncat(mdString, content, MAXSTR); 1213 snprintf(content, MAXSTR, "%d ", item->data.S32); 1214 strncat(mdString, content, MAXSTR); 1215 if ( item->comment != NULL ) { 1216 // size = strlen(item->comment); 1217 snprintf(content, MAXSTR, " #%s \n", item->comment); 1218 strncat(mdString, content, MAXSTR); 1219 } else { 1220 snprintf(content, MAXSTR, "\n"); 1221 strncat(mdString, content, MAXSTR); 1222 } 1223 break; 1224 case PS_DATA_F32: 1225 // size = strlen(item->name); 1226 snprintf(content, MAXSTR, "%s F32 ", item->name); 1227 strncat(mdString, content, MAXSTR); 1228 snprintf(content, MAXSTR, "%f ", item->data.F32); 1229 strncat(mdString, content, MAXSTR); 1230 if ( item->comment != NULL ) { 1231 // size = strlen(item->comment); 1232 snprintf(content, MAXSTR, " #%s \n", item->comment); 1233 strncat(mdString, content, MAXSTR); 1234 } else { 1235 snprintf(content, MAXSTR, "\n"); 1236 strncat(mdString, content, MAXSTR); 1237 } 1238 break; 1239 case PS_DATA_F64: 1240 // size = strlen(item->name); 1241 snprintf(content, MAXSTR, "%s F64 ", item->name); 1242 strncat(mdString, content, MAXSTR); 1243 snprintf(content, MAXSTR, "%f ", item->data.F64); 1244 strncat(mdString, content, MAXSTR); 1245 if ( item->comment != NULL ) { 1246 // size = strlen(item->comment); 1247 snprintf(content, MAXSTR, " #%s \n", item->comment); 1248 strncat(mdString, content, MAXSTR); 1249 } else { 1250 snprintf(content, MAXSTR, "\n"); 1251 strncat(mdString, content, MAXSTR); 1252 } 1253 break; 1254 case PS_DATA_STRING: 1255 // size = strlen(item->name); 1256 snprintf(content, MAXSTR, "%s STR ", item->name); 1257 strncat(mdString, content, MAXSTR); 1258 // size = strlen(((char *)(item->data.V))); 1259 snprintf(content, MAXSTR, "%s ", ((char *)(item->data.V))); 1260 strncat(mdString, content, MAXSTR); 1261 if ( item->comment != NULL ) { 1262 // size = strlen(item->comment); 1263 snprintf(content, MAXSTR, " #%s \n", item->comment); 1264 strncat(mdString, content, MAXSTR); 1265 } else { 1266 snprintf(content, MAXSTR, "\n"); 1267 strncat(mdString, content, MAXSTR); 1268 } 1269 break; 1270 case PS_DATA_METADATA: 1271 snprintf(content, MAXSTR, "\n%s METADATA ", item->name); 1272 strncat(mdString, content, MAXSTR); 1273 1274 newStr = psMetadataConfigFormat(item->data.md); 1275 strncpy(buffer, (char *)newStr, MAXSTR); 1276 buffer2 = strtok(buffer, "\n"); 1277 while( buffer2 != NULL ) { 1278 snprintf(content, MAXSTR, "\n %s", buffer2); 1279 strncat(mdString, content, MAXSTR); 1280 buffer2 = strtok(NULL, "\n"); 1281 } 1282 if ( item->comment != NULL ) { 1283 snprintf(content, MAXSTR, "\nEND #%s\n\n", item->comment); 1284 strncat(mdString, content, MAXSTR); 1285 } else { 1286 snprintf(content, MAXSTR, "\nEND\n\n"); 1287 strncat(mdString, content, MAXSTR); 1288 } 1289 psFree(newStr); 1290 break; 1291 case PS_DATA_VECTOR: 1292 // size = strlen(item->name); 1293 snprintf(content, MAXSTR, "@%s ", item->name); 1294 strncat(mdString, content, MAXSTR); 1295 type = ((psVector*)(item->data.V))->type.type; 1296 switch (type) { 1297 case PS_DATA_S32: 1298 strncat(mdString, "S32 ", MAXSTR); 1299 for (i = 0; ((psVector*)(item->data.V))->data.S32[i] != 0; i++) { 1300 snprintf(content, MAXSTR, "%d", 1301 ((psVector*)(item->data.V))->data.S32[i]); 1302 if ( ((psVector*)(item->data.V))->data.S32[i+1] != 0 ) { 1303 strncat(content, ", ", MAXSTR); 1304 } 1305 strncat(mdString, content, MAXSTR); 1306 } 1307 break; 1308 case PS_DATA_F32: 1309 strncat(mdString, "F32 ", MAXSTR); 1310 for (i = 0; ((psVector*)(item->data.V))->data.F32[i] != 0; i++) { 1311 snprintf(content, MAXSTR, "%f", 1312 ((psVector*)(item->data.V))->data.F32[i]); 1313 if ( ((psVector*)(item->data.V))->data.F32[i+1] != 0 ) { 1314 strncat(content, ", ", MAXSTR); 1315 } 1316 strncat(mdString, content, MAXSTR); 1317 } 1318 break; 1319 case PS_DATA_F64: 1320 strncat(mdString, "F64 ", MAXSTR); 1321 for (i = 0; ((psVector*)(item->data.V))->data.F64[i] != 0; i++) { 1322 snprintf(content, MAXSTR, "%lf", 1323 ((psVector*)(item->data.V))->data.F64[i]); 1324 if ( ((psVector*)(item->data.V))->data.F64[i+1] != 0 ) { 1325 strncat(content, ", ", MAXSTR); 1326 } 1327 strncat(mdString, content, MAXSTR); 1328 } 1329 break; 1330 case PS_DATA_UNKNOWN: 1331 default: 1332 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 1333 PS_ERRORTEXT_psMetadata_METATYPE_INVALID, type); 1334 psFree(iter); 1335 return NULL; 1336 } 1337 if ( item->comment != NULL ) { 1338 // size = strlen(item->comment); 1339 snprintf(content, MAXSTR, " #%s \n", item->comment); 1340 strncat(mdString, content, MAXSTR); 1341 } else { 1342 snprintf(content, MAXSTR, "\n"); 1343 strncat(mdString, content, MAXSTR); 1344 } 1345 break; 1346 case PS_DATA_UNKNOWN: 1347 default: 1348 psError(PS_ERR_BAD_PARAMETER_VALUE, true, 1349 PS_ERRORTEXT_psMetadata_METATYPE_INVALID, type); 1350 psFree(iter); 1351 return NULL; 1352 } 1353 } 1354 newString = psStringNCopy(mdString, 2048); 1355 psFree(iter); 1356 return newString; 1357 } 1358 1359 bool psMetadataConfigWrite(psMetadata *md, 1360 const char *filename) 1361 { 1362 psString fileString = NULL; 1363 FILE *file; 1364 file = fopen(filename, "w"); 1365 fileString = psMetadataConfigFormat(md); 1366 fprintf(file, "%s", fileString); 1367 fclose(file); 1368 psFree(fileString); 1369 return true; 1370 } 1371 -
trunk/psLib/src/types/psMetadataConfig.h
r4589 r4870 10 10 * @author Robert DeSonia, MHPCC 11 11 * 12 * @version $Revision: 1.1 8$ $Name: not supported by cvs2svn $13 * @date $Date: 2005-0 7-21 01:40:10$12 * @version $Revision: 1.19 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2005-08-24 22:00:53 $ 14 14 * 15 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 86 86 ); 87 87 88 /** Converts a psMetadata structure (including any nested psMetadata) into a 89 * configuration file formatted string. 90 * 91 * A NULL shall be returned on error. 92 * @return psString: a Configuration File formatted string. 93 */ 94 psString psMetadataConfigFormat( 95 psMetadata *md ///< The metadata to convert 96 ); 97 98 /** Converts a psMetadata structure (including any nested psMetadata) into a 99 * configuration file formatted string that is written out to filename. 100 * 101 * @return bool: True if successful, otherwise false. 102 */ 103 bool psMetadataConfigWrite( 104 psMetadata *md, ///< The metadata to convert 105 const char *filename ///< Name of file to write 106 ); 107 88 108 /// @} 89 109
Note:
See TracChangeset
for help on using the changeset viewer.
