5
#include "kdlib/exceptions.h"
11
///////////////////////////////////////////////////////////////////////////////
13
const TypeFieldPtr& FieldCollection::lookup(const std::wstring &name) const
15
FieldList::const_iterator it;
16
for (it = m_fields.begin(); it != m_fields.end(); ++it)
18
if ( !(*it)->isInheritedMember() && (*it)->getName() == name)
22
for (it = m_fields.begin(); it != m_fields.end(); ++it)
24
if ( (*it)->isInheritedMember() && (*it)->getName() == name )
28
std::wstringstream sstr;
29
sstr << L"field \"" << name << L" not found";
31
throw TypeException( m_name, sstr.str() );
34
///////////////////////////////////////////////////////////////////////////////
36
TypeFieldPtr& FieldCollection::lookup(const std::wstring &name)
38
const TypeFieldPtr &filedPtr = const_cast<const FieldCollection&>(*this).lookup(name);
39
return const_cast<TypeFieldPtr&>(filedPtr);
43
///////////////////////////////////////////////////////////////////////////////
45
const TypeFieldPtr& FieldCollection::lookup(size_t index) const
47
if ( index >= m_fields.size() )
48
throw IndexException( index );
50
return m_fields[index];
53
//////////////////////////////////////////////////////////////////////////////
55
TypeFieldPtr& FieldCollection::lookup(size_t index)
57
const TypeFieldPtr &filedPtr = const_cast<const FieldCollection&>(*this).lookup(index);
58
return const_cast<TypeFieldPtr&>(filedPtr);
61
//////////////////////////////////////////////////////////////////////////////
63
size_t FieldCollection::getIndex(const std::wstring &name) const
67
FieldList::const_iterator it;
68
for ( it = m_fields.begin(); it != m_fields.end(); ++it, ++index )
70
if ( (*it)->getName() == name )
74
std::wstringstream sstr;
75
sstr << L"field \"" << name << L" not found";
77
throw TypeException( m_name, sstr.str() );
80
//////////////////////////////////////////////////////////////////////////////
82
TypeInfoPtr SymbolUdtField::getTypeInfo()
84
return loadType(m_symbol);
87
///////////////////////////////////////////////////////////////////////////////
89
NumVariant EnumField::getValue() const
92
m_symbol->getValue(vr);
96
///////////////////////////////////////////////////////////////////////////////
98
} // end kdlib namespace