nmpp
rpc-nmc.h
1#include "easynmc\aura.h"
2
3
4//typedef void (func_p_t)(void*);
5//typedef void*(func_i_p_t)(int);
6typedef void (func_ppi_t)(void*,void*,int);
7typedef int (func_ppi_i_t)(void*,void*,int);
8typedef int (func_ppr_i_t)(void*,void*,int*);
9typedef void (func_pppi_t)(void*,void*,void*,int);
10typedef void (func_pipi_t)(void*,int,void*,int);
11typedef void (func_plpi_t)(void*,long,void*,int);
12typedef void (func_pip_t)(void*,int,void*);
13typedef void (func_ppp_t)(void*,void*,void*);
14typedef int (func_ppp_i_t)(void*,void*,void*);
15typedef void (func_pppii_t) (void*,void*,void*,int,int);
16typedef void (func_piippi_t) (void*,int,int,void*,void*,int);
17typedef void (func_ppip_t) (void*,void*,int,void*);
18
19#include <time.h>
20
21//#define NMC_RPC_I_P(func) \
22//void rpc_ ## func(void *in, void *out) \
23//{ \
24// unsigned i = aura_get_u32(); \
25// func_i_t *unifunc=(func_i_t*)func; \
26// void* p=unifunc(i); \
27// aura_put_u32((int)p); \
28//}
29//
30//#define NMC_RPC_I(func) \
31//void rpc_ ## func(void *in, void *out) \
32//{ \
33// unsigned i = aura_get_u32(); \
34// func_i_p_t *unifunc=(func_i_p_t*)func; \
35// unifunc(i); \
36//}
37
38
39#define NMC_RPC_PPI(func) \
40void rpc_ ## func(void *in, void *out) \
41{ \
42 clock_t t0,t1,t2; \
43 t0=clock(); \
44 aura_buffer buf_src = aura_get_buf(); \
45 aura_buffer buf_dst = aura_get_buf(); \
46 int *src = aura_buffer_to_ptr(buf_src); \
47 int *dst = aura_buffer_to_ptr(buf_dst); \
48 unsigned size = aura_get_u32(); \
49 func_ppi_t *unifunc=(func_ppi_t*)func; \
50 unifunc(src,dst,size); \
51}
52
53#define NMC_RPC_PPI_I(func) \
54void rpc_ ## func(void *in, void *out) \
55{ \
56 aura_buffer buf_src = aura_get_buf(); \
57 aura_buffer buf_dst = aura_get_buf(); \
58 int *src = aura_buffer_to_ptr(buf_src); \
59 int *dst = aura_buffer_to_ptr(buf_dst); \
60 unsigned size = aura_get_u32(); \
61 func_ppi_i_t *unifunc=(func_ppi_i_t*)func; \
62 int ret=unifunc(src,dst,size); \
63 aura_put_u32(ret); \
64}
65
66
67
68#define NMC_RPC_PPPI(func) \
69void rpc_ ## func(void *in, void *out) \
70{ \
71 aura_buffer buf_src0 = aura_get_buf(); \
72 aura_buffer buf_src1 = aura_get_buf(); \
73 aura_buffer buf_dst = aura_get_buf(); \
74 int *src0 = aura_buffer_to_ptr(buf_src0); \
75 int *src1 = aura_buffer_to_ptr(buf_src1); \
76 int *dst = aura_buffer_to_ptr(buf_dst); \
77 unsigned size = aura_get_u32(); \
78 func_pppi_t *unifunc=(func_pppi_t*)func; \
79 unifunc(src0,src1,dst,size); \
80}
81
82#define NMC_RPC_PIPI(func) \
83void rpc_ ## func(void *in, void *out) \
84{ \
85 aura_buffer buf_src = aura_get_buf(); \
86 unsigned val = aura_get_u32(); \
87 aura_buffer buf_dst = aura_get_buf(); \
88 int *src = aura_buffer_to_ptr(buf_src); \
89 int *dst = aura_buffer_to_ptr(buf_dst); \
90 unsigned size = aura_get_u32(); \
91 func_pipi_t *unifunc=(func_pipi_t*)func; \
92 unifunc(src,val,dst,size); \
93}
94
95
96
97#define NMC_RPC_PLPI(func) \
98void rpc_ ## func(void *in, void *out) \
99{ \
100 aura_buffer buf_src = aura_get_buf(); \
101 unsigned long long val = aura_get_u64(); \
102 aura_buffer buf_dst = aura_get_buf(); \
103 int *src = aura_buffer_to_ptr(buf_src); \
104 int *dst = aura_buffer_to_ptr(buf_dst); \
105 unsigned size = aura_get_u32(); \
106 func_plpi_t *unifunc=(func_plpi_t*)func; \
107 unifunc(src,val,dst,size); \
108}
109
110#define NMC_RPC_PPLI(func) \
111void rpc_ ## func(void *in, void *out) \
112{ \
113 aura_buffer buf_src = aura_get_buf(); \
114 aura_buffer buf_dst = aura_get_buf(); \
115 unsigned long long val = aura_get_u64(); \
116 int *src = aura_buffer_to_ptr(buf_src); \
117 int *dst = aura_buffer_to_ptr(buf_dst); \
118 unsigned size = aura_get_u32(); \
119 func_pipi_t *unifunc=(func_pipi_t*)func; \
120}
121
122#define NMC_RPC_PPP(func) \
123void rpc_ ## func(void *in, void *out) \
124{ \
125 aura_buffer buf_src0 = aura_get_buf(); \
126 aura_buffer buf_src1 = aura_get_buf(); \
127 aura_buffer buf_dst = aura_get_buf(); \
128 int *src0 = aura_buffer_to_ptr(buf_src0); \
129 int *src1 = aura_buffer_to_ptr(buf_src1); \
130 int *dst = aura_buffer_to_ptr(buf_dst); \
131 unsigned size = aura_get_u32(); \
132 func_ppp_t *unifunc=(func_ppp_t*)func; \
133 unifunc(src0,src1,dst); \
134}
135
136#define NMC_RPC_PPP_I(func) \
137void rpc_ ## func(void *in, void *out) \
138{ \
139 aura_buffer buf_src0 = aura_get_buf(); \
140 aura_buffer buf_src1 = aura_get_buf(); \
141 aura_buffer buf_dst = aura_get_buf(); \
142 int *src0 = aura_buffer_to_ptr(buf_src0); \
143 int *src1 = aura_buffer_to_ptr(buf_src1); \
144 int *dst = aura_buffer_to_ptr(buf_dst); \
145 unsigned size = aura_get_u32(); \
146 func_ppp_t *unifunc=(func_ppp_t*)func; \
147 int ret = unifunc(src0,src1,dst); \
148 aura_put_u32(ret); \
149}
150
151
152#define NMC_RPC_PIR(func) \
153void rpc_ ## func(void *in, void *out) \
154{ \
155 aura_buffer buf_src0 = aura_get_buf(); \
156 int *src0 = aura_buffer_to_ptr(buf_src0); \
157 unsigned size = aura_get_u32(); \
158 func_pip_t *unifunc=(func_pip_t*)func; \
159 int ret ; \
160 unifunc(src0,size,&ret); \
161 aura_put_u32(ret); \
162}
163
164#define NMC_RPC_PPR_I(func) \
165void rpc_ ## func(void *in, void *out) \
166{ \
167 int handle=123; \
168 aura_buffer buf_src = aura_get_buf(); \
169 aura_buffer buf_dst = aura_get_buf(); \
170 int *src = aura_buffer_to_ptr(buf_src); \
171 int *dst = aura_buffer_to_ptr(buf_dst); \
172 func_ppr_i_t *unifunc=(func_ppr_i_t*)func; \
173 int ret = unifunc(src,dst,&handle); \
174 aura_put_u32(handle); \
175 aura_put_u32(ret); \
176}
177
178
179
180#define NMC_RPC_PIR64(func) \
181void rpc_ ## func(void *in, void *out) \
182{ \
183 aura_buffer buf_src0 = aura_get_buf(); \
184 int *src0 = aura_buffer_to_ptr(buf_src0); \
185 unsigned size = aura_get_u32(); \
186 func_pip_t *unifunc=(func_pip_t*)func; \
187 long ret ; \
188 unifunc(src0,size,&ret); \
189 aura_put_u64(ret); \
190}
191
192//#define NMC_RPC_PPIR64(func) \
193//void rpc_ ## func(void *in, void *out) \
194//{ \
195// aura_buffer buf_src0 = aura_get_buf(); \
196// aura_buffer buf_src1 = aura_get_buf(); \
197// int *src0 = aura_buffer_to_ptr(buf_src0); \
198// int *src1 = aura_buffer_to_ptr(buf_src1); \
199// unsigned size = aura_get_u32(); \
200// func_ppip_t *unifunc=(func_ppip_t*)func; \
201// long ret ; \
202// unifunc(src0,src1,size,&ret); \
203// aura_put_u64(ret); \
204//}
205//
206
207#define NMC_RPC_PPPII(func) \
208void rpc_ ## func(void *in, void *out) \
209{ \
210 aura_buffer buf_src0 = aura_get_buf(); \
211 aura_buffer buf_src1 = aura_get_buf(); \
212 aura_buffer buf_dst = aura_get_buf(); \
213 int *src0 = aura_buffer_to_ptr(buf_src0); \
214 int *src1 = aura_buffer_to_ptr(buf_src1); \
215 int *dst = aura_buffer_to_ptr(buf_dst); \
216 unsigned height = aura_get_u32(); \
217 unsigned width = aura_get_u32(); \
218 func_pppii_t *unifunc=(func_pppii_t*)func; \
219 unifunc(src0,src1,dst,height,width); \
220}
221
222#define NMC_RPC_PIIPPI(func) \
223void rpc_ ## func(void *in, void *out) \
224{ \
225 aura_buffer buf_src0 = aura_get_buf(); \
226 unsigned height = aura_get_u32(); \
227 unsigned width0 = aura_get_u32(); \
228 aura_buffer buf_src1 = aura_get_buf(); \
229 aura_buffer buf_dst = aura_get_buf(); \
230 unsigned width1 = aura_get_u32(); \
231 int *src0 = aura_buffer_to_ptr(buf_src0); \
232 int *src1 = aura_buffer_to_ptr(buf_src1); \
233 int *dst = aura_buffer_to_ptr(buf_dst); \
234 func_piippi_t *unifunc=(func_piippi_t*)func; \
235 unifunc(src0,height,width0,src1,dst,width1); \
236}