template < typename Type >
class StringConstConverter
{
private:
static TStdStringHT<Type> s_map;
public:
static Type convert( const char* _type );
private:
static void init();
};
//-----------------------------------------------------------------------------
template < typename Type >
Type StringConstConverter< Type >::convert( const char* _type )
{
if( s_map.empty() )
init();
TStdStringHT<Type>::const_iterator itr = s_map.find(_type);
return itr->second;
}
//-----------------------------------------------------------------------------
template < typename Type >
void StringConstConverter< Type >::init()
{
}
//-----------------------------------------------------------------------------
template <>
void StringConstConverter< acdbAttrTypeT >::init()
{
boost::assign::insert( s_map )
( ACDB_ATTR_INT_STR, ACDB_ATTR_INT )
( ACDB_ATTR_FLOAT_STR, ACDB_ATTR_FLOAT )
( ACDB_ATTR_DOUBLE_STR, ACDB_ATTR_DOUBLE )
( ACDB_ATTR_STRING_STR, ACDB_ATTR_STRING )
( ACDB_ATTR_MEMBLK_STR, ACDB_ATTR_MEMBLK )
}
//-----------------------------------------------------------------------------
template <>
void StringConstConverter< acdbScopeTypeT >::init()
{
boost::assign::insert( s_map )
( ACDB_TOGGLE_STR, ACDB_TOGGLE )
( ACDB_BRANCH_STR, ACDB_BRANCH )
( ACDB_EXPR_STR, ACDB_EXPR )
( ACDB_COND_STR, ACDB_COND )
( ACDB_INSTANCE_STR, ACDB_INSTANCE )
( ACDB_PROCESS_STR, ACDB_PROCESS )
( ACDB_BLOCK_STR, ACDB_BLOCK )
( ACDB_FUNCTION_STR, ACDB_FUNCTION )
( ACDB_FORKJOIN_STR, ACDB_FORKJOIN )
( ACDB_GENERATE_STR, ACDB_GENERATE )
( ACDB_GENERIC_STR, ACDB_GENERIC )
( ACDB_CLASS_STR, ACDB_CLASS )
( ACDB_COVERGROUP_STR, ACDB_COVERGROUP )
( ACDB_COVERINSTANCE_STR, ACDB_COVERINSTANCE )
( ACDB_COVERPOINT_STR, ACDB_COVERPOINT )
( ACDB_CROSS_STR, ACDB_CROSS )
( ACDB_COVER_STR, ACDB_COVER )
( ACDB_ASSERT_STR, ACDB_ASSERT )
( ACDB_PROGRAM_STR, ACDB_PROGRAM )
( ACDB_PACKAGE_STR, ACDB_PACKAGE )
( ACDB_TASK_STR, ACDB_TASK )
( ACDB_INTERFACE_STR, ACDB_INTERFACE )
( ACDB_FSM_STR, ACDB_FSM )
( ACDB_TESTPLAN_STR, ACDB_TESTPLAN )
( ACDB_DU_MODULE_STR, ACDB_DU_MODULE )
( ACDB_DU_ARCH_STR, ACDB_DU_ARCH )
( ACDB_DU_PACKAGE_STR, ACDB_DU_PACKAGE )
( ACDB_DU_PROGRAM_STR, ACDB_DU_PROGRAM )
( ACDB_DU_INTERFACE_STR, ACDB_DU_INTERFACE )
( ACDB_FSM_STATES_STR, ACDB_FSM_STATES )
( ACDB_FSM_TRANS_STR, ACDB_FSM_TRANS )
;
}