@@ -54,59 +54,84 @@ template <std::integral I> struct from_object<I> {
54
54
from_object (core::T_sp o) : _v(core::clasp_to_integral<I>(o)) {};
55
55
};
56
56
57
+ template <std::integral I> struct from_object <const I&> {
58
+ typedef I DeclareType;
59
+ DeclareType _v;
60
+ from_object (core::T_sp o) : _v(core::clasp_to_integral<I>(o)) {};
61
+ };
62
+
57
63
template <> struct from_object <float > {
58
64
typedef float DeclareType;
65
+ DeclareType _v;
66
+ from_object (core::T_sp o) : _v(core::clasp_to_float(gc::As<core::Number_sp>(o))) {};
67
+ };
59
68
69
+ template <> struct from_object <const float &> {
70
+ typedef float DeclareType;
60
71
DeclareType _v;
61
- from_object (core::T_sp o) : _v(core::clasp_to_float(gc::As<core::Number_sp>(o))){};
72
+ from_object (core::T_sp o) : _v(core::clasp_to_float(gc::As<core::Number_sp>(o))) {};
62
73
};
63
74
64
75
template <> struct from_object <double > {
65
76
typedef double DeclareType;
77
+ DeclareType _v;
78
+ from_object (core::T_sp o) : _v(core::clasp_to_double(gc::As<core::Number_sp>(o))) {};
79
+ };
66
80
81
+ template <> struct from_object <const double &> {
82
+ typedef double DeclareType;
67
83
DeclareType _v;
68
- from_object (core::T_sp o) : _v(core::clasp_to_double(gc::As<core::Number_sp>(o))){};
84
+ from_object (core::T_sp o) : _v(core::clasp_to_double(gc::As<core::Number_sp>(o))) {};
69
85
};
70
86
71
87
template <> struct from_object <long double > {
72
88
typedef long double DeclareType;
89
+ DeclareType _v;
90
+ from_object (core::T_sp o) : _v(core::clasp_to_long_double(gc::As<core::Number_sp>(o))) {};
91
+ };
73
92
93
+ template <> struct from_object <const long double &> {
94
+ typedef long double DeclareType;
74
95
DeclareType _v;
75
- from_object (core::T_sp o) : _v(core::clasp_to_long_double(gc::As<core::Number_sp>(o))){};
96
+ from_object (core::T_sp o) : _v(core::clasp_to_long_double(gc::As<core::Number_sp>(o))) {};
76
97
};
77
98
78
99
template <> struct from_object <bool > {
79
100
typedef bool DeclareType;
80
101
DeclareType _v;
81
- from_object (core::T_sp o) : _v(!o.nilp()){};
102
+ from_object (core::T_sp o) : _v(!o.nilp()) {};
103
+ };
104
+
105
+ template <> struct from_object <const bool &> {
106
+ typedef bool DeclareType;
107
+ DeclareType _v;
108
+ from_object (core::T_sp o) : _v(!o.nilp()) {};
82
109
};
83
110
84
111
template <> struct from_object <bool &> {
85
112
typedef bool DeclareType;
86
113
DeclareType _v;
87
- from_object (core::T_sp o) : _v(!o.nilp()){};
114
+ from_object (core::T_sp o) : _v(!o.nilp()) {};
88
115
~from_object (){/* non trivial*/ };
89
116
};
90
117
91
118
template <> struct from_object <core::T_O*> {
92
119
typedef core::T_O* DeclareType;
93
-
94
120
DeclareType _v;
95
- from_object (core::T_sp o) : _v(o.raw_()){};
121
+ from_object (core::T_sp o) : _v(o.raw_()) {};
96
122
};
97
123
98
124
template <> struct from_object <void *> {
99
125
typedef void * DeclareType;
100
126
DeclareType _v;
101
- from_object (core::T_sp o) : _v(core::lisp_to_void_ptr(o)){};
127
+ from_object (core::T_sp o) : _v(core::lisp_to_void_ptr(o)) {};
102
128
};
103
129
104
130
template <> struct from_object <bool *> {
105
131
typedef bool * DeclareType;
106
-
107
132
DeclareType _v;
108
133
bool _val;
109
- from_object (T_P o) : _v(&_val), _val(true ){};
134
+ from_object (T_P o) : _v(&_val), _val(true ) {};
110
135
};
111
136
112
137
// TO_OBJECT TRANSLATORS
@@ -138,11 +163,12 @@ template <> struct to_object<void*> {
138
163
139
164
template <> struct to_object <bool > {
140
165
typedef bool DeclareType;
141
- static core::T_sp convert (DeclareType v) {
142
- if (v)
143
- return core::lisp_true ();
144
- return nil<core::T_O>();
145
- }
166
+ static core::T_sp convert (DeclareType v) { return v ? core::lisp_true () : nil<core::T_O>(); }
167
+ };
168
+
169
+ template <> struct to_object <const bool &> {
170
+ typedef const bool & DeclareType;
171
+ static core::T_sp convert (DeclareType v) { return v ? core::lisp_true () : nil<core::T_O>(); }
146
172
};
147
173
148
174
// THIS FN IS ALREADY DEFINED IN CHARACTER.H
@@ -156,125 +182,58 @@ template <> struct to_object<bool> {
156
182
// }
157
183
// };
158
184
159
- template <> struct to_object <unsigned char > {
160
- typedef unsigned char DeclareType;
161
- static core::T_sp convert (DeclareType v) { return (core::clasp_make_fixnum (v)); }
162
- };
163
-
164
- template <> struct to_object <short > {
165
- typedef short DeclareType;
166
- static core::T_sp convert (DeclareType v) {
167
- core::Fixnum_sp oi = core::make_fixnum (v);
168
- return (oi);
169
- }
170
- };
171
-
172
- template <> struct to_object <unsigned short > {
173
- typedef unsigned short DeclareType;
174
- static core::T_sp convert (DeclareType v) {
175
- core::Fixnum_sp oi = core::make_fixnum (v);
176
- return (oi);
177
- }
178
- };
179
-
180
- template <> struct to_object <int > {
181
- typedef int DeclareType;
182
- static core::T_sp convert (DeclareType v) {
183
- core::Fixnum_sp oi = core::make_fixnum (v);
184
- return (oi);
185
- }
186
- };
187
-
188
- template <> struct to_object <unsigned int > {
189
- typedef unsigned int DeclareType;
190
- static core::T_sp convert (DeclareType v) {
191
- core::Integer_sp oi = core::Integer_O::create (v);
192
- return (oi);
193
- }
194
- };
195
-
196
- template <> struct to_object <const unsigned int > {
197
- typedef const unsigned int DeclareType;
198
- static core::T_sp convert (DeclareType v) {
199
- core::Integer_sp oi = core::Integer_O::create (v);
200
- return (oi);
201
- }
185
+ template <std::integral I> struct to_object <I> {
186
+ typedef I DeclareType;
187
+ static core::T_sp convert (DeclareType v) { return core::Integer_O::create (v); }
202
188
};
203
189
204
- template <> struct to_object <long > {
205
- typedef long DeclareType;
206
- static core::T_sp convert (DeclareType v) {
207
- core::Integer_sp oi = core::Integer_O::create (static_cast <gctools::Fixnum>(v));
208
- return (oi);
209
- }
190
+ template <std::integral I> struct to_object <const I&> {
191
+ typedef const I& DeclareType;
192
+ static core::T_sp convert (DeclareType v) { return core::Integer_O::create (v); }
210
193
};
211
194
212
- template <> struct to_object <unsigned long > {
213
- typedef unsigned long DeclareType;
214
- static core::T_sp convert (DeclareType v) {
215
- core::Integer_sp oi = core::Integer_O::create (static_cast <gctools::Fixnum>(v));
216
- return (oi);
217
- }
195
+ template <> struct to_object <float > {
196
+ typedef float DeclareType;
197
+ static core::T_sp convert (DeclareType v) { return core::clasp_make_single_float (v); }
218
198
};
219
199
220
- #if __SIZEOF_LONG_LONG__ <= 8
221
-
222
- template <> struct to_object <long long > {
223
- typedef long long DeclareType;
224
- static core::T_sp convert (DeclareType v) {
225
- core::Integer_sp oi = core::Integer_O::create ((int64_t )v);
226
- return (oi);
227
- }
200
+ template <> struct to_object <const float &> {
201
+ typedef const float & DeclareType;
202
+ static core::T_sp convert (DeclareType v) { return core::clasp_make_single_float (v); }
228
203
};
229
204
230
- template <> struct to_object <unsigned long long > {
231
- typedef unsigned long long DeclareType;
232
- static core::T_sp convert (DeclareType v) {
233
- core::Integer_sp oi = core::Integer_O::create ((uint64_t )v);
234
- return (oi);
235
- }
205
+ template <> struct to_object <double > {
206
+ typedef double DeclareType;
207
+ static core::T_sp convert (DeclareType v) { return core::clasp_make_double_float (v); }
236
208
};
237
209
238
- #endif
239
-
240
- template <> struct to_object <float > {
241
- typedef double DeclareType;
242
- static core::T_sp convert (DeclareType v) {
243
- core::SingleFloat_sp oi = core::clasp_make_single_float (v);
244
- return (oi);
245
- }
210
+ template <> struct to_object <const double &> {
211
+ typedef const double & DeclareType;
212
+ static core::T_sp convert (DeclareType v) { return core::clasp_make_double_float (v); }
246
213
};
247
214
248
- template <> struct to_object <double > {
249
- typedef double DeclareType;
215
+ template <> struct to_object <long double > {
216
+ typedef long double DeclareType;
250
217
static core::T_sp convert (DeclareType v) {
251
- core::DoubleFloat_sp oi = core::clasp_make_double_float (v);
252
- return (oi);
218
+ return core::clasp_make_double_float (static_cast <double >(v));
253
219
}
254
220
};
255
221
256
- template <> struct to_object <long double > {
257
- typedef double DeclareType;
222
+ template <> struct to_object <const long double & > {
223
+ typedef const long double & DeclareType;
258
224
static core::T_sp convert (DeclareType v) {
259
- core::DoubleFloat_sp oi = core::DoubleFloat_O::create (v);
260
- return (oi);
225
+ return core::clasp_make_double_float (static_cast <double >(v));
261
226
}
262
227
};
263
228
264
229
template <> struct to_object <mpz_class> {
265
230
typedef mpz_class DeclareType;
266
- static core::T_sp convert (const DeclareType& v) {
267
- core::Integer_sp oi = core::Integer_O::create (v);
268
- return (oi);
269
- }
231
+ static core::T_sp convert (const DeclareType& v) { return core::Integer_O::create (v); }
270
232
};
271
233
272
234
template <> struct to_object <const mpz_class&> {
273
235
typedef const mpz_class& DeclareType;
274
- static core::T_sp convert (DeclareType v) {
275
- core::Integer_sp oi = core::Integer_O::create (v);
276
- return (oi);
277
- }
236
+ static core::T_sp convert (DeclareType v) { return core::Integer_O::create (v); }
278
237
};
279
238
280
239
// String translators
0 commit comments