summaryrefslogtreecommitdiff
path: root/typemap
diff options
context:
space:
mode:
Diffstat (limited to 'typemap')
-rw-r--r--typemap18
1 files changed, 18 insertions, 0 deletions
diff --git a/typemap b/typemap
new file mode 100644
index 0000000..fc3c031
--- /dev/null
+++ b/typemap
@@ -0,0 +1,18 @@
+TYPEMAP
+varspec_t T_VARSPEC
+vartype_t T_VARTYPE
+
+INPUT
+T_VARSPEC
+ if (SvPOK($arg))
+ _deconstruct_variable_name($arg, &$var);
+ else if (SvROK($arg) && SvTYPE(SvRV($arg)) == SVt_PVHV)
+ _deconstruct_variable_hash((HV*)SvRV($arg), &$var);
+ else
+ croak(\"varspec must be a string or a hashref\");
+ _check_varspec_is_valid(&$var);
+
+T_VARTYPE
+ if (!SvPOK($arg))
+ croak(\"vartype must be a string\");
+ $var = string_to_vartype(SvPV_nolen($arg));