1 // This file may be redistributed and modified only under the terms of
2 // the GNU Lesser General Public License (See COPYING for details).
3 // Copyright (C) 2000 Stefanus Du Toit
4 
5 #ifndef ATLAS_OBJECTS_DECODER_H
6 #define ATLAS_OBJECTS_DECODER_H
7 
8 #include <Atlas/Message/DecoderBase.h>
9 
10 namespace Atlas { namespace Objects {
11 
12 class Root;
13 
14 namespace Entity {
15 
16 class Account;
17 class Admin;
18 class AdminEntity;
19 class Game;
20 class Player;
21 class RootEntity;
22 
23 }
24 
25 namespace Operation {
26 
27 class Action;
28 class Appearance;
29 class Combine;
30 class Communicate;
31 class Create;
32 class Delete;
33 class Disappearance;
34 class Divide;
35 class Error;
36 class Feel;
37 class Get;
38 class Imaginary;
39 class Info;
40 class Listen;
41 class Login;
42 class Logout;
43 class Look;
44 class Move;
45 class Perceive;
46 class Perception;
47 class RootOperation;
48 class Set;
49 class Sight;
50 class Smell;
51 class Sniff;
52 class Sound;
53 class Talk;
54 class Touch;
55 
56 }
57 
58 /** Objects hierarchy decoder
59  *
60  * This decoder can be bound to a codec, will assemble incoming messages,
61  * check their type, convert them into the appropriate instance in the
62  * Objects hierarchy and call the relevant member functions, which
63  * subclasses can conveniently override to pick up the object.
64  *
65  * @see Atlas::Objects::Encoder
66  * @author Stefanus Du Toit <sdt@gmx.net>
67  */
68 class Decoder : public Atlas::Message::DecoderBase
69 {
70 public:
71     /// Default destructor.
72     virtual ~Decoder();
73 
74 protected:
75     /// Overridden by Objects::Decoder to retrieve the object.
76     virtual void objectArrived(const Atlas::Message::Element&);
77 
78     /// An unknown object has arrived.
unknownObjectArrived(const Atlas::Message::Element &)79     virtual void unknownObjectArrived(const Atlas::Message::Element&) { }
80 
81     /// A Root object has arrived.
objectArrived(const Root &)82     virtual void objectArrived(const Root&) { }
83 
objectArrived(const Entity::Account &)84     virtual void objectArrived(const Entity::Account&) { }
objectArrived(const Entity::Admin &)85     virtual void objectArrived(const Entity::Admin&) { }
objectArrived(const Entity::AdminEntity &)86     virtual void objectArrived(const Entity::AdminEntity&) { }
objectArrived(const Entity::Game &)87     virtual void objectArrived(const Entity::Game&) { }
objectArrived(const Entity::Player &)88     virtual void objectArrived(const Entity::Player&) { }
objectArrived(const Entity::RootEntity &)89     virtual void objectArrived(const Entity::RootEntity&) { }
90 
objectArrived(const Operation::Action &)91     virtual void objectArrived(const Operation::Action&) { }
objectArrived(const Operation::Appearance &)92     virtual void objectArrived(const Operation::Appearance&) { }
objectArrived(const Operation::Combine &)93     virtual void objectArrived(const Operation::Combine&) { }
objectArrived(const Operation::Communicate &)94     virtual void objectArrived(const Operation::Communicate&) { }
objectArrived(const Operation::Create &)95     virtual void objectArrived(const Operation::Create&) { }
objectArrived(const Operation::Delete &)96     virtual void objectArrived(const Operation::Delete&) { }
objectArrived(const Operation::Disappearance &)97     virtual void objectArrived(const Operation::Disappearance&) { }
objectArrived(const Operation::Divide &)98     virtual void objectArrived(const Operation::Divide&) { }
objectArrived(const Operation::Error &)99     virtual void objectArrived(const Operation::Error&) { }
objectArrived(const Operation::Feel &)100     virtual void objectArrived(const Operation::Feel&) { }
objectArrived(const Operation::Get &)101     virtual void objectArrived(const Operation::Get&) { }
objectArrived(const Operation::Imaginary &)102     virtual void objectArrived(const Operation::Imaginary&) { }
objectArrived(const Operation::Info &)103     virtual void objectArrived(const Operation::Info&) { }
objectArrived(const Operation::Listen &)104     virtual void objectArrived(const Operation::Listen&) { }
objectArrived(const Operation::Login &)105     virtual void objectArrived(const Operation::Login&) { }
objectArrived(const Operation::Logout &)106     virtual void objectArrived(const Operation::Logout&) { }
objectArrived(const Operation::Look &)107     virtual void objectArrived(const Operation::Look&) { }
objectArrived(const Operation::Move &)108     virtual void objectArrived(const Operation::Move&) { }
objectArrived(const Operation::Perceive &)109     virtual void objectArrived(const Operation::Perceive&) { }
objectArrived(const Operation::Perception &)110     virtual void objectArrived(const Operation::Perception&) { }
objectArrived(const Operation::RootOperation &)111     virtual void objectArrived(const Operation::RootOperation&) { }
objectArrived(const Operation::Set &)112     virtual void objectArrived(const Operation::Set&) { }
objectArrived(const Operation::Sight &)113     virtual void objectArrived(const Operation::Sight&) { }
objectArrived(const Operation::Smell &)114     virtual void objectArrived(const Operation::Smell&) { }
objectArrived(const Operation::Sniff &)115     virtual void objectArrived(const Operation::Sniff&) { }
objectArrived(const Operation::Sound &)116     virtual void objectArrived(const Operation::Sound&) { }
objectArrived(const Operation::Talk &)117     virtual void objectArrived(const Operation::Talk&) { }
objectArrived(const Operation::Touch &)118     virtual void objectArrived(const Operation::Touch&) { }
119 
120 };
121 
122 } } // namespace Atlas::Objects
123 #endif
124