本文整理汇总了C++中AbstractClassRep::getNextClass方法的典型用法代码示例。如果您正苦于以下问题:C++ AbstractClassRep::getNextClass方法的具体用法?C++ AbstractClassRep::getNextClass怎么用?C++ AbstractClassRep::getNextClass使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AbstractClassRep
的用法示例。
在下文中一共展示了AbstractClassRep::getNextClass方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
void run()
{
for( AbstractClassRep* classRep = AbstractClassRep::getClassList();
classRep != NULL;
classRep = classRep->getNextClass() )
{
// Create object.
ConsoleObject* object = classRep->create();
test( object, avar( "AbstractClassRep::create failed for class '%s'", classRep->getClassName() ) );
if( !object )
continue;
// Make sure it's a SimObject.
SimObject* simObject = dynamic_cast< SimObject* >( object );
if( !simObject )
{
SAFE_DELETE( object );
continue;
}
// Register the object.
bool result = simObject->registerObject();
test( result, avar( "registerObject failed for object of class '%s'", classRep->getClassName() ) );
if( result )
simObject->deleteObject();
else
SAFE_DELETE( simObject );
}
}
示例2: loadFromPath
void EditorIconRegistry::loadFromPath( const String &path, bool overwrite )
{
AbstractClassRep *classRep = AbstractClassRep::getClassList();
while ( classRep )
{
String iconFile = String::ToString( "%s%s", path.c_str(), classRep->getClassName() );
add( classRep->getClassName(), iconFile.c_str(), overwrite );
classRep = classRep->getNextClass();
}
String defaultIconFile = path + "default";
mDefaultIcon.set( defaultIconFile,
&GFXDefaultPersistentProfile,
avar("%s() - mIcons[] (line %d)",
__FUNCTION__, __LINE__) );
}
示例3: setClassName
void GuiInspectorDatablockField::setClassName( StringTableEntry className )
{
// Walk the ACR list and find a matching class if any.
AbstractClassRep *walk = AbstractClassRep::getClassList();
while(walk)
{
if(!dStricmp(walk->getClassName(), className))
{
// Match!
mDesiredClass = walk;
return;
}
walk = walk->getNextClass();
}
// No dice.
Con::warnf("GuiInspectorDatablockField::setClassName - no class '%s' found!", className);
return;
}
示例4: findIcon
GFXTexHandle EditorIconRegistry::findIcon( const char *className )
{
// On the chance we have this className already in the map,
// check there first because its a lot faster...
StringNoCase key( className );
IconMap::Iterator icon = mIcons.find( key );
if ( icon != mIcons.end() && icon->value.isValid() )
return icon->value;
// Well, we could still have an icon for a parent class,
// so find the AbstractClassRep for the className.
//
// Unfortunately the only way to do this is looping through
// the AbstractClassRep linked list.
bool found = false;
AbstractClassRep* pClassRep = AbstractClassRep::getClassList();
while ( pClassRep )
{
if ( key.equal( pClassRep->getClassName(), String::NoCase ) )
{
found = true;
break;
}
pClassRep = pClassRep->getNextClass();
}
if ( !found )
{
Con::errorf( "EditorIconRegistry::findIcon, passed className %s was not an AbstractClassRep!", key.c_str() );
return mDefaultIcon;
}
// Now do a find by AbstractClassRep recursively up the class tree...
return findIcon( pClassRep );
}
示例5: constructField
GuiInspectorField* GuiInspectorGroup::constructField( S32 fieldType )
{
// See if we can construct a field of this type
ConsoleBaseType *cbt = ConsoleBaseType::getType(fieldType);
if( !cbt )
return NULL;
// Alright, is it a datablock?
if(cbt->isDatablock())
{
// Default to GameBaseData
StringTableEntry typeClassName = cbt->getTypeClassName();
if( mParent->getNumInspectObjects() == 1 && !dStricmp(typeClassName, "GameBaseData") )
{
// Try and setup the classname based on the object type
char className[256];
dSprintf(className,256,"%sData", mParent->getInspectObject( 0 )->getClassName());
// Walk the ACR list and find a matching class if any.
AbstractClassRep *walk = AbstractClassRep::getClassList();
while(walk)
{
if(!dStricmp(walk->getClassName(), className))
break;
walk = walk->getNextClass();
}
// We found a valid class
if (walk)
typeClassName = walk->getClassName();
}
GuiInspectorDatablockField *dbFieldClass = new GuiInspectorDatablockField( typeClassName );
if( dbFieldClass != NULL )
{
// return our new datablock field with correct datablock type enumeration info
return dbFieldClass;
}
}
// Nope, not a datablock. So maybe it has a valid inspector field override we can use?
if(!cbt->getInspectorFieldType())
// Nothing, so bail.
return NULL;
// Otherwise try to make it!
ConsoleObject *co = create(cbt->getInspectorFieldType());
GuiInspectorField *gif = dynamic_cast<GuiInspectorField*>(co);
if(!gif)
{
// Wasn't appropriate type, bail.
delete co;
return NULL;
}
return gif;
}