X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=libs%2Feclasslib.h;fp=libs%2Feclasslib.h;h=d2730d62beb07e3b732ad14e8648ec4dc02101f6;hb=e4287c28bb2dafedc81c66e63951d947cfbeb225;hp=7bee547b94b941ee67fa8a79387c4e856ceac56e;hpb=203343b01a7ad87cb3d136689c9936ff5bc23c01;p=xonotic%2Fnetradiant.git diff --git a/libs/eclasslib.h b/libs/eclasslib.h index 7bee547b..d2730d62 100644 --- a/libs/eclasslib.h +++ b/libs/eclasslib.h @@ -1,25 +1,25 @@ /* -Copyright (C) 1999-2006 Id Software, Inc. and contributors. -For a list of contributors, see the accompanying CONTRIBUTORS file. + Copyright (C) 1999-2006 Id Software, Inc. and contributors. + For a list of contributors, see the accompanying CONTRIBUTORS file. -This file is part of GtkRadiant. + This file is part of GtkRadiant. -GtkRadiant is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. + GtkRadiant is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. -GtkRadiant is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + GtkRadiant is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with GtkRadiant; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ + You should have received a copy of the GNU General Public License + along with GtkRadiant; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ -#if !defined (INCLUDED_ECLASSLIB_H) +#if !defined ( INCLUDED_ECLASSLIB_H ) #define INCLUDED_ECLASSLIB_H #include @@ -38,303 +38,268 @@ typedef Vector3 Colour3; class ListAttributeType { - typedef std::pair ListItem; - typedef std::vector ListItems; - ListItems m_items; +typedef std::pair ListItem; +typedef std::vector ListItems; +ListItems m_items; public: - typedef ListItems::const_iterator const_iterator; - const_iterator begin() const - { - return m_items.begin(); - } - const_iterator end() const - { - return m_items.end(); - } - - const ListItem& operator[](std::size_t i) const - { - return m_items[i]; - } - const_iterator findValue(const char* value) const - { - for(ListItems::const_iterator i = m_items.begin(); i != m_items.end(); ++i) - { - if(string_equal(value, (*i).second.c_str())) - { - return i; - } - } - return m_items.end(); - } - - void push_back(const char* name, const char* value) - { - m_items.push_back(ListItems::value_type(name, value)); - } +typedef ListItems::const_iterator const_iterator; +const_iterator begin() const { + return m_items.begin(); +} +const_iterator end() const { + return m_items.end(); +} + +const ListItem& operator[]( std::size_t i ) const { + return m_items[i]; +} +const_iterator findValue( const char* value ) const { + for ( ListItems::const_iterator i = m_items.begin(); i != m_items.end(); ++i ) + { + if ( string_equal( value, ( *i ).second.c_str() ) ) { + return i; + } + } + return m_items.end(); +} + +void push_back( const char* name, const char* value ){ + m_items.push_back( ListItems::value_type( name, value ) ); +} }; class EntityClassAttribute { public: - CopiedString m_type; - CopiedString m_name; - CopiedString m_value; - CopiedString m_description; - EntityClassAttribute() - { - } - EntityClassAttribute(const char* type, const char* name, const char* value = "", const char* description = "") : m_type(type), m_name(name), m_value(value), m_description(description) - { - } +CopiedString m_type; +CopiedString m_name; +CopiedString m_value; +CopiedString m_description; +EntityClassAttribute(){ +} +EntityClassAttribute( const char* type, const char* name, const char* value = "", const char* description = "" ) : m_type( type ), m_name( name ), m_value( value ), m_description( description ){ +} }; typedef std::pair EntityClassAttributePair; typedef std::list EntityClassAttributes; typedef std::list StringList; -inline const char* EntityClassAttributePair_getName(const EntityClassAttributePair& attributePair) -{ - if(!string_empty(attributePair.second.m_name.c_str())) - { - return attributePair.second.m_name.c_str(); - } - return attributePair.first.c_str(); +inline const char* EntityClassAttributePair_getName( const EntityClassAttributePair& attributePair ){ + if ( !string_empty( attributePair.second.m_name.c_str() ) ) { + return attributePair.second.m_name.c_str(); + } + return attributePair.first.c_str(); } -inline const char* EntityClassAttributePair_getDescription(const EntityClassAttributePair& attributePair) -{ - if(!string_empty(attributePair.second.m_description.c_str())) - { - return attributePair.second.m_description.c_str(); - } - return EntityClassAttributePair_getName(attributePair); +inline const char* EntityClassAttributePair_getDescription( const EntityClassAttributePair& attributePair ){ + if ( !string_empty( attributePair.second.m_description.c_str() ) ) { + return attributePair.second.m_description.c_str(); + } + return EntityClassAttributePair_getName( attributePair ); } class EntityClass { public: - CopiedString m_name; - StringList m_parent; - bool fixedsize; - bool unknown; // wasn't found in source - Vector3 mins; - Vector3 maxs; - - Colour3 color; - Shader* m_state_fill; - Shader* m_state_wire; - Shader* m_state_blend; - - CopiedString m_comments; - char flagnames[MAX_FLAGS][32]; - - CopiedString m_modelpath; - CopiedString m_skin; - - void (*free)(EntityClass*); - - EntityClassAttributes m_attributes; - - bool inheritanceResolved; - bool sizeSpecified; - bool colorSpecified; - - const char* name() const - { - return m_name.c_str(); - } - const char* comments() const - { - return m_comments.c_str(); - } - const char* modelpath() const - { - return m_modelpath.c_str(); - } - const char* skin() const - { - return m_skin.c_str(); - } +CopiedString m_name; +StringList m_parent; +bool fixedsize; +bool unknown; // wasn't found in source +Vector3 mins; +Vector3 maxs; + +Colour3 color; +Shader* m_state_fill; +Shader* m_state_wire; +Shader* m_state_blend; + +CopiedString m_comments; +char flagnames[MAX_FLAGS][32]; + +CopiedString m_modelpath; +CopiedString m_skin; + +void ( *free )( EntityClass* ); + +EntityClassAttributes m_attributes; + +bool inheritanceResolved; +bool sizeSpecified; +bool colorSpecified; + +const char* name() const { + return m_name.c_str(); +} +const char* comments() const { + return m_comments.c_str(); +} +const char* modelpath() const { + return m_modelpath.c_str(); +} +const char* skin() const { + return m_skin.c_str(); +} }; -inline const char* EntityClass_valueForKey(const EntityClass& entityClass, const char* key) -{ - for(EntityClassAttributes::const_iterator i = entityClass.m_attributes.begin(); i != entityClass.m_attributes.end(); ++i) - { - if(string_equal(key, (*i).first.c_str())) - { - return (*i).second.m_value.c_str(); - } - } - return ""; +inline const char* EntityClass_valueForKey( const EntityClass& entityClass, const char* key ){ + for ( EntityClassAttributes::const_iterator i = entityClass.m_attributes.begin(); i != entityClass.m_attributes.end(); ++i ) + { + if ( string_equal( key, ( *i ).first.c_str() ) ) { + return ( *i ).second.m_value.c_str(); + } + } + return ""; } -inline EntityClassAttributePair& EntityClass_insertAttribute(EntityClass& entityClass, const char* key, const EntityClassAttribute& attribute = EntityClassAttribute()) -{ - entityClass.m_attributes.push_back(EntityClassAttributePair(key, attribute)); - return entityClass.m_attributes.back(); +inline EntityClassAttributePair& EntityClass_insertAttribute( EntityClass& entityClass, const char* key, const EntityClassAttribute& attribute = EntityClassAttribute() ){ + entityClass.m_attributes.push_back( EntityClassAttributePair( key, attribute ) ); + return entityClass.m_attributes.back(); } -inline void buffer_write_colour_fill(char buffer[128], const Colour3& colour) -{ - sprintf(buffer, "(%g %g %g)", colour[0], colour[1], colour[2]); +inline void buffer_write_colour_fill( char buffer[128], const Colour3& colour ){ + sprintf( buffer, "(%g %g %g)", colour[0], colour[1], colour[2] ); } -inline void buffer_write_colour_wire(char buffer[128], const Colour3& colour) -{ - sprintf(buffer, "<%g %g %g>", colour[0], colour[1], colour[2]); +inline void buffer_write_colour_wire( char buffer[128], const Colour3& colour ){ + sprintf( buffer, "<%g %g %g>", colour[0], colour[1], colour[2] ); } -inline void buffer_write_colour_blend(char buffer[128], const Colour3& colour) -{ - sprintf(buffer, "[%g %g %g]", colour[0], colour[1], colour[2]); +inline void buffer_write_colour_blend( char buffer[128], const Colour3& colour ){ + sprintf( buffer, "[%g %g %g]", colour[0], colour[1], colour[2] ); } -inline Shader* colour_capture_state_fill(const Colour3& colour) -{ - char buffer[128]; - buffer_write_colour_fill(buffer, colour); - return GlobalShaderCache().capture(buffer); +inline Shader* colour_capture_state_fill( const Colour3& colour ){ + char buffer[128]; + buffer_write_colour_fill( buffer, colour ); + return GlobalShaderCache().capture( buffer ); } -inline void colour_release_state_fill(const Colour3& colour) -{ - char buffer[128]; - buffer_write_colour_fill(buffer, colour); - GlobalShaderCache().release(buffer); +inline void colour_release_state_fill( const Colour3& colour ){ + char buffer[128]; + buffer_write_colour_fill( buffer, colour ); + GlobalShaderCache().release( buffer ); } -inline Shader* colour_capture_state_wire(const Colour3& colour) -{ - char buffer[128]; - buffer_write_colour_wire(buffer, colour); - return GlobalShaderCache().capture(buffer); +inline Shader* colour_capture_state_wire( const Colour3& colour ){ + char buffer[128]; + buffer_write_colour_wire( buffer, colour ); + return GlobalShaderCache().capture( buffer ); } -inline void colour_release_state_wire(const Colour3& colour) -{ - char buffer[128]; - buffer_write_colour_wire(buffer, colour); - GlobalShaderCache().release(buffer); +inline void colour_release_state_wire( const Colour3& colour ){ + char buffer[128]; + buffer_write_colour_wire( buffer, colour ); + GlobalShaderCache().release( buffer ); } -inline Shader* colour_capture_state_blend(const Colour3& colour) -{ - char buffer[128]; - buffer_write_colour_blend(buffer, colour); - return GlobalShaderCache().capture(buffer); +inline Shader* colour_capture_state_blend( const Colour3& colour ){ + char buffer[128]; + buffer_write_colour_blend( buffer, colour ); + return GlobalShaderCache().capture( buffer ); } -inline void colour_release_state_blend(const Colour3& colour) -{ - char buffer[128]; - buffer_write_colour_blend(buffer, colour); - GlobalShaderCache().release(buffer); +inline void colour_release_state_blend( const Colour3& colour ){ + char buffer[128]; + buffer_write_colour_blend( buffer, colour ); + GlobalShaderCache().release( buffer ); } -inline void eclass_capture_state(EntityClass* eclass) -{ - eclass->m_state_fill = colour_capture_state_fill(eclass->color); - eclass->m_state_wire = colour_capture_state_wire(eclass->color); - eclass->m_state_blend = colour_capture_state_blend(eclass->color); +inline void eclass_capture_state( EntityClass* eclass ){ + eclass->m_state_fill = colour_capture_state_fill( eclass->color ); + eclass->m_state_wire = colour_capture_state_wire( eclass->color ); + eclass->m_state_blend = colour_capture_state_blend( eclass->color ); } -inline void eclass_release_state(EntityClass* eclass) -{ - colour_release_state_fill(eclass->color); - colour_release_state_wire(eclass->color); - colour_release_state_blend(eclass->color); +inline void eclass_release_state( EntityClass* eclass ){ + colour_release_state_fill( eclass->color ); + colour_release_state_wire( eclass->color ); + colour_release_state_blend( eclass->color ); } // eclass constructor -inline EntityClass* Eclass_Alloc() -{ - EntityClass* e = new EntityClass; +inline EntityClass* Eclass_Alloc(){ + EntityClass* e = new EntityClass; - e->fixedsize = false; - e->unknown = false; - memset(e->flagnames, 0, MAX_FLAGS*32); + e->fixedsize = false; + e->unknown = false; + memset( e->flagnames, 0, MAX_FLAGS * 32 ); - e->maxs = Vector3(-1,-1,-1); - e->mins = Vector3(1, 1, 1); + e->maxs = Vector3( -1,-1,-1 ); + e->mins = Vector3( 1, 1, 1 ); - e->free = 0; + e->free = 0; - e->inheritanceResolved = true; - e->sizeSpecified = false; - e->colorSpecified = false; + e->inheritanceResolved = true; + e->sizeSpecified = false; + e->colorSpecified = false; - return e; + return e; } // eclass destructor -inline void Eclass_Free(EntityClass* e) -{ - eclass_release_state(e); +inline void Eclass_Free( EntityClass* e ){ + eclass_release_state( e ); - delete e; + delete e; } -inline bool classname_equal(const char* classname, const char* other) -{ - return string_equal(classname, other); +inline bool classname_equal( const char* classname, const char* other ){ + return string_equal( classname, other ); } -inline EntityClass* EClass_Create(const char* name, const Vector3& colour, const char* comments) -{ - EntityClass *e = Eclass_Alloc(); - e->free = &Eclass_Free; +inline EntityClass* EClass_Create( const char* name, const Vector3& colour, const char* comments ){ + EntityClass *e = Eclass_Alloc(); + e->free = &Eclass_Free; - e->m_name = name; + e->m_name = name; e->color = colour; - eclass_capture_state(e); + eclass_capture_state( e ); - if (comments) - e->m_comments = comments; + if ( comments ) { + e->m_comments = comments; + } - return e; + return e; } -inline EntityClass* EClass_Create_FixedSize(const char* name, const Vector3& colour, const Vector3& mins, const Vector3& maxs, const char* comments) -{ - EntityClass *e = Eclass_Alloc(); - e->free = &Eclass_Free; +inline EntityClass* EClass_Create_FixedSize( const char* name, const Vector3& colour, const Vector3& mins, const Vector3& maxs, const char* comments ){ + EntityClass *e = Eclass_Alloc(); + e->free = &Eclass_Free; - e->m_name = name; + e->m_name = name; e->color = colour; - eclass_capture_state(e); + eclass_capture_state( e ); - e->fixedsize = true; + e->fixedsize = true; - e->mins = mins; - e->maxs = maxs; + e->mins = mins; + e->maxs = maxs; - if (comments) - e->m_comments = comments; + if ( comments ) { + e->m_comments = comments; + } - return e; + return e; } const Vector3 smallbox[2] = { - Vector3(-8,-8,-8), - Vector3( 8, 8, 8), + Vector3( -8,-8,-8 ), + Vector3( 8, 8, 8 ), }; -inline EntityClass *EntityClass_Create_Default(const char *name, bool has_brushes) -{ +inline EntityClass *EntityClass_Create_Default( const char *name, bool has_brushes ){ // create a new class for it - if (has_brushes) - { - return EClass_Create(name, Vector3(0.0f, 0.5f, 0.0f), "Not found in source."); + if ( has_brushes ) { + return EClass_Create( name, Vector3( 0.0f, 0.5f, 0.0f ), "Not found in source." ); } else { - return EClass_Create_FixedSize(name, Vector3(0.0f, 0.5f, 0.0f), smallbox[0], smallbox[1], "Not found in source."); + return EClass_Create_FixedSize( name, Vector3( 0.0f, 0.5f, 0.0f ), smallbox[0], smallbox[1], "Not found in source." ); } }