1 #ifndef __YACS_CppCOMPONENT__
2 #define __YACS_CppCOMPONENT__
5 #include "ComponentInstance.hxx"
19 typedef void * (*InitFunction)();
20 typedef void (*RunFunction) (void *, const char *, int, int, Any **, Any **, returnInfo *);
21 typedef void (*TerminateFunction)(void **);
22 typedef void (*PingFunction) ();
24 class CppComponent : public ComponentInstance {
27 CppComponent(const std::string & name);
28 CppComponent(void * obj, RunFunction r, TerminateFunction t,
29 const std::string & name)
30 : __obj(obj), __run(r), __terminate(t), ComponentInstance(name) {}
31 CppComponent(const CppComponent& other);
32 virtual ~CppComponent();
34 void run(const char * service, int nbIn, int nbOut,
35 Any ** argIn, Any ** argOut) throw (YACS::Exception);
37 static const char KIND[];
38 virtual std::string getKind() const;
40 virtual void unload();
41 virtual bool isLoaded();
42 virtual ServiceNode* createNode(const std::string& name);
43 virtual YACS::ENGINE::ComponentInstance* clone() const;
48 YACS::ENGINE::RunFunction __run;
49 YACS::ENGINE::TerminateFunction __terminate;