00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CEL_BL_BEHAVE__
00021 #define __CEL_BL_BEHAVE__
00022
00023 #include <stdarg.h>
00024 #include "cstypes.h"
00025 #include "csutil/scf.h"
00026 #include "csutil/strhash.h"
00027
00028 #include "physicallayer/datatype.h"
00029
00030 struct iCelBlLayer;
00031 struct iCelPropertyClass;
00032
00038 struct iCelParameterBlock : public virtual iBase
00039 {
00040 SCF_INTERFACE (iCelParameterBlock, 0, 0, 1);
00041
00045 virtual size_t GetParameterCount () const = 0;
00046
00051 virtual csStringID GetParameterDef (size_t idx, celDataType& t) const = 0;
00052
00056 virtual const celData* GetParameter (csStringID id) const = 0;
00057
00061 virtual const celData* GetParameterByIndex (size_t idx) const = 0;
00062 };
00063
00067 struct iCelBehaviour : public virtual iBase
00068 {
00069 SCF_INTERFACE (iCelBehaviour, 0, 0, 2);
00070
00075 virtual const char* GetName () const = 0;
00076
00080 virtual iCelBlLayer* GetBehaviourLayer () const = 0;
00081
00087 virtual bool SendMessage (const char* msg_id,
00088 iCelPropertyClass* pc,
00089 celData& ret, iCelParameterBlock* params, ...) = 0;
00090
00095 virtual bool SendMessageV (const char* msg_id,
00096 iCelPropertyClass* pc,
00097 celData& ret, iCelParameterBlock* params, va_list arg) = 0;
00098
00107 virtual void* GetInternalObject () = 0;
00108 };
00109
00110 #endif // __CEL_BL_BEHAVE__
00111