1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #pragma once
- #include "foundation/dispatch.h"
- #include "service/api_service.h"
- #ifdef _WIN32
- #ifndef WIN32_LEAN_AND_MEAN
- #define WIN32_LEAN_AND_MEAN
- #endif
- #include <windows.h>
- #endif
- #ifdef __APPLE__
- #include <CoreFoundation/CoreFoundation.h> /* for CFBundleRef */
- #endif
- #include "nx/nxapi.h"
- #include "nx/nxuri.h"
- const int wasabi2_component_version = 0;
- struct WasabiComponentInfo
- {
-
- #if defined(_WIN32)
- HMODULE hModule;
- #elif defined(__APPLE__)
-
- CFBundleRef bundle;
- void *dl_handle;
- #else
- void *dl_handle;
- #endif
- nx_uri_t filename;
-
- int wasabi_version;
- int nx_api_version;
- GUID nx_platform_guid;
-
- GUID component_guid;
- GUID framework_guid;
- GUID application_guid;
- };
- class NOVTABLE ifc_component : public Wasabi2::Dispatchable
-
- {
- protected:
- ifc_component(GUID component_guid) : Wasabi2::Dispatchable(DISPATCHABLE_VERSION)
- {
- memset(&component_info, 0, sizeof(component_info));
- component_info.wasabi_version = wasabi2_component_version;
- component_info.nx_api_version = nx_api_version;
- component_info.nx_platform_guid = nx_platform_guid;
- component_info.component_guid = component_guid;
- }
- ~ifc_component() {}
- public:
- WasabiComponentInfo component_info;
- int Initialize(api_service *_service_manager) { return Component_Initialize(_service_manager); }
- int RegisterServices(api_service *_service_manager) { return Component_RegisterServices(_service_manager); }
- int OnLoading(api_service *_service_manager) { return Component_OnLoading(_service_manager); }
- int OnLoaded(api_service *_service_manager) {return Component_OnLoaded(_service_manager); }
- int OnClosing(api_service *_service_manager) { return Component_OnClosing(_service_manager); }
- void DeregisterServices(api_service *_service_manager) { Component_DeregisterServices(_service_manager); }
- int OnClosed(api_service *_service_manager) { return Component_OnClosed(_service_manager); }
- int Quit(api_service *_service_manager) { return Component_Quit(_service_manager); }
- enum
- {
- DISPATCHABLE_VERSION,
- };
- private:
-
-
- virtual int WASABICALL Component_Initialize(api_service *_service_manager) { return NErr_Success; }
- virtual int WASABICALL Component_RegisterServices(api_service *_service_manager)=0;
- virtual int WASABICALL Component_OnLoading(api_service *_service_manager) { return NErr_Success; }
- virtual int WASABICALL Component_OnLoaded(api_service *_service_manager) { return NErr_Success; }
- virtual int WASABICALL Component_OnClosing(api_service *_service_manager) { return NErr_Success; }
- virtual void WASABICALL Component_DeregisterServices(api_service *_service_manager)=0;
- virtual int WASABICALL Component_OnClosed(api_service *_service_manager) { return NErr_Success; }
- virtual int WASABICALL Component_Quit(api_service *_service_manager) { return NErr_Success; }
- };
- extern "C" typedef ifc_component *(*GETCOMPONENT_FUNC)();
|