3
std::vector<Points::size_type> T_STD_VECTOR_INT
4
std::vector<size_t> T_STD_VECTOR_INT
6
t_config_option_key T_STD_STRING
7
t_model_material_id T_STD_STRING
8
t_layer_height_ranges T_LAYER_HEIGHT_RANGES
11
BoundingBox* O_OBJECT_SLIC3R
12
Ref<BoundingBox> O_OBJECT_SLIC3R_T
13
Clone<BoundingBox> O_OBJECT_SLIC3R_T
15
BoundingBoxf3* O_OBJECT_SLIC3R
16
Ref<BoundingBoxf3> O_OBJECT_SLIC3R_T
17
Clone<BoundingBoxf3> O_OBJECT_SLIC3R_T
19
DynamicPrintConfig* O_OBJECT_SLIC3R
20
Ref<DynamicPrintConfig> O_OBJECT_SLIC3R_T
21
PrintObjectConfig* O_OBJECT_SLIC3R
22
PrintRegionConfig* O_OBJECT_SLIC3R
23
PrintConfig* O_OBJECT_SLIC3R
24
FullPrintConfig* O_OBJECT_SLIC3R
27
TriangleMesh* O_OBJECT_SLIC3R
28
Ref<TriangleMesh> O_OBJECT_SLIC3R_T
29
Clone<TriangleMesh> O_OBJECT_SLIC3R_T
31
Point* O_OBJECT_SLIC3R
32
Ref<Point> O_OBJECT_SLIC3R_T
33
Clone<Point> O_OBJECT_SLIC3R_T
35
Pointf* O_OBJECT_SLIC3R
36
Ref<Pointf> O_OBJECT_SLIC3R_T
37
Clone<Pointf> O_OBJECT_SLIC3R_T
39
Pointf3* O_OBJECT_SLIC3R
40
Ref<Pointf3> O_OBJECT_SLIC3R_T
41
Clone<Pointf3> O_OBJECT_SLIC3R_T
44
Ref<Line> O_OBJECT_SLIC3R_T
45
Clone<Line> O_OBJECT_SLIC3R_T
47
Polyline* O_OBJECT_SLIC3R
48
Ref<Polyline> O_OBJECT_SLIC3R_T
49
Clone<Polyline> O_OBJECT_SLIC3R_T
51
PolylineCollection* O_OBJECT_SLIC3R
52
Ref<PolylineCollection> O_OBJECT_SLIC3R_T
53
Clone<PolylineCollection> O_OBJECT_SLIC3R_T
55
Polygon* O_OBJECT_SLIC3R
56
Ref<Polygon> O_OBJECT_SLIC3R_T
57
Clone<Polygon> O_OBJECT_SLIC3R_T
59
ExPolygon* O_OBJECT_SLIC3R
60
Ref<ExPolygon> O_OBJECT_SLIC3R_T
61
Clone<ExPolygon> O_OBJECT_SLIC3R_T
63
ExPolygonCollection* O_OBJECT_SLIC3R
64
Ref<ExPolygonCollection> O_OBJECT_SLIC3R_T
65
Clone<ExPolygonCollection> O_OBJECT_SLIC3R_T
67
ExtrusionEntityCollection* O_OBJECT_SLIC3R
68
Ref<ExtrusionEntityCollection> O_OBJECT_SLIC3R_T
69
Clone<ExtrusionEntityCollection> O_OBJECT_SLIC3R_T
71
ExtrusionPath* O_OBJECT_SLIC3R
72
Ref<ExtrusionPath> O_OBJECT_SLIC3R_T
73
Clone<ExtrusionPath> O_OBJECT_SLIC3R_T
75
ExtrusionLoop* O_OBJECT_SLIC3R
76
Ref<ExtrusionLoop> O_OBJECT_SLIC3R_T
77
Clone<ExtrusionLoop> O_OBJECT_SLIC3R_T
80
Ref<Flow> O_OBJECT_SLIC3R_T
81
Clone<Flow> O_OBJECT_SLIC3R_T
83
PrintState* O_OBJECT_SLIC3R
85
Surface* O_OBJECT_SLIC3R
86
Ref<Surface> O_OBJECT_SLIC3R_T
87
Clone<Surface> O_OBJECT_SLIC3R_T
89
SurfaceCollection* O_OBJECT_SLIC3R
91
Extruder* O_OBJECT_SLIC3R
93
Model* O_OBJECT_SLIC3R
94
Ref<Model> O_OBJECT_SLIC3R_T
95
Clone<Model> O_OBJECT_SLIC3R_T
97
ModelMaterial* O_OBJECT_SLIC3R
98
Ref<ModelMaterial> O_OBJECT_SLIC3R_T
99
Clone<ModelMaterial> O_OBJECT_SLIC3R_T
101
ModelObject* O_OBJECT_SLIC3R
102
Ref<ModelObject> O_OBJECT_SLIC3R_T
103
Clone<ModelObject> O_OBJECT_SLIC3R_T
105
ModelVolume* O_OBJECT_SLIC3R
106
Ref<ModelVolume> O_OBJECT_SLIC3R_T
107
Clone<ModelVolume> O_OBJECT_SLIC3R_T
109
ModelInstance* O_OBJECT_SLIC3R
110
Ref<ModelInstance> O_OBJECT_SLIC3R_T
111
Clone<ModelInstance> O_OBJECT_SLIC3R_T
114
ExtrusionLoopRole T_UV
119
ClipperLib::JoinType T_UV
120
ClipperLib::PolyFillType T_UV
122
# we return these types whenever we want the items to be cloned
128
ExPolygons T_ARRAYREF
129
ExtrusionPaths T_ARRAYREF
132
# we return these types whenever we want the items to be returned
133
# by reference and marked ::Ref because they're contained in another
135
Polygons* T_ARRAYREF_PTR
136
ModelObjectPtrs* T_PTR_ARRAYREF_PTR
137
ModelVolumePtrs* T_PTR_ARRAYREF_PTR
138
ModelInstancePtrs* T_PTR_ARRAYREF_PTR
140
# we return these types whenever we want the items to be returned
141
# by reference and not marked ::Ref because they're newly allocated
142
# and not referenced by any Perl object
143
TriangleMeshPtrs T_PTR_ARRAYREF
149
if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) ) {
150
if ( sv_isa($arg, perl_class_name($var) ) || sv_isa($arg, perl_class_name_ref($var) )) {
151
$var = ($type)SvIV((SV*)SvRV( $arg ));
153
croak(\"$var is not of type %s (got %s)\", perl_class_name($var), HvNAME(SvSTASH(SvRV($arg))));
157
warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
162
if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVAV) {
163
AV* av = (AV*)SvRV($arg);
164
const unsigned int len = av_len(av)+1;
165
$type* tmp = new $type(len);
166
for (unsigned int i = 0; i < len; i++) {
167
SV** elem = av_fetch(av, i, 0);
168
(*tmp)[i].from_SV_check(*elem);
173
Perl_croak(aTHX_ \"%s: %s is not an array reference\",
174
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
177
T_LAYER_HEIGHT_RANGES
179
if (!SvROK($arg) || SvTYPE(SvRV($arg)) != SVt_PVAV) {
180
Perl_croak(aTHX_ \"%s: %s is not an array reference\",
181
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
185
AV* av = (AV*)SvRV($arg);
186
const unsigned int len = av_len(av)+1;
187
t_layer_height_ranges tmp_ranges;
188
for (unsigned int i = 0; i < len; i++) {
189
SV* elem = *av_fetch(av, i, 0);
190
if (!SvROK(elem) || SvTYPE(SvRV(elem)) != SVt_PVAV) {
192
aTHX_ \"%s: %s contains something that is not an array reference\",
193
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
197
AV* elemAV = (AV*)SvRV(elem);
198
if (av_len(elemAV) + 1 != 3) {
200
aTHX_ \"%s: %s contains an array that isn't 3 elements long\",
201
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
206
for (unsigned int j = 0; j < 3; ++j) {
207
SV *elem_elem = *av_fetch(elemAV, j, 0);
208
if (!SvNOK(elem_elem)) {
210
aTHX_ \"%s: layer ranges and heights must be numbers\",
211
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]});
214
vals[j] = SvNV(elem_elem);
217
tmp_ranges[t_layer_height_range(vals[0], vals[1])] = vals[2];
225
# return object from pointer
227
sv_setref_pv( $arg, perl_class_name($var), (void*)$var );
229
# return value handled by template class
231
sv_setref_pv( $arg, $type\::CLASS(), (void*)$var );
236
$arg = newRV_noinc((SV*)av);
238
av_extend(av, $var.size()-1);
240
for (${type}::const_iterator it = $var.begin(); it != $var.end(); ++it) {
241
av_store(av, i++, perl_to_SV_clone_ref(*it));
247
$arg = newRV_noinc((SV*)av);
249
av_extend(av, $var->size()-1);
251
for (${ my $t = $type; $t =~ s/\*$//; \$t }::iterator it = $var->begin(); it != $var->end(); ++it) {
252
av_store(av, i++, perl_to_SV_ref(*it));
257
$arg = newRV_noinc((SV*)av);
259
av_extend(av, $var->size()-1);
261
for (${ my $t = $type; $t =~ s/\*$//; \$t }::iterator it = $var->begin(); it != $var->end(); ++it) {
262
av_store(av, i++, perl_to_SV_ref(**it));
267
$arg = newRV_noinc((SV*)av);
269
av_extend(av, $var.size()-1);
271
for (${type}::iterator it = $var.begin(); it != $var.end(); ++it) {
272
av_store(av, i++, (*it)->to_SV());
275
T_LAYER_HEIGHT_RANGES
277
$arg = newRV_noinc((SV*)av);
279
av_extend(av, $var.size() - 1);
280
// map is sorted, so we can just copy it in order
282
for (${type}::iterator it = $var.begin(); it != $var.end(); ++it) {
283
const coordf_t range_values[] = {
284
it->first.first, // key's first = minz
285
it->first.second, // key's second = maxz
286
it->second, // value = height
289
AV *rangeAV = newAV();
290
SV *rangeAV_ref = newRV_noinc((SV*)rangeAV);
291
sv_2mortal(rangeAV_ref);
292
av_extend(rangeAV, 2);
293
for (int j = 0; j < 3; ++j) {
294
SV *val = sv_newmortal();
295
sv_setnv(val, range_values[j]);
296
av_store(rangeAV, j, val);
299
av_store(av, i++, (SV*)rangeAV_ref);