IPFActionListPool.h

Go to the documentation of this file.
00001 
00008 /**********************************************************************
00009  *<
00010     CREATED BY: Oleg Bayborodin
00011 
00012     HISTORY: created 08-20-02
00013 
00014  *> Copyright (c) 2001, All Rights Reserved.
00015  **********************************************************************/
00016 
00017 #pragma once
00018 
00019 #include "PFExport.h"
00020 #include "..\notify.h"
00021 #include "..\ifnpub.h"
00022 
00023 
00024 // interface ID
00025 #define PFACTIONLISTPOOL_INTERFACE Interface_ID(0x74f93d09, 0x1eb34500)
00026 
00027 #define GetPFActionListPoolInterface(obj) ((IPFActionListPool*)obj->GetInterface(PFACTIONLISTPOOL_INTERFACE))
00028 
00029 class IPFActionListPool : public FPMixinInterface
00030 {
00031 public:
00032 
00033     // function IDs
00034     enum {  kNumActionLists,
00035             kGetActionList,
00036             kHasActionList,
00037             kHasActionListByHandle,
00038             kRegisterNotification,
00039             kUnRegisterNotification
00040     };
00041 
00042     BEGIN_FUNCTION_MAP
00043     FN_0(kNumActionLists, TYPE_INT, NumActionLists );
00044     FN_1(kGetActionList, TYPE_INODE, GetActionList, TYPE_INDEX );
00045     FN_1(kHasActionList, TYPE_bool, HasActionList, TYPE_INODE );
00046     FN_1(kHasActionListByHandle, TYPE_bool, HasActionListByHandle, TYPE_INT );
00047     END_FUNCTION_MAP
00048 
00056     virtual int NumActionLists() = 0;
00057 
00062     virtual INode* GetActionList(int i) = 0;
00063 
00068     virtual bool HasActionList(INode* node) = 0;
00069 
00073     virtual bool HasActionListByHandle(int handle) = 0;
00074 
00082     virtual int RegisterNotification(NOTIFYPROC proc, void *param) = 0;
00083 
00092     virtual int UnRegisterNotification(NOTIFYPROC proc, void *param) = 0;
00093 
00097     FPInterfaceDesc* GetDesc() { return GetDescByID(PFACTIONLISTPOOL_INTERFACE); }
00098 
00102     friend PFExport IPFActionListPool* GetPFActionListPool();
00103 
00104 protected:
00105     PFExport IPFActionListPool();
00106 
00107     static IPFActionListPool* m_pool; // the one and only PFActionList Pool in the scene
00108 };
00109 
00113 PFExport IPFActionListPool* GetPFActionListPool();
00114