1 /* =========================================================================
2 * @author ??? (???@javeriana.edu.co)
3 * @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
4 * =========================================================================
6 #ifndef __cpPlugins__Interface__ComponentInterface__h__
7 #define __cpPlugins__Interface__ComponentInterface__h__
13 #include <cpPlugins/cpplugins_export.h>
19 class CPPLUGINS_EXPORT ComponentInterface
20 : public std::enable_shared_from_this< ComponentInterface >
23 typedef ComponentInterface Self;
24 typedef std::enable_shared_from_this< ComponentInterface > Superclass;
26 typedef void(*TDestructor)(char*, void*);
27 typedef void(*TUpdater)(char*, void*);
28 typedef void*(*TOutput)(char*, void*);
29 typedef void(*TInput)(char*, void*, void*);
31 // Variable definition
33 TDestructor destructor;
38 std::string component_name;
39 void* component_reference;
43 ComponentInterface(void* lib_handle, void* component_reference,
44 std::string component_name, std::string lib_name);
45 virtual ~ComponentInterface();
47 void SetInput(void* input);
50 void SetComponent(void* reference);
51 std::string GetLibraryName();
52 void SetLibraryName(std::string lib_name);
53 std::string GetComponentName();
54 void SetComponentName(std::string component_name);
55 void SetComponentDestructor(void* lib_handle);
56 void SetComponentUpdater(void* lib_handle);
64 #endif // __cpPlugins__Interface__ComponentInterface__h__