|
From: Frank V. C. <fr...@us...> - 2000-10-14 11:49:37
|
Update of /cvsroot/corelinux/clfw/src/testdrivers/exf1 In directory slayer.i.sourceforge.net:/tmp/cvs-serv10085/src/testdrivers/exf1 Modified Files: examp1.cpp Log Message: 116227 Release 0.2.1 Index: examp1.cpp =================================================================== RCS file: /cvsroot/corelinux/clfw/src/testdrivers/exf1/examp1.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -r1.6 -r1.7 *** examp1.cpp 2000/10/04 05:20:26 1.6 --- examp1.cpp 2000/10/14 11:49:34 1.7 *************** *** 45,50 **** #endif ! #if !defined(__NUMBER_HPP) ! #include <clfw/Number.hpp> #endif --- 45,50 ---- #endif ! #if !defined(__INTEGER_HPP) ! #include <clfw/Integer.hpp> #endif *************** *** 63,66 **** --- 63,68 ---- int main( void ); + void dumpMetaType( FrameworkEntityPtr ); + // // Assertion and Exception handlers *************** *** 70,75 **** - - int main( void ) { --- 72,75 ---- *************** *** 89,131 **** // First we play around with the root entity // - const MetaType *aMTF= FrameworkEntity::getTypeDescriptor(); FrameworkEntityPtr aFrameworkEntity = new FrameworkEntity; ! cout << endl << "Framework entity = " << aFrameworkEntity << endl ! << "Framework entity type version = " << aFrameworkEntity->getType()->getTypeVersion() << endl ! << "Framework entity instance size = " << aFrameworkEntity->getType()->getTypeSize() << endl ! << "Framework entity Instance name = " << aFrameworkEntity->getType()->getInstanceTypeName() << endl ! << "Framework entity Meta name = " << aFrameworkEntity->getType()->getMetaTypeName() << endl; - cout << "Compare meta-types (is aFrameworkEntity a FrameworkEntity type?) = "; - if ( aFrameworkEntity->getType()->isType(aMTF) == true ) - { - cout << "yes!" << endl; - } - else - { - cout << "no!" << endl; - } - // // Now we sweeten the pot with a number fetch and show off the class // factory stuff // - - const MetaType *aMTN= Number::getTypeDescriptor(); - - NumberPtr aNumber = Number::create(); ! cout << endl << "Number entity = " << aNumber << endl ! << "Number entity type version = " << aNumber->getType()->getTypeVersion() << endl ! << "Number entity instance size = " << aNumber->getType()->getTypeSize() << endl ! << "Number entity Instance name = " << aNumber->getType()->getInstanceTypeName() << endl ! << "Number entity Meta name = " << aNumber->getType()->getMetaTypeName() << endl; ! cout << "Compare meta-types (is aNumber a FrameworkEntity type?) = "; ! ! if ( aNumber->getType()->isType(aMTF) == true ) { cout << "yes!" << endl; --- 89,112 ---- // First we play around with the root entity // FrameworkEntityPtr aFrameworkEntity = new FrameworkEntity; ! dumpMetaType( aFrameworkEntity ); // // Now we sweeten the pot with a number fetch and show off the class // factory stuff // ! IntegerPtr aInteger = Integer::create(); ! aInteger->setValue(8); ! dumpMetaType( aInteger ); ! ! cout << "Check metatype hiearchy (is " << ! aInteger->getType()->getMetaTypeName() << " a type of " << ! aFrameworkEntity->getType()->getMetaTypeName() << "?) = "; ! if ( aInteger->getType()->isTypeOf(aFrameworkEntity->getType()) == true ) { cout << "yes!" << endl; *************** *** 136,151 **** } ! cout << "Check metatype hiearchy (is MetaTypeNumber a type of MetaTypeRoot?) = "; ! if ( aMTN->isTypeOf(aMTF) == true ) ! { ! cout << "yes!" << endl; ! } ! else ! { ! cout << "no!" << endl; ! } ! Number::destroy( aNumber ); delete aFrameworkEntity; --- 117,129 ---- } ! // ! // Call destroy ! // ! Integer::destroy( aInteger ); ! // ! // Call indirect destroy ! // delete aFrameworkEntity; *************** *** 170,173 **** --- 148,245 ---- return 0; // Single exit point (Section 4.0) + } + + // + // Dump info on types + // + + void dumpMetaType( FrameworkEntityPtr anFEPtr ) + { + const MetaTypeCptr aMTPtr( anFEPtr->getType() ); + + // + // Standard stuff + // + + cout << endl << "entity address = " << anFEPtr << endl + << "entity type version = " << aMTPtr->getTypeVersion() << endl + << "entity instance size = " << aMTPtr->getTypeSize() << endl + << "entity Instance name = " << aMTPtr->getInstanceTypeName() << endl + << "entity Meta name = " << aMTPtr->getMetaTypeName() << endl; + + cout << "Compare meta-types with instance type = "; + + if ( anFEPtr->getType()->isType(aMTPtr) == true ) + { + cout << "yes!" << endl; + } + else + { + cout << "no!" << endl; + } + + // + // Member dump + // + + MemberDescriptorCptr * const aMDescs = aMTPtr->getInstanceMembers(); + + if( aMDescs == NULLPTR ) + { + cout << "Internal class error for members : " << + aMTPtr->getInstanceTypeName() << endl; + } + else + { + if( aMDescs[0] != NULLPTR ) + { + void *pv(NULLPTR); + int val(5); + + for( int x = 0; aMDescs[x] != NULLPTR; ++x ) + { + cout << "Var name = " << aMDescs[x]->theTypeVariableName << endl; + cout << "Var type = " << aMDescs[x]->theTypeName << endl; + cout << "Var size = " << aMDescs[x]->theSizeInBytes << endl; + if( aMDescs[x]->theGetter != NULLPTR ) + { + pv = (*aMDescs[x]->theGetter)(anFEPtr); + if( pv != NULLPTR ) + { + cout << "\tPre set = " << *((int *)pv) << endl; + } + } + else + { + ; // do nothing + } + if( aMDescs[x]->theSetter != NULLPTR ) + { + (*aMDescs[x]->theSetter)(anFEPtr,&val); + } + else + { + ; // do nothing + } + if( aMDescs[x]->theGetter != NULLPTR ) + { + pv = (*aMDescs[x]->theGetter)(anFEPtr); + if( pv != NULLPTR ) + { + cout << "\tPost set = " << *((int *)pv) << endl; + } + } + else + { + ; // d nothing + } + } + } + else + { + ; // do nothing + } + } + } |