void StrucViewItem::initState() //----------------------------- // if i represent a variable, i must find my type // if the base type is a ClassType, then i am Collapsed // else i am LeafNode { bool do_inherited = false; ClassType * classType; dr_sym_type stype = _info->symtype(); REQUIRE( stype != DR_SYM_NOT_SYM,"strucview::initstate ack"); if( !_initialized ) { if( _classNode != NULL ) { REQUIRE( stype == DR_SYM_CLASS,"strucview::initstate nak"); classType = (ClassType *)_info; _type = _name; } else { classType = flattenTypeDesc( _info, _type ); _name = _info->name(); } if( classType ) { WVList kidInfos; FilterFlags flags = _parent->getFilter(); if( ( flags & FILT_INHERITED ) || ( flags & FILT_ALL_INHERITED )) { do_inherited = true; FILT_RESET_INHERITED( flags ); } classType->dataMembers( kidInfos, flags ); if( kidInfos.count() != 0 ) { _expandState = Collapsed; _parent->addSeen( this ); for( int i = 0; i < kidInfos.count(); i++ ) { _kids.add( new StrucViewItem( _parent, ((Symbol *)kidInfos[i]), _indentLevel + 1 ) ); } } else { _expandState = LeafNode; } if( classType != _info ) { delete classType; } if( do_inherited ) { startInherited(); } } else { _expandState = LeafNode; } _initialized = true; } }
void DTViewClass::load() //---------------------- { WVList dataMembers; WVList methods; WVList friends; int i; WString str; ClassType * cls = (ClassType *) _symbol; Symbol * s; _members->clearAndDestroy(); cls->dataMembers( dataMembers ); cls->memberFunctions( methods ); cls->friendFunctions( friends ); for( i = 0; i < friends.count(); i += 1 ) { s = (Symbol *) friends[ i ]; str.printf( " friend %s;", s->scopedName( FALSE ) ); _members->insert( new ClassMember( s, str.gets() ) ); } for( i = 0; i < dataMembers.count(); i += 1 ) { s = (Symbol *) dataMembers[ i ]; str.printf( " %s;", s->scopedName( FALSE ) ); _members->insert( new ClassMember( s, str.gets() ) ); } for( i = 0; i < methods.count(); i += 1 ) { s = (Symbol *) methods[ i ]; str.printf( " %s;", s->scopedName( FALSE ) ); _members->insert( new ClassMember( s, str.gets() ) ); } addDescriptions(); fillBox(); }