1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // This header file defines the base aggregate structure. Every
- // aggregate must have a link to its next one and a pointer
- // to certain functions that an aggregate must supply.
- // When implementing an aggregate, you MUST derive from this!
- // (In C, just put it as the first member in your structure..)
- #ifndef __CPPAGGREGATE_DE__
- #define __CPPAGGREGATE_DE__
- #include "serverobj_de.h"
- class Aggregate
- {
- public :
- // Very important that these data members are EXACTLY the same as
- // the C version of this class (Aggregate_t)...
- Aggregate *m_pNextAggregate;
- // Hook functions for the aggregate..
- AggregateEngineMessageFn m_EngineMessageFn;
- AggregateObjectMessageFn m_ObjectMessageFn;
-
- Aggregate()
- {
- m_EngineMessageFn = _EngineMessageFn;
- m_ObjectMessageFn = _ObjectMessageFn;
- }
- virtual ~Aggregate() {}
- protected :
- virtual DDWORD EngineMessageFn(LPBASECLASS pObject, DDWORD messageID, void *pData, DFLOAT lData) { return 1; }
- virtual DDWORD ObjectMessageFn(LPBASECLASS pObject, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead) { return 1; }
-
- private :
- static DDWORD _EngineMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, DDWORD messageID, void *pData, DFLOAT lData);
- static DDWORD _ObjectMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead);
- };
- // Inlines...
- inline DDWORD Aggregate::_EngineMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, DDWORD messageID, void *pData, DFLOAT lData)
- {
- if (pAggregate)
- {
- return pAggregate->EngineMessageFn(pObject, messageID, pData, lData);
- }
- return 0;
- }
-
- inline DDWORD Aggregate::_ObjectMessageFn(LPBASECLASS pObject, LPAGGREGATE pAggregate, HOBJECT hSender, DDWORD messageID, HMESSAGEREAD hRead)
- {
- if (pAggregate)
- {
- return pAggregate->ObjectMessageFn(pObject, hSender, messageID, hRead);
- }
- return 0;
- }
- #endif // __CPP_AGGREGATE_DE__
|