Changeset 4817
- Timestamp:
- Aug 18, 2005, 1:41:45 PM (21 years ago)
- Location:
- trunk/psLib/src/types
- Files:
-
- 2 edited
-
psMetadata.c (modified) (2 diffs)
-
psMetadata.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/types/psMetadata.c
r4788 r4817 12 12 * @author Ross Harman, MHPCC 13 13 * 14 * @version $Revision: 1.7 5$ $Name: not supported by cvs2svn $15 * @date $Date: 2005-08-1 6 21:06:33$14 * @version $Revision: 1.76 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2005-08-18 23:41:45 $ 16 16 * 17 17 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 762 762 return oldValue; 763 763 } 764 765 psMetadata *psMetadataLookupMD(bool *status, const 766 psMetadata *md, 767 const char *key) 768 { 769 psMetadataItem *item = psMetadataLookup((psMetadata*)md, key); // The metadata with instruments 770 psMetadata *value = NULL; // The value to return 771 if (!item) { 772 // The given key isn't in the metadata 773 if (status) { 774 *status = false; 775 } else { 776 psError(PS_ERR_IO, true, "Couldn't find %s in the metadata.\n"); 777 } 778 } else if (item->type != PS_META_META) { 779 // The value at the key isn't metadata 780 if (status) { 781 *status = false; 782 } else { 783 psLogMsg(__func__, PS_LOG_WARN, "%s isn't of type PS_META_META, as expected.\n"); 784 } 785 value = NULL; 786 } else { 787 // We have the requested metadata 788 if (status) { 789 *status = true; 790 } 791 value = item->data.md; // The requested metadata 792 } 793 return value; 794 } 795 796 797 char *psMetadataLookupString(bool *status, 798 const psMetadata *md, 799 const char *key) 800 { 801 psMetadataItem *item = psMetadataLookup((psMetadata*)md, key); // The metadata with instruments 802 char *value = NULL; // The value to return 803 if (!item) { 804 // The given key isn't in the metadata 805 if (status) { 806 *status = false; 807 } else { 808 psError(PS_ERR_IO, true, "Couldn't find %s in the metadata.\n"); 809 } 810 } else if (item->type != PS_META_STR) { 811 // The value at the key isn't of the desired type 812 if (status) { 813 *status = false; 814 } else { 815 psLogMsg(__func__, PS_LOG_WARN, "%s isn't of type PS_META_STR, as expected.\n"); 816 } 817 value = NULL; 818 } else { 819 // We have the requested metadata 820 if (status) { 821 *status = true; 822 } 823 value = item->data.V; // The requested metadata 824 } 825 return value; 826 } 827 828 829 void psMetadataPrint(psMetadata *md, 830 int level) 831 { 832 psMetadataIterator *iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL); // Iterator 833 psMetadataItem *item = NULL; // Item from metadata 834 while ( (item = psMetadataGetAndIncrement(iter)) ) { 835 // Indent... 836 for (int i = 0; i < level; i++) { 837 printf(" "); 838 } 839 printf("%s", item->name); 840 if (item->comment && strlen(item->comment) > 0) { 841 printf(" (%s)", item->comment); 842 } 843 printf(": "); 844 switch (item->type) { 845 case PS_META_STR: 846 printf("%s", (char*)(item->data.V)); 847 break; 848 case PS_META_BOOL: 849 if (item->data.B) { 850 printf("True"); 851 } else { 852 printf("False"); 853 } 854 break; 855 case PS_META_S32: 856 printf("%d", item->data.S32); 857 break; 858 case PS_META_F32: 859 printf("%f", item->data.F32); 860 break; 861 case PS_META_F64: 862 printf("%f", item->data.F64); 863 break; 864 case PS_META_META: 865 printf("\n"); 866 psMetadataPrint(item->data.V, level + 1); 867 break; 868 default: 869 psError(PS_ERR_IO, false, "Non-printable metadata type: %x\n", item->type); 870 } 871 printf("\n"); 872 } 873 psFree(iter); 874 875 return; 876 } 877 878 -
trunk/psLib/src/types/psMetadata.h
r4788 r4817 11 11 * @author Ross Harman, MHPCC 12 12 * 13 * @version $Revision: 1.5 7$ $Name: not supported by cvs2svn $14 * @date $Date: 2005-08-1 6 21:06:33$13 * @version $Revision: 1.58 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2005-08-18 23:41:45 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 613 613 ); 614 614 615 /** Find an item in the metadata collection based on key name and return its metadata value. 616 * 617 * Items may be found in the metadata by providing a key. If the key is 618 * non-unique, the value of the first item is returned. If the item is not found, zero is 619 * returned. 620 * 621 * @return psMetadata*: Value of metadata item. 622 */ 623 psMetadata *psMetadataLookupMD( 624 bool *status, ///< Status of lookup. 625 const psMetadata *md, ///< Metadata collection to lookup metadata item. 626 const char *key ///< Name of metadata key. 627 ); 628 629 /** Find an item in the metadata collection based on key name and return its string value. 630 * 631 * Items may be found in the metadata by providing a key. If the key is 632 * non-unique, the value of the first item is returned. If the item is not found, zero is 633 * returned. 634 * 635 * @return char*: Value of metadata item. 636 */ 637 char *psMetadataLookupString( 638 bool *status, ///< Status of lookup. 639 const psMetadata *md, ///< Metadata collection to lookup metadata item. 640 const char *key ///< Name of metadata key. 641 ); 642 643 /** Print metadata collection to screen */ 644 void psMetadataPrint( 645 psMetadata *md, ///< Metadata collection to print. 646 int level ///< the level of metadata items. 647 ); 648 615 649 /// @} 616 650
Note:
See TracChangeset
for help on using the changeset viewer.
