%{ #include %} %ignore Ogre::ConfigFile::load(const String&, const String&); /* * A record of a big battle. * //%ignore *::getNext(); //%ignore Ogre::MapIteratorWrapper::getNext(); %rename(getNextOld) Ogre::MapIteratorWrapper::getNext(); //%feature("valuewrapper") Ogre::ConfigFile::SectionIterator; //class Ogre::ConfigFile::SectionIterator; //%feature("valuewrapper") Ogre::ConfigFile::SettingsIterator; //class Ogre::ConfigFile::SettingsIterator; %template(StdPairTemplate) std::pair; //%template(Generanl) Ogre::CategorisedAllocPolicy; //%template() Ogre::CategorisedAllocPolicy; %template(StlAllocatorB) Ogre::STLAllocatorBase< std::pair< std::string const,std::string > >; // avoid to collide the STLAllocator::allocate method with the allocate function of STLAllocator generated by swig. %rename(allocate2) allocate( size_type count, typename std::allocator::const_pointer ptr = 0 ); %template(StlAllocatorA) Ogre::STLAllocator, Ogre::CategorisedAllocPolicy< Ogre::MEMCATEGORY_GENERAL > >; // typedef multimap< String,String >::type SettingsMultiMap %template(StringPair) std::pair; %template(SettingsMapTemplate) std::map< Ogre::String, Ogre::String >; %template(SettingsMultiMapTemplate) std::multimap< Ogre::String, Ogre::String >; // typedef MapIterator< SettingsMultiMap > %template(MapIteratorSettingsTemplate) Ogre::MapIterator; // typedef map< String, SettingsMultiMap * >::type SettingsBySection %template(StringMultimap) std::multimap, Ogre::STLAllocator, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0u> > > ; %template(SettingsBySectionTemplate) std::map; // typedef MapIterator< SettingsBySection > SectionIterator %template(IteratorWrapperTemplate) Ogre::IteratorWrapper; %template(MapIteratorWrapperTemplate) Ogre::MapIteratorWrapper; %template(MapIteratorTemplate) Ogre::MapIterator; %extend Ogre::MapIteratorWrapper { // std::multimap< Ogre::String, Ogre::String >* getNext2() { Ogre::ConfigFile::SettingsMultiMap* getNext2() { Ogre::String sec, type, arch; Ogre::ConfigFile::SettingsMultiMap* settings = self->getNext(); return settings; } } */ %extend Ogre::ConfigFile { void each_Settings() { Ogre::ConfigFile::SectionIterator seci = self->getSectionIterator(); Ogre::String secName, typeName, archName; while (seci.hasMoreElements()) { secName = seci.peekNextKey(); Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext(); Ogre::ConfigFile::SettingsMultiMap::iterator i; for (i = settings->begin(); i != settings->end(); ++i) { typeName = i->first; archName = i->second; rb_yield_values(3, rb_str_new2(secName.c_str()), rb_str_new2(typeName.c_str()), rb_str_new2(archName.c_str())); } } } } %include OgreConfigFile.h %{ %}