+// defines for creation attributes objects
+
+//cout<<"*** Create new CORBA attribute for "<<#CORBA_Name<<endl;
+#define __ReturnCORBAAttribute(OCAF_Name, CORBA_Name) if (theAttr->ID() == OCAF_Name::GetID()) { \
+ SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(Handle(OCAF_Name)::DownCast(theAttr), theOrb); \
+ return Attr->CORBA_Name::_this(); \
+ }
+
+//cout<<"Create New Attribute "<<#CORBA_Name<<endl;
+#define __FindOrCreateAttribute(OCAF_Name, CORBA_Name) if (strcmp(aTypeOfAttribute, #CORBA_Name) == 0) { \
+ Handle(OCAF_Name) anAttr; \
+ if (!Lab.FindAttribute(OCAF_Name::GetID(), anAttr)) { \
+ anAttr = new OCAF_Name; \
+ Lab.AddAttribute(anAttr); \
+ } \
+ SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(anAttr, _orb); \
+ return Attr->CORBA_Name::_this(); \
+ }
+
+//cout<<"Create New Attribute "<<#CORBA_Name<<endl;
+#define __FindOrCreateAttributeLocked(OCAF_Name, CORBA_Name) if (strcmp(aTypeOfAttribute, #CORBA_Name) == 0) { \
+ Handle(OCAF_Name) anAttr; \
+ if (!Lab.FindAttribute(OCAF_Name::GetID(), anAttr)) { \
+ CheckLocked(); \
+ anAttr = new OCAF_Name; \
+ Lab.AddAttribute(anAttr); \
+ } \
+ SALOMEDS_##CORBA_Name##_i* Attr = new SALOMEDS_##CORBA_Name##_i(anAttr, _orb); \
+ return Attr->CORBA_Name::_this(); \
+ }
+