GraphLab: Distributed Graph-Parallel API  2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
pod_template_structs.hpp
1 /*
2  * Copyright (c) 2009 Carnegie Mellon University.
3  * All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing,
12  * software distributed under the License is distributed on an "AS
13  * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
14  * express or implied. See the License for the specific language
15  * governing permissions and limitations under the License.
16  *
17  * For more about this software visit:
18  *
19  * http://www.graphlab.ml.cmu.edu
20  *
21  */
22 
23 
24 #ifndef POD_TEMPLATE_STRUCTS_HPP
25 #define POD_TEMPLATE_STRUCTS_HPP
26 #include <graphlab/serialization/serialization_includes.hpp>
27 #include <graphlab/serialization/is_pod.hpp>
28 
29 namespace graphlab {
30 namespace dc_impl {
31 namespace pod_template_detail {
32 
33 template <typename F>
34 struct pod_call_struct0 : public IS_POD_TYPE{
35  size_t dispatch_function;
36  size_t objid;
37  F remote_function;
38 };
39 
40 
41 template <typename F, typename T0>
42 struct pod_call_struct1 : public IS_POD_TYPE{
43  size_t dispatch_function;
44  size_t objid;
45  F remote_function;
46  T0 t0;
47 };
48 
49 
50 template <typename F, typename T0, typename T1>
51 struct pod_call_struct2 : public IS_POD_TYPE{
52  size_t dispatch_function;
53  size_t objid;
54  F remote_function;
55  T0 t0; T1 t1;
56 };
57 
58 template <typename F, typename T0, typename T1, typename T2>
59 struct pod_call_struct3 : public IS_POD_TYPE{
60  size_t dispatch_function;
61  size_t objid;
62  F remote_function;
63  T0 t0; T1 t1; T2 t2;
64 };
65 
66 
67 template <typename F, typename T0, typename T1, typename T2,
68  typename T3>
69 struct pod_call_struct4 : public IS_POD_TYPE{
70  size_t dispatch_function;
71  size_t objid;
72  F remote_function;
73  T0 t0; T1 t1; T2 t2; T3 t3;
74 };
75 
76 
77 template <typename F, typename T0, typename T1, typename T2,
78  typename T3, typename T4>
79 struct pod_call_struct5 : public IS_POD_TYPE{
80  size_t dispatch_function;
81  size_t objid;
82  F remote_function;
83  T0 t0; T1 t1; T2 t2; T3 t3; T4 t4;
84 };
85 
86 
87 template <typename F, typename T0, typename T1, typename T2,
88  typename T3, typename T4, typename T5>
89 struct pod_call_struct6 : public IS_POD_TYPE{
90  size_t dispatch_function;
91  size_t objid;
92  F remote_function;
93  T0 t0; T1 t1; T2 t2; T3 t3; T4 t4; T5 t5;
94 };
95 
96 
97 template <typename F, typename T0, typename T1, typename T2,
98  typename T3, typename T4, typename T5,
99  typename T6>
100 struct pod_call_struct7 : public IS_POD_TYPE{
101  size_t dispatch_function;
102  size_t objid;
103  F remote_function;
104  T0 t0; T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6;
105 };
106 
107 
108 template <typename F, typename T0, typename T1, typename T2,
109  typename T3, typename T4, typename T5,
110  typename T6, typename T7>
111 struct pod_call_struct8 : public IS_POD_TYPE{
112  size_t dispatch_function;
113  size_t objid;
114  F remote_function;
115  T0 t0; T1 t1; T2 t2; T3 t3; T4 t4; T5 t5; T6 t6; T7 t7;
116 };
117 
118 }
119 }
120 }
121 
122 #endif