IPFOperator.h

Go to the documentation of this file.
00001 
00005 /**********************************************************************
00006  *<
00007     CREATED BY: Oleg Bayborodin
00008 
00009     HISTORY: created 10-12-01
00010 
00011  *> Copyright (c) 2001, All Rights Reserved.
00012  **********************************************************************/
00013 
00014 #pragma once
00015 
00016 #include "PFExport.h"
00017 #include "PreciseTimeValue.h"
00018 #include "..\ifnpub.h"
00019 #include "..\object.h"
00020 // forward declarations
00021 class IPFIntegrator;
00022 
00023 PFExport Object* GetPFObject(Object* obj);
00024 // interface ID
00025 #define PFOPERATOR_INTERFACE Interface_ID(0x74f93d01, 0x1eb34500) 
00026 #define GetPFOperatorInterface(obj) ((IPFOperator*)((GetPFObject(obj))->GetInterface(PFOPERATOR_INTERFACE))) 
00027 
00028 
00029 class IPFOperator : public FPMixinInterface
00030 {
00031 public:
00032 
00033     // function IDs
00034     enum {  kProceed 
00035     }; 
00036 
00037     // Function Map for Function Publish System 
00038     //***********************************
00039     BEGIN_FUNCTION_MAP
00040 
00041     FN_7(kProceed, TYPE_bool, Proceed, TYPE_IOBJECT, TYPE_TIMEVALUE, TYPE_TIMEVALUE_BR, TYPE_OBJECT, TYPE_INODE, TYPE_INODE, TYPE_INTERFACE);
00042 
00043     END_FUNCTION_MAP
00044 
00092     virtual bool    Proceed(IObject* pCont, PreciseTimeValue timeStart, PreciseTimeValue& timeEnd, Object* pSystem, INode* pNode, INode* actioNode, IPFIntegrator* integrator) = 0; 
00093 
00097     PFExport bool   Proceed(IObject* pCont, TimeValue timeStart, TimeValue& timeEnd, Object* pSystem, INode* pNode, INode* actionNode, FPInterface* integrator);
00098 #pragma warning(push)
00099 #pragma warning(disable:4100)
00100 
00109     virtual bool    HasPreProceed(IObject* pCont, PreciseTimeValue timeStart, PreciseTimeValue& timeEnd) { return false; }
00110 
00114     virtual void    PreProceedBegin(IObject* pCont, PreciseTimeValue timeStart, PreciseTimeValue& timeEnd) { ; }
00115 
00119     virtual void    PreProceedEnd(IObject* pCont, PreciseTimeValue timeStart, PreciseTimeValue& timeEnd) { ; }
00120 
00131     virtual bool    HasPostProceed(IObject* pCont, PreciseTimeValue time) { return false; }
00132 
00136     virtual void    PostProceedBegin(IObject* pCont, PreciseTimeValue time) { ; }
00137 
00141     virtual void    PostProceedEnd(IObject* pCont, PreciseTimeValue time) { ; }
00142 #pragma warning(pop)
00143 
00146     FPInterfaceDesc* GetDesc() { return GetDescByID(PFOPERATOR_INTERFACE); }
00147 
00150 };
00151 
00152 inline IPFOperator* PFOperatorInterface(Object* obj) {
00153     return ((obj == NULL) ? NULL : GetPFOperatorInterface(obj));
00154 };
00155 
00156 inline IPFOperator* PFOperatorInterface(INode* node) {
00157     return ((node == NULL) ? NULL : PFOperatorInterface(node->GetObjectRef()));
00158 };
00159