33 #ifndef TCBUSINESSOBJECTREF_HXX
35 #define TCBUSINESSOBJECTREF_HXX
42 #include <cxpom/cxpom_errors.h>
46 #include <type_traits>
47 #include <pom/pom/pom.h>
51 static_assert( std::is_base_of_v<::Teamcenter::RootObject, T> );
68 m_tag =
object->getTag();
99 operator tag_t()
const {
return m_tag; }
113 catch (
const IFail& )
116 return pt ?
true :
false;
134 std::string typeName;
135 std::string expectedTypeName =
typeid(T).name();
139 tag_t objectType = NULLTAG;
140 logical verdict =
false;
141 size_t pos = expectedTypeName.find(
"::");
143 if (pos != std::string::npos)
145 expectedTypeName = expectedTypeName.substr(pos + 2);
148 if (POM_is_tag_valid(
m_tag, &verdict) == POM_ok && verdict )
153 pstatus = POM_name_of_class(objectType, &tempTypeName);
154 typeName.assign(tempTypeName.
getString());
158 typeName.assign(
"Runtime Class");
161 catch (
const IFail& )
163 typeName.assign(
"unknown");
166 throw IFail( CXPOM_wrong_class, typeName.c_str(), expectedTypeName.c_str() );