%typemap{bool}{simple};
%typemap{std::string};
%typemap{t_config_option_key};
%typemap{std::vector<int>};
%typemap{std::vector<size_t>};
%typemap{std::vector<unsigned int>*};
%typemap{std::vector<double>};
%typemap{std::vector<double>*};
%typemap{std::vector<std::string>};
%typemap{SV*};
%typemap{AV*};
%typemap{Point*};
%typemap{Pointf3*};
%typemap{BoundingBox*};
%typemap{BoundingBoxf3*};
%typemap{DynamicPrintConfig*};
%typemap{PrintObjectConfig*};
%typemap{PrintRegionConfig*};
%typemap{PrintConfig*};
%typemap{FullPrintConfig*};
%typemap{ExPolygon*};
%typemap{ExPolygonCollection*};
%typemap{Flow*};
%typemap{Line*};
%typemap{Polyline*};
%typemap{Polygon*};
%typemap{ExtrusionEntityCollection*};
%typemap{ExtrusionPath*};
%typemap{ExtrusionLoop*};
%typemap{Points};
%typemap{Pointfs};
%typemap{Lines};
%typemap{Polygons};
%typemap{Polylines};
%typemap{PrintState};
%typemap{ExPolygons};
%typemap{Surfaces};
%typemap{Polygons*};
%typemap{TriangleMeshPtrs};

%typemap{SurfaceType}{parsed}{
  %cpp_type{SurfaceType};
  %precall_code{%
    $CVar = (SurfaceType)SvUV($PerlVar);
  %};
};
%typemap{ExtrusionRole}{parsed}{
  %cpp_type{ExtrusionRole};
  %precall_code{%
    $CVar = (ExtrusionRole)SvUV($PerlVar);
  %};
};
%typemap{FlowRole}{parsed}{
  %cpp_type{FlowRole};
  %precall_code{%
    $CVar = (FlowRole)SvUV($PerlVar);
  %};
};
%typemap{PrintStep}{parsed}{
  %cpp_type{PrintStep};
  %precall_code{%
    $CVar = (PrintStep)SvUV($PerlVar);
  %};
};
