00001 // 00002 // DISCLAIMER: 00003 // This software was produced by the National Institute of Standards 00004 // and Technology (NIST), an agency of the U.S. government, and by statute is 00005 // not subject to copyright in the United States. Recipients of this 00006 // software assume all responsibility associated with its operation, 00007 // modification,maintenance, and subsequent redistribution. 00008 // 00009 // See NIST Administration Manual 4.09.07 b and Appendix I. 00010 // 00011 #pragma once 00012 #include "ippdme/ippOtherKeyType.h" 00013 #include "ippdme/ippProp.h" 00014 enum propType { 00015 read_only, 00016 read_write, 00017 object, 00018 complex_type, 00019 }; 00020 struct IPPDME_EXT_CLASS ippPropDefinition 00021 { 00022 ippPropDefinition(ippOtherKeyType keyword,propType type); 00023 00024 ippPropDefinition(ippOtherKeyType keyword, const ippPropDefinition* prop,int n); 00025 00026 const ippPropDefinition* find(const ippProp& prop,bool bLeafOnly=true)const; 00027 00028 00029 ippOtherKeyType _keyword; 00030 const ippPropDefinition* _properties; 00031 int _n_properties; 00032 propType _type; 00033 }; 00034 00035 IPPDME_EXT_FUNC bool IsObjectOrProperty(const ippProp& prop); 00036 IPPDME_EXT_FUNC bool IsMainObject( ippOtherKeyType prop1,ippOtherKeyType prop2); 00037 IPPDME_EXT_FUNC bool PropertyIsDouble(const ippProp& prop); 00038 IPPDME_EXT_FUNC bool PropertyIsAllowed(const ippProp& prop); 00039 IPPDME_EXT_FUNC bool PropertyIsAllowedAndWritable(const ippProp& prop); 00040 00041 IPPDME_EXT_FUNC const ippPropDefinition* findPropertyDefinition(const ippProp& prop);