#include "entitylib.h"
#include "namespace.h"
-inline bool string_is_integer( const char* string ){
- strtol( string, const_cast<char**>( &string ), 10 );
- return *string == '\0';
+inline bool string_is_integer(const char *string)
+{
+ strtol(string, const_cast<char **>( &string ), 10);
+ return *string == '\0';
}
-typedef bool ( *KeyIsNameFunc )( const char* key );
+typedef bool ( *KeyIsNameFunc )(const char *key);
-class KeyIsName
-{
+class KeyIsName {
public:
-KeyIsNameFunc m_keyIsName;
-const char* m_nameKey;
+ KeyIsNameFunc m_keyIsName;
+ const char *m_nameKey;
-KeyIsName(){
-}
+ KeyIsName()
+ {
+ }
};
-typedef MemberCaller<EntityKeyValue, void(const char*), &EntityKeyValue::assign> KeyValueAssignCaller;
-typedef MemberCaller<EntityKeyValue, void(const KeyObserver&), &EntityKeyValue::attach> KeyValueAttachCaller;
-typedef MemberCaller<EntityKeyValue, void(const KeyObserver&), &EntityKeyValue::detach> KeyValueDetachCaller;
+typedef MemberCaller<EntityKeyValue, void(const char *), &EntityKeyValue::assign> KeyValueAssignCaller;
+typedef MemberCaller<EntityKeyValue, void(const KeyObserver &), &EntityKeyValue::attach> KeyValueAttachCaller;
+typedef MemberCaller<EntityKeyValue, void(const KeyObserver &), &EntityKeyValue::detach> KeyValueDetachCaller;
+
+class NameKeys : public Entity::Observer, public Namespaced {
+ Namespace *m_namespace;
+ EntityKeyValues &m_entity;
+ KeyIsNameFunc m_keyIsName;
+
+ NameKeys(const NameKeys &other);
+
+ NameKeys &operator=(const NameKeys &other);
+
+ typedef std::map<CopiedString, EntityKeyValue *> KeyValues;
+ KeyValues m_keyValues;
+
+ void insertName(const char *key, EntityKeyValue &value)
+ {
+ if (m_namespace != 0 && m_keyIsName(key)) {
+ //globalOutputStream() << "insert " << key << "\n";
+ m_namespace->attach(KeyValueAssignCaller(value), KeyValueAttachCaller(value));
+ }
+ }
+
+ void eraseName(const char *key, EntityKeyValue &value)
+ {
+ if (m_namespace != 0 && m_keyIsName(key)) {
+ //globalOutputStream() << "erase " << key << "\n";
+ m_namespace->detach(KeyValueAssignCaller(value), KeyValueDetachCaller(value));
+ }
+ }
+
+ void insertAll()
+ {
+ for (KeyValues::iterator i = m_keyValues.begin(); i != m_keyValues.end(); ++i) {
+ insertName((*i).first.c_str(), *(*i).second);
+ }
+ }
+
+ void eraseAll()
+ {
+ for (KeyValues::iterator i = m_keyValues.begin(); i != m_keyValues.end(); ++i) {
+ eraseName((*i).first.c_str(), *(*i).second);
+ }
+ }
-class NameKeys : public Entity::Observer, public Namespaced
-{
-Namespace* m_namespace;
-EntityKeyValues& m_entity;
-KeyIsNameFunc m_keyIsName;
-NameKeys( const NameKeys& other );
-NameKeys& operator=( const NameKeys& other );
-
-typedef std::map<CopiedString, EntityKeyValue*> KeyValues;
-KeyValues m_keyValues;
-
-void insertName( const char* key, EntityKeyValue& value ){
- if ( m_namespace != 0 && m_keyIsName( key ) ) {
- //globalOutputStream() << "insert " << key << "\n";
- m_namespace->attach( KeyValueAssignCaller( value ), KeyValueAttachCaller( value ) );
- }
-}
-void eraseName( const char* key, EntityKeyValue& value ){
- if ( m_namespace != 0 && m_keyIsName( key ) ) {
- //globalOutputStream() << "erase " << key << "\n";
- m_namespace->detach( KeyValueAssignCaller( value ), KeyValueDetachCaller( value ) );
- }
-}
-void insertAll(){
- for ( KeyValues::iterator i = m_keyValues.begin(); i != m_keyValues.end(); ++i )
- {
- insertName( ( *i ).first.c_str(), *( *i ).second );
- }
-}
-void eraseAll(){
- for ( KeyValues::iterator i = m_keyValues.begin(); i != m_keyValues.end(); ++i )
- {
- eraseName( ( *i ).first.c_str(), *( *i ).second );
- }
-}
public:
-NameKeys( EntityKeyValues& entity ) : m_namespace( 0 ), m_entity( entity ), m_keyIsName( Static<KeyIsName>::instance().m_keyIsName ){
- m_entity.attach( *this );
-}
-~NameKeys(){
- m_entity.detach( *this );
-}
-void setNamespace( Namespace& space ){
- eraseAll();
- m_namespace = &space;
- insertAll();
-}
-void setKeyIsName( KeyIsNameFunc keyIsName ){
- eraseAll();
- m_keyIsName = keyIsName;
- insertAll();
-}
-void insert( const char* key, EntityKeyValue& value ){
- m_keyValues.insert( KeyValues::value_type( key, &value ) );
- insertName( key, value );
-}
-void erase( const char* key, EntityKeyValue& value ){
- eraseName( key, value );
- m_keyValues.erase( key );
-}
+ NameKeys(EntityKeyValues &entity) : m_namespace(0), m_entity(entity),
+ m_keyIsName(Static<KeyIsName>::instance().m_keyIsName)
+ {
+ m_entity.attach(*this);
+ }
+
+ ~NameKeys()
+ {
+ m_entity.detach(*this);
+ }
+
+ void setNamespace(Namespace &space)
+ {
+ eraseAll();
+ m_namespace = &space;
+ insertAll();
+ }
+
+ void setKeyIsName(KeyIsNameFunc keyIsName)
+ {
+ eraseAll();
+ m_keyIsName = keyIsName;
+ insertAll();
+ }
+
+ void insert(const char *key, EntityKeyValue &value)
+ {
+ m_keyValues.insert(KeyValues::value_type(key, &value));
+ insertName(key, value);
+ }
+
+ void erase(const char *key, EntityKeyValue &value)
+ {
+ eraseName(key, value);
+ m_keyValues.erase(key);
+ }
};
-inline bool keyIsNameDoom3( const char* key ){
- return string_equal( key, "target" )
- || ( string_equal_n( key, "target", 6 ) && string_is_integer( key + 6 ) )
- || string_equal( key, "name" );
+inline bool keyIsNameDoom3(const char *key)
+{
+ return string_equal(key, "target")
+ || (string_equal_n(key, "target", 6) && string_is_integer(key + 6))
+ || string_equal(key, "name");
}
-inline bool keyIsNameDoom3Doom3Group( const char* key ){
- return keyIsNameDoom3( key )
- || string_equal( key, "model" );
+inline bool keyIsNameDoom3Doom3Group(const char *key)
+{
+ return keyIsNameDoom3(key)
+ || string_equal(key, "model");
}
-inline bool keyIsNameQuake3( const char* key ){
- return string_equal( key, "target" )
- || string_equal( key, "targetname" )
- || string_equal( key, "killtarget" )
- || ( string_equal_n( key, "target", 6 ) && string_is_integer( key + 6 ) ); // Nexuiz
+inline bool keyIsNameQuake3(const char *key)
+{
+ return string_equal(key, "target")
+ || string_equal(key, "targetname")
+ || string_equal(key, "killtarget")
+ || (string_equal_n(key, "target", 6) && string_is_integer(key + 6)); // Nexuiz
}
#endif