cleaning resources code, improving resource_type
[quarnos.git] / services / service_tpl.cpp
blobc486a2932b10d9bca086c7a42e16341056b203ea
1 #ifndef _SERVICE_MANAGER_H_
2 #error This file can not be compiled directly.
3 #endif
5 #include "libs/string.h"
7 namespace services {
9 template<typename ret_type, typename arg_type1, typename arg_type2,
10 typename arg_type3, typename arg_type4, typename arg_type5,
11 typename arg_type6, typename arg_type7>
12 service_manager::call<ret_type, arg_type1, arg_type2, arg_type3, arg_type4, arg_type5, arg_type6, arg_type7>::call(const char *name, const char *method) {
13 int i = 0;
14 services::service_manager *sman = services::service_manager::get_instance();
15 service *serv = sman->get_object((service_type*)sman->get_type(name));
17 for (i = 0; i < serv->methods.count; i++) {
18 if (!strcmp(serv->names[i],method)) {
19 base_delegate *mth = &(serv->methods[i]);
20 memcpy(reinterpret_cast<char*>(this),reinterpret_cast<char*>(mth),sizeof(delegate<ret_type, arg_type1, arg_type2, arg_type3, arg_type4, arg_type5, arg_type6, arg_type7>));
26 template<typename ret_type, typename arg_type1 , typename arg_type2 ,
27 typename arg_type3 , typename arg_type4 , typename arg_type5 ,
28 typename arg_type6 , typename arg_type7 >
29 void* service::call<ret_type, arg_type1, arg_type2, arg_type3, arg_type4, arg_type5, arg_type6, arg_type7>::operator new(size_t size) {*/
30 /* Use resource instead of normal pointer. Resource shall allow to create few methods delegates
31 at the same time by allocating more memory when necessary */
32 /* return (void*)_ptrs;