source: rtos_arduino/trunk/arduino_lib/libraries/Ciao/src/lib/FP.cpp@ 175

Last change on this file since 175 was 175, checked in by ertl-honda, 8 years ago

ライブラリを Arduino IDE 1.7.9 にupdate

File size: 19.5 KB
Line 
1/**
2 * @file FP.cpp
3 * @brief Core Utility - Templated Function Pointer Class
4 * @author sam grove
5 * @version 1.0
6 * @see
7 *
8 * Copyright (c) 2013
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 */
22
23#include "FP.h"
24#include <stdint.h>
25
26template<class retT, class argT>
27FP<retT, argT>::FP()
28{
29 obj_callback = 0;
30 c_callback = 0;
31}
32
33template<class retT, class argT>
34bool FP<retT, argT>::attached()
35{
36 return obj_callback || c_callback;
37}
38
39
40template<class retT, class argT>
41void FP<retT, argT>::detach()
42{
43 obj_callback = 0;
44 c_callback = 0;
45}
46
47
48template<class retT, class argT>
49void FP<retT, argT>::attach(retT (*function)(argT))
50{
51 c_callback = function;
52}
53
54template<class retT, class argT>
55retT FP<retT, argT>::operator()(argT arg) const
56{
57 if( 0 != c_callback )
58 {
59 return obj_callback ? (obj_callback->*method_callback)(arg) : (*c_callback)(arg);
60 }
61 return (retT)0;
62}
63
64// pre-define the types for the linker
65template class FP<void,char>;
66template class FP<void,char*>;
67template class FP<void,int8_t>;
68template class FP<void,int8_t*>;
69template class FP<void,uint8_t>;
70template class FP<void,uint8_t*>;
71template class FP<void,int16_t>;
72template class FP<void,int16_t*>;
73template class FP<void,uint16_t>;
74template class FP<void,uint16_t*>;
75template class FP<void,int32_t>;
76template class FP<void,int32_t*>;
77template class FP<void,uint32_t>;
78template class FP<void,uint32_t*>;
79template class FP<void,int64_t>;
80template class FP<void,int64_t*>;
81template class FP<void,uint64_t>;
82template class FP<void,uint64_t*>;
83template class FP<void,bool>;
84template class FP<void,bool*>;
85template class FP<void,float>;
86template class FP<void,float*>;
87template class FP<void,double>;
88template class FP<void,double*>;
89template class FP<void,void*>;
90
91template class FP<int8_t,char>;
92template class FP<int8_t,char*>;
93template class FP<int8_t,int8_t>;
94template class FP<int8_t,int8_t*>;
95template class FP<int8_t,uint8_t>;
96template class FP<int8_t,uint8_t*>;
97template class FP<int8_t,int16_t>;
98template class FP<int8_t,int16_t*>;
99template class FP<int8_t,uint16_t>;
100template class FP<int8_t,uint16_t*>;
101template class FP<int8_t,int32_t>;
102template class FP<int8_t,int32_t*>;
103template class FP<int8_t,uint32_t>;
104template class FP<int8_t,uint32_t*>;
105template class FP<int8_t,int64_t>;
106template class FP<int8_t,int64_t*>;
107template class FP<int8_t,uint64_t>;
108template class FP<int8_t,uint64_t*>;
109template class FP<int8_t,bool>;
110template class FP<int8_t,bool*>;
111template class FP<int8_t,float>;
112template class FP<int8_t,float*>;
113template class FP<int8_t,double>;
114template class FP<int8_t,double*>;
115
116template class FP<int8_t*,char>;
117template class FP<int8_t*,char*>;
118template class FP<int8_t*,int8_t>;
119template class FP<int8_t*,int8_t*>;
120template class FP<int8_t*,uint8_t>;
121template class FP<int8_t*,uint8_t*>;
122template class FP<int8_t*,int16_t>;
123template class FP<int8_t*,int16_t*>;
124template class FP<int8_t*,uint16_t>;
125template class FP<int8_t*,uint16_t*>;
126template class FP<int8_t*,int32_t>;
127template class FP<int8_t*,int32_t*>;
128template class FP<int8_t*,uint32_t>;
129template class FP<int8_t*,uint32_t*>;
130template class FP<int8_t*,int64_t>;
131template class FP<int8_t*,int64_t*>;
132template class FP<int8_t*,uint64_t>;
133template class FP<int8_t*,uint64_t*>;
134template class FP<int8_t*,bool>;
135template class FP<int8_t*,bool*>;
136template class FP<int8_t*,float>;
137template class FP<int8_t*,float*>;
138template class FP<int8_t*,double>;
139template class FP<int8_t*,double*>;
140
141template class FP<uint8_t,char>;
142template class FP<uint8_t,char*>;
143template class FP<uint8_t,int8_t>;
144template class FP<uint8_t,int8_t*>;
145template class FP<uint8_t,uint8_t>;
146template class FP<uint8_t,uint8_t*>;
147template class FP<uint8_t,int16_t>;
148template class FP<uint8_t,int16_t*>;
149template class FP<uint8_t,uint16_t>;
150template class FP<uint8_t,uint16_t*>;
151template class FP<uint8_t,int32_t>;
152template class FP<uint8_t,int32_t*>;
153template class FP<uint8_t,uint32_t>;
154template class FP<uint8_t,uint32_t*>;
155template class FP<uint8_t,int64_t>;
156template class FP<uint8_t,int64_t*>;
157template class FP<uint8_t,uint64_t>;
158template class FP<uint8_t,uint64_t*>;
159template class FP<uint8_t,bool>;
160template class FP<uint8_t,bool*>;
161template class FP<uint8_t,float>;
162template class FP<uint8_t,float*>;
163template class FP<uint8_t,double>;
164template class FP<uint8_t,double*>;
165
166template class FP<uint8_t*,char>;
167template class FP<uint8_t*,char*>;
168template class FP<uint8_t*,int8_t>;
169template class FP<uint8_t*,int8_t*>;
170template class FP<uint8_t*,uint8_t>;
171template class FP<uint8_t*,uint8_t*>;
172template class FP<uint8_t*,int16_t>;
173template class FP<uint8_t*,int16_t*>;
174template class FP<uint8_t*,uint16_t>;
175template class FP<uint8_t*,uint16_t*>;
176template class FP<uint8_t*,int32_t>;
177template class FP<uint8_t*,int32_t*>;
178template class FP<uint8_t*,uint32_t>;
179template class FP<uint8_t*,uint32_t*>;
180template class FP<uint8_t*,int64_t>;
181template class FP<uint8_t*,int64_t*>;
182template class FP<uint8_t*,uint64_t>;
183template class FP<uint8_t*,uint64_t*>;
184template class FP<uint8_t*,bool>;
185template class FP<uint8_t*,bool*>;
186template class FP<uint8_t*,float>;
187template class FP<uint8_t*,float*>;
188template class FP<uint8_t*,double>;
189template class FP<uint8_t*,double*>;
190
191template class FP<int16_t,char>;
192template class FP<int16_t,char*>;
193template class FP<int16_t,int8_t>;
194template class FP<int16_t,int8_t*>;
195template class FP<int16_t,uint8_t>;
196template class FP<int16_t,uint8_t*>;
197template class FP<int16_t,int16_t>;
198template class FP<int16_t,int16_t*>;
199template class FP<int16_t,uint16_t>;
200template class FP<int16_t,uint16_t*>;
201template class FP<int16_t,int32_t>;
202template class FP<int16_t,int32_t*>;
203template class FP<int16_t,uint32_t>;
204template class FP<int16_t,uint32_t*>;
205template class FP<int16_t,int64_t>;
206template class FP<int16_t,int64_t*>;
207template class FP<int16_t,uint64_t>;
208template class FP<int16_t,uint64_t*>;
209template class FP<int16_t,bool>;
210template class FP<int16_t,bool*>;
211template class FP<int16_t,float>;
212template class FP<int16_t,float*>;
213template class FP<int16_t,double>;
214template class FP<int16_t,double*>;
215
216template class FP<int16_t*,char>;
217template class FP<int16_t*,char*>;
218template class FP<int16_t*,int8_t>;
219template class FP<int16_t*,int8_t*>;
220template class FP<int16_t*,uint8_t>;
221template class FP<int16_t*,uint8_t*>;
222template class FP<int16_t*,int16_t>;
223template class FP<int16_t*,int16_t*>;
224template class FP<int16_t*,uint16_t>;
225template class FP<int16_t*,uint16_t*>;
226template class FP<int16_t*,int32_t>;
227template class FP<int16_t*,int32_t*>;
228template class FP<int16_t*,uint32_t>;
229template class FP<int16_t*,uint32_t*>;
230template class FP<int16_t*,int64_t>;
231template class FP<int16_t*,int64_t*>;
232template class FP<int16_t*,uint64_t>;
233template class FP<int16_t*,uint64_t*>;
234template class FP<int16_t*,bool>;
235template class FP<int16_t*,bool*>;
236template class FP<int16_t*,float>;
237template class FP<int16_t*,float*>;
238template class FP<int16_t*,double>;
239template class FP<int16_t*,double*>;
240
241template class FP<uint16_t,char>;
242template class FP<uint16_t,char*>;
243template class FP<uint16_t,int8_t>;
244template class FP<uint16_t,int8_t*>;
245template class FP<uint16_t,uint8_t>;
246template class FP<uint16_t,uint8_t*>;
247template class FP<uint16_t,int16_t>;
248template class FP<uint16_t,int16_t*>;
249template class FP<uint16_t,uint16_t>;
250template class FP<uint16_t,uint16_t*>;
251template class FP<uint16_t,int32_t>;
252template class FP<uint16_t,int32_t*>;
253template class FP<uint16_t,uint32_t>;
254template class FP<uint16_t,uint32_t*>;
255template class FP<uint16_t,int64_t>;
256template class FP<uint16_t,int64_t*>;
257template class FP<uint16_t,uint64_t>;
258template class FP<uint16_t,uint64_t*>;
259template class FP<uint16_t,bool>;
260template class FP<uint16_t,bool*>;
261template class FP<uint16_t,float>;
262template class FP<uint16_t,float*>;
263template class FP<uint16_t,double>;
264template class FP<uint16_t,double*>;
265
266template class FP<uint16_t*,char>;
267template class FP<uint16_t*,char*>;
268template class FP<uint16_t*,int8_t>;
269template class FP<uint16_t*,int8_t*>;
270template class FP<uint16_t*,uint8_t>;
271template class FP<uint16_t*,uint8_t*>;
272template class FP<uint16_t*,int16_t>;
273template class FP<uint16_t*,int16_t*>;
274template class FP<uint16_t*,uint16_t>;
275template class FP<uint16_t*,uint16_t*>;
276template class FP<uint16_t*,int32_t>;
277template class FP<uint16_t*,int32_t*>;
278template class FP<uint16_t*,uint32_t>;
279template class FP<uint16_t*,uint32_t*>;
280template class FP<uint16_t*,int64_t>;
281template class FP<uint16_t*,int64_t*>;
282template class FP<uint16_t*,uint64_t>;
283template class FP<uint16_t*,uint64_t*>;
284template class FP<uint16_t*,bool>;
285template class FP<uint16_t*,bool*>;
286template class FP<uint16_t*,float>;
287template class FP<uint16_t*,float*>;
288template class FP<uint16_t*,double>;
289template class FP<uint16_t*,double*>;
290
291template class FP<int32_t,char>;
292template class FP<int32_t,char*>;
293template class FP<int32_t,int8_t>;
294template class FP<int32_t,int8_t*>;
295template class FP<int32_t,uint8_t>;
296template class FP<int32_t,uint8_t*>;
297template class FP<int32_t,int16_t>;
298template class FP<int32_t,int16_t*>;
299template class FP<int32_t,uint16_t>;
300template class FP<int32_t,uint16_t*>;
301template class FP<int32_t,int32_t>;
302template class FP<int32_t,int32_t*>;
303template class FP<int32_t,uint32_t>;
304template class FP<int32_t,uint32_t*>;
305template class FP<int32_t,int64_t>;
306template class FP<int32_t,int64_t*>;
307template class FP<int32_t,uint64_t>;
308template class FP<int32_t,uint64_t*>;
309template class FP<int32_t,bool>;
310template class FP<int32_t,bool*>;
311template class FP<int32_t,float>;
312template class FP<int32_t,float*>;
313template class FP<int32_t,double>;
314template class FP<int32_t,double*>;
315
316template class FP<int32_t*,char>;
317template class FP<int32_t*,char*>;
318template class FP<int32_t*,int8_t>;
319template class FP<int32_t*,int8_t*>;
320template class FP<int32_t*,uint8_t>;
321template class FP<int32_t*,uint8_t*>;
322template class FP<int32_t*,int16_t>;
323template class FP<int32_t*,int16_t*>;
324template class FP<int32_t*,uint16_t>;
325template class FP<int32_t*,uint16_t*>;
326template class FP<int32_t*,int32_t>;
327template class FP<int32_t*,int32_t*>;
328template class FP<int32_t*,uint32_t>;
329template class FP<int32_t*,uint32_t*>;
330template class FP<int32_t*,int64_t>;
331template class FP<int32_t*,int64_t*>;
332template class FP<int32_t*,uint64_t>;
333template class FP<int32_t*,uint64_t*>;
334template class FP<int32_t*,bool>;
335template class FP<int32_t*,bool*>;
336template class FP<int32_t*,float>;
337template class FP<int32_t*,float*>;
338template class FP<int32_t*,double>;
339template class FP<int32_t*,double*>;
340
341template class FP<uint32_t,char>;
342template class FP<uint32_t,char*>;
343template class FP<uint32_t,int8_t>;
344template class FP<uint32_t,int8_t*>;
345template class FP<uint32_t,uint8_t>;
346template class FP<uint32_t,uint8_t*>;
347template class FP<uint32_t,int16_t>;
348template class FP<uint32_t,int16_t*>;
349template class FP<uint32_t,uint16_t>;
350template class FP<uint32_t,uint16_t*>;
351template class FP<uint32_t,int32_t>;
352template class FP<uint32_t,int32_t*>;
353template class FP<uint32_t,uint32_t>;
354template class FP<uint32_t,uint32_t*>;
355template class FP<uint32_t,int64_t>;
356template class FP<uint32_t,int64_t*>;
357template class FP<uint32_t,uint64_t>;
358template class FP<uint32_t,uint64_t*>;
359template class FP<uint32_t,bool>;
360template class FP<uint32_t,bool*>;
361template class FP<uint32_t,float>;
362template class FP<uint32_t,float*>;
363template class FP<uint32_t,double>;
364template class FP<uint32_t,double*>;
365
366template class FP<uint32_t*,char>;
367template class FP<uint32_t*,char*>;
368template class FP<uint32_t*,int8_t>;
369template class FP<uint32_t*,int8_t*>;
370template class FP<uint32_t*,uint8_t>;
371template class FP<uint32_t*,uint8_t*>;
372template class FP<uint32_t*,int16_t>;
373template class FP<uint32_t*,int16_t*>;
374template class FP<uint32_t*,uint16_t>;
375template class FP<uint32_t*,uint16_t*>;
376template class FP<uint32_t*,int32_t>;
377template class FP<uint32_t*,int32_t*>;
378template class FP<uint32_t*,uint32_t>;
379template class FP<uint32_t*,uint32_t*>;
380template class FP<uint32_t*,int64_t>;
381template class FP<uint32_t*,int64_t*>;
382template class FP<uint32_t*,uint64_t>;
383template class FP<uint32_t*,uint64_t*>;
384template class FP<uint32_t*,bool>;
385template class FP<uint32_t*,bool*>;
386template class FP<uint32_t*,float>;
387template class FP<uint32_t*,float*>;
388template class FP<uint32_t*,double>;
389template class FP<uint32_t*,double*>;
390
391template class FP<int64_t,char>;
392template class FP<int64_t,char*>;
393template class FP<int64_t,int8_t>;
394template class FP<int64_t,int8_t*>;
395template class FP<int64_t,uint8_t>;
396template class FP<int64_t,uint8_t*>;
397template class FP<int64_t,int16_t>;
398template class FP<int64_t,int16_t*>;
399template class FP<int64_t,uint16_t>;
400template class FP<int64_t,uint16_t*>;
401template class FP<int64_t,int32_t>;
402template class FP<int64_t,int32_t*>;
403template class FP<int64_t,uint32_t>;
404template class FP<int64_t,uint32_t*>;
405template class FP<int64_t,int64_t>;
406template class FP<int64_t,int64_t*>;
407template class FP<int64_t,uint64_t>;
408template class FP<int64_t,uint64_t*>;
409template class FP<int64_t,bool>;
410template class FP<int64_t,bool*>;
411template class FP<int64_t,float>;
412template class FP<int64_t,float*>;
413template class FP<int64_t,double>;
414template class FP<int64_t,double*>;
415
416template class FP<int64_t*,char>;
417template class FP<int64_t*,char*>;
418template class FP<int64_t*,int8_t>;
419template class FP<int64_t*,int8_t*>;
420template class FP<int64_t*,uint8_t>;
421template class FP<int64_t*,uint8_t*>;
422template class FP<int64_t*,int16_t>;
423template class FP<int64_t*,int16_t*>;
424template class FP<int64_t*,uint16_t>;
425template class FP<int64_t*,uint16_t*>;
426template class FP<int64_t*,int32_t>;
427template class FP<int64_t*,int32_t*>;
428template class FP<int64_t*,uint32_t>;
429template class FP<int64_t*,uint32_t*>;
430template class FP<int64_t*,int64_t>;
431template class FP<int64_t*,int64_t*>;
432template class FP<int64_t*,uint64_t>;
433template class FP<int64_t*,uint64_t*>;
434template class FP<int64_t*,bool>;
435template class FP<int64_t*,bool*>;
436template class FP<int64_t*,float>;
437template class FP<int64_t*,float*>;
438template class FP<int64_t*,double>;
439template class FP<int64_t*,double*>;
440
441template class FP<uint64_t,char>;
442template class FP<uint64_t,char*>;
443template class FP<uint64_t,int8_t>;
444template class FP<uint64_t,int8_t*>;
445template class FP<uint64_t,uint8_t>;
446template class FP<uint64_t,uint8_t*>;
447template class FP<uint64_t,int16_t>;
448template class FP<uint64_t,int16_t*>;
449template class FP<uint64_t,uint16_t>;
450template class FP<uint64_t,uint16_t*>;
451template class FP<uint64_t,int32_t>;
452template class FP<uint64_t,int32_t*>;
453template class FP<uint64_t,uint32_t>;
454template class FP<uint64_t,uint32_t*>;
455template class FP<uint64_t,int64_t>;
456template class FP<uint64_t,int64_t*>;
457template class FP<uint64_t,uint64_t>;
458template class FP<uint64_t,uint64_t*>;
459template class FP<uint64_t,bool>;
460template class FP<uint64_t,bool*>;
461template class FP<uint64_t,float>;
462template class FP<uint64_t,float*>;
463template class FP<uint64_t,double>;
464template class FP<uint64_t,double*>;
465
466template class FP<uint64_t*,char>;
467template class FP<uint64_t*,char*>;
468template class FP<uint64_t*,int8_t>;
469template class FP<uint64_t*,int8_t*>;
470template class FP<uint64_t*,uint8_t>;
471template class FP<uint64_t*,uint8_t*>;
472template class FP<uint64_t*,int16_t>;
473template class FP<uint64_t*,int16_t*>;
474template class FP<uint64_t*,uint16_t>;
475template class FP<uint64_t*,uint16_t*>;
476template class FP<uint64_t*,int32_t>;
477template class FP<uint64_t*,int32_t*>;
478template class FP<uint64_t*,uint32_t>;
479template class FP<uint64_t*,uint32_t*>;
480template class FP<uint64_t*,int64_t>;
481template class FP<uint64_t*,int64_t*>;
482template class FP<uint64_t*,uint64_t>;
483template class FP<uint64_t*,uint64_t*>;
484template class FP<uint64_t*,bool>;
485template class FP<uint64_t*,bool*>;
486template class FP<uint64_t*,float>;
487template class FP<uint64_t*,float*>;
488template class FP<uint64_t*,double>;
489template class FP<uint64_t*,double*>;
490
491template class FP<float,char>;
492template class FP<float,char*>;
493template class FP<float,int8_t>;
494template class FP<float,int8_t*>;
495template class FP<float,uint8_t>;
496template class FP<float,uint8_t*>;
497template class FP<float,int16_t>;
498template class FP<float,int16_t*>;
499template class FP<float,uint16_t>;
500template class FP<float,uint16_t*>;
501template class FP<float,int32_t>;
502template class FP<float,int32_t*>;
503template class FP<float,uint32_t>;
504template class FP<float,uint32_t*>;
505template class FP<float,int64_t>;
506template class FP<float,int64_t*>;
507template class FP<float,uint64_t>;
508template class FP<float,uint64_t*>;
509template class FP<float,bool>;
510template class FP<float,bool*>;
511template class FP<float,float>;
512template class FP<float,float*>;
513template class FP<float,double>;
514template class FP<float,double*>;
515
516template class FP<float*,char>;
517template class FP<float*,char*>;
518template class FP<float*,int8_t>;
519template class FP<float*,int8_t*>;
520template class FP<float*,uint8_t>;
521template class FP<float*,uint8_t*>;
522template class FP<float*,int16_t>;
523template class FP<float*,int16_t*>;
524template class FP<float*,uint16_t>;
525template class FP<float*,uint16_t*>;
526template class FP<float*,int32_t>;
527template class FP<float*,int32_t*>;
528template class FP<float*,uint32_t>;
529template class FP<float*,uint32_t*>;
530template class FP<float*,int64_t>;
531template class FP<float*,int64_t*>;
532template class FP<float*,uint64_t>;
533template class FP<float*,uint64_t*>;
534template class FP<float*,bool>;
535template class FP<float*,bool*>;
536template class FP<float*,float>;
537template class FP<float*,float*>;
538template class FP<float*,double>;
539template class FP<float*,double*>;
540
541template class FP<double,char>;
542template class FP<double,char*>;
543template class FP<double,int8_t>;
544template class FP<double,int8_t*>;
545template class FP<double,uint8_t>;
546template class FP<double,uint8_t*>;
547template class FP<double,int16_t>;
548template class FP<double,int16_t*>;
549template class FP<double,uint16_t>;
550template class FP<double,uint16_t*>;
551template class FP<double,int32_t>;
552template class FP<double,int32_t*>;
553template class FP<double,uint32_t>;
554template class FP<double,uint32_t*>;
555template class FP<double,int64_t>;
556template class FP<double,int64_t*>;
557template class FP<double,uint64_t>;
558template class FP<double,uint64_t*>;
559template class FP<double,bool>;
560template class FP<double,bool*>;
561template class FP<double,float>;
562template class FP<double,float*>;
563template class FP<double,double>;
564template class FP<double,double*>;
565
566template class FP<double*,char>;
567template class FP<double*,char*>;
568template class FP<double*,int8_t>;
569template class FP<double*,int8_t*>;
570template class FP<double*,uint8_t>;
571template class FP<double*,uint8_t*>;
572template class FP<double*,int16_t>;
573template class FP<double*,int16_t*>;
574template class FP<double*,uint16_t>;
575template class FP<double*,uint16_t*>;
576template class FP<double*,int32_t>;
577template class FP<double*,int32_t*>;
578template class FP<double*,uint32_t>;
579template class FP<double*,uint32_t*>;
580template class FP<double*,int64_t>;
581template class FP<double*,int64_t*>;
582template class FP<double*,uint64_t>;
583template class FP<double*,uint64_t*>;
584template class FP<double*,bool>;
585template class FP<double*,bool*>;
586template class FP<double*,float>;
587template class FP<double*,float*>;
588template class FP<double*,double>;
589template class FP<double*,double*>;
590
591template class FP<char, char>;
592template class FP<char, char*>;
593template class FP<char, const char*>;
594
595template class FP<char*, char>;
596template class FP<char*, char*>;
597template class FP<char*, const char*>;
598
599
600
Note: See TracBrowser for help on using the repository browser.