// This file may be redistributed and modified only under the terms of
// the GNU Lesser General Public License (See COPYING for details).
// Copyright 2000-2001 Stefanus Du Toit and Aloril.
// Copyright 2001-2005 Alistair Riddoch.
// Automatically generated using gen_cpp.py.

#include <Atlas/Objects/Dispatcher.h>

namespace Atlas { namespace Objects { 

Dispatcher::~Dispatcher()
{
}

void Dispatcher::addMethod(int num, objectArrivedPtr method)
{
    m_methods.insert(std::make_pair<int, objectArrivedPtr>(num, method));
}

void Dispatcher::objectArrived(const Root& o)
{
    dispatchObject(o);
}

void Dispatcher::dispatchObject(const Root& obj)
{
    switch(obj->getClassNo()) {
    case ROOT_NO:
        objectRootArrived(smart_dynamic_cast<Root>(obj));
        break;
    case Entity::ROOT_ENTITY_NO:
        objectRootEntityArrived(smart_dynamic_cast<Entity::RootEntity>(obj));
        break;
    case Entity::ADMIN_ENTITY_NO:
        objectAdminEntityArrived(smart_dynamic_cast<Entity::AdminEntity>(obj));
        break;
    case Entity::ACCOUNT_NO:
        objectAccountArrived(smart_dynamic_cast<Entity::Account>(obj));
        break;
    case Entity::PLAYER_NO:
        objectPlayerArrived(smart_dynamic_cast<Entity::Player>(obj));
        break;
    case Entity::ADMIN_NO:
        objectAdminArrived(smart_dynamic_cast<Entity::Admin>(obj));
        break;
    case Entity::GAME_NO:
        objectGameArrived(smart_dynamic_cast<Entity::Game>(obj));
        break;
    case Entity::GAME_ENTITY_NO:
        objectGameEntityArrived(smart_dynamic_cast<Entity::GameEntity>(obj));
        break;
    case Operation::ROOT_OPERATION_NO:
        objectRootOperationArrived(smart_dynamic_cast<Operation::RootOperation>(obj));
        break;
    case Operation::ACTION_NO:
        objectActionArrived(smart_dynamic_cast<Operation::Action>(obj));
        break;
    case Operation::CREATE_NO:
        objectCreateArrived(smart_dynamic_cast<Operation::Create>(obj));
        break;
    case Operation::COMBINE_NO:
        objectCombineArrived(smart_dynamic_cast<Operation::Combine>(obj));
        break;
    case Operation::DIVIDE_NO:
        objectDivideArrived(smart_dynamic_cast<Operation::Divide>(obj));
        break;
    case Operation::COMMUNICATE_NO:
        objectCommunicateArrived(smart_dynamic_cast<Operation::Communicate>(obj));
        break;
    case Operation::TALK_NO:
        objectTalkArrived(smart_dynamic_cast<Operation::Talk>(obj));
        break;
    case Operation::DELETE_NO:
        objectDeleteArrived(smart_dynamic_cast<Operation::Delete>(obj));
        break;
    case Operation::SET_NO:
        objectSetArrived(smart_dynamic_cast<Operation::Set>(obj));
        break;
    case Operation::AFFECT_NO:
        objectAffectArrived(smart_dynamic_cast<Operation::Affect>(obj));
        break;
    case Operation::MOVE_NO:
        objectMoveArrived(smart_dynamic_cast<Operation::Move>(obj));
        break;
    case Operation::WIELD_NO:
        objectWieldArrived(smart_dynamic_cast<Operation::Wield>(obj));
        break;
    case Operation::GET_NO:
        objectGetArrived(smart_dynamic_cast<Operation::Get>(obj));
        break;
    case Operation::PERCEIVE_NO:
        objectPerceiveArrived(smart_dynamic_cast<Operation::Perceive>(obj));
        break;
    case Operation::LOOK_NO:
        objectLookArrived(smart_dynamic_cast<Operation::Look>(obj));
        break;
    case Operation::LISTEN_NO:
        objectListenArrived(smart_dynamic_cast<Operation::Listen>(obj));
        break;
    case Operation::SNIFF_NO:
        objectSniffArrived(smart_dynamic_cast<Operation::Sniff>(obj));
        break;
    case Operation::TOUCH_NO:
        objectTouchArrived(smart_dynamic_cast<Operation::Touch>(obj));
        break;
    case Operation::LOGIN_NO:
        objectLoginArrived(smart_dynamic_cast<Operation::Login>(obj));
        break;
    case Operation::LOGOUT_NO:
        objectLogoutArrived(smart_dynamic_cast<Operation::Logout>(obj));
        break;
    case Operation::IMAGINARY_NO:
        objectImaginaryArrived(smart_dynamic_cast<Operation::Imaginary>(obj));
        break;
    case Operation::USE_NO:
        objectUseArrived(smart_dynamic_cast<Operation::Use>(obj));
        break;
    case Operation::INFO_NO:
        objectInfoArrived(smart_dynamic_cast<Operation::Info>(obj));
        break;
    case Operation::PERCEPTION_NO:
        objectPerceptionArrived(smart_dynamic_cast<Operation::Perception>(obj));
        break;
    case Operation::SIGHT_NO:
        objectSightArrived(smart_dynamic_cast<Operation::Sight>(obj));
        break;
    case Operation::APPEARANCE_NO:
        objectAppearanceArrived(smart_dynamic_cast<Operation::Appearance>(obj));
        break;
    case Operation::DISAPPEARANCE_NO:
        objectDisappearanceArrived(smart_dynamic_cast<Operation::Disappearance>(obj));
        break;
    case Operation::SOUND_NO:
        objectSoundArrived(smart_dynamic_cast<Operation::Sound>(obj));
        break;
    case Operation::SMELL_NO:
        objectSmellArrived(smart_dynamic_cast<Operation::Smell>(obj));
        break;
    case Operation::FEEL_NO:
        objectFeelArrived(smart_dynamic_cast<Operation::Feel>(obj));
        break;
    case Operation::ERROR_NO:
        objectErrorArrived(smart_dynamic_cast<Operation::Error>(obj));
        break;
    case Entity::ANONYMOUS_NO:
        objectAnonymousArrived(smart_dynamic_cast<Entity::Anonymous>(obj));
        break;
    case Operation::GENERIC_NO:
        objectGenericArrived(smart_dynamic_cast<Operation::Generic>(obj));
        break;
    default:
        methodMap_t::const_iterator I = m_methods.find(obj->getClassNo());
        if (I != m_methods.end()) {
            (this->*I->second)(obj);
        } else {
            unknownObjectArrived(obj);
        }
    }
}
} } // namespace Atlas::Objects


syntax highlighted by Code2HTML, v. 0.9.1