*)method_data;
+ T *obj = (T *)user_data;
+
+ Variant *v = (Variant *)value;
+
+ (obj->*(set_func->f))(_ArgCast::_arg_cast(*v));
+ }
+};
+
+template
+struct _PropertyGetFunc {
+ P(T::*f)
+ ();
+ static godot_variant _wrapped_getter(godot_object *object, void *method_data, void *user_data) {
+ _PropertyGetFunc *get_func = (_PropertyGetFunc *)method_data;
+ T *obj = (T *)user_data;
+
+ godot_variant var;
+ godot::api->godot_variant_new_nil(&var);
+
+ Variant *v = (Variant *)&var;
+
+ *v = (obj->*(get_func->f))();
+
+ return var;
+ }
+};
+
+template
+struct _PropertyDefaultSetFunc {
+ P(T::*f);
+ static void _wrapped_setter(godot_object *object, void *method_data, void *user_data, godot_variant *value) {
+ _PropertyDefaultSetFunc *set_func = (_PropertyDefaultSetFunc