AudioStream					T_OPAQUE_STRUCT
BoundingBox					T_OPAQUE_STRUCT
Camera2D					T_OPAQUE_STRUCT
Camera3D					T_OPAQUE_STRUCT
Camera3D *					T_PTROBJ
CharInfo *					T_PTROBJ
Color						T_OPAQUE_STRUCT
Color *						T_PTROBJ
Font						T_OPAQUE_STRUCT
Image						T_OPAQUE_STRUCT
Image *						T_PTROBJ
Material					T_OPAQUE_STRUCT
Matrix						T_OPAQUE_STRUCT
Mesh						T_OPAQUE_STRUCT
Mesh *						T_PTROBJ
Model						T_OPAQUE_STRUCT
Model *						T_PTROBJ
Music						T_PTROBJ
NPatchInfo					T_OPAQUE_STRUCT
Ray						T_OPAQUE_STRUCT
RayHitInfo					T_OPAQUE_STRUCT
Rectangle					T_OPAQUE_STRUCT
RenderTexture2D					T_OPAQUE_STRUCT
Shader						T_OPAQUE_STRUCT
Sound						T_OPAQUE_STRUCT
Texture2D					T_OPAQUE_STRUCT
Texture2D *					T_PTROBJ
TraceLogCallback				T_PTROBJ
Vector2						T_OPAQUE_STRUCT
Vector2 *					T_PTROBJ
Vector3						T_OPAQUE_STRUCT
Vector3 *					T_PTROBJ
Vector4						T_OPAQUE_STRUCT
Vector4 *					T_PTROBJ
VrDeviceInfo					T_OPAQUE_STRUCT
Wave						T_OPAQUE_STRUCT
Wave *						T_PTROBJ
const char *					T_PTROBJ
const char *					T_PTROBJ
const char **					T_PTROBJ
char **						T_PTROBJ
const float *					T_PTROBJ
const int *					T_PTROBJ
const void *					T_PTROBJ
float *						T_PTROBJ
int *						T_PTROBJ
#############################################################################
INPUT
T_OPAQUE_STRUCT
	if (sv_derived_from($arg, \"Graphics::Raylib::XS::${ntype}\")) {
	    STRLEN len;
	    char  *s = SvPV((SV*)SvRV($arg), len);

	    if (len != sizeof($var))
		croak(\"Size %d of packed data != expected %d\",
			len, sizeof($var));
	    $var = *($type *)s;
	}
	else
	    croak(\"$var is not of type Graphics::Raylib::XS::${ntype}\")
#############################################################################
OUTPUT
T_OPAQUE_STRUCT
	sv_setref_pvn($arg, \"Graphics::Raylib::XS::${ntype}\", (char *)&$var, sizeof($var));
