@@ -397,15 +397,47 @@ def write_source_type(self):
397397 def prepare_parse_tuple_args_const_char_pointer (self , _arg , var_name ):
398398 ret = ""
399399 ret += " if (!PyUnicode_Check(" + var_name + ")) {\n "
400- ret += " // TODO - error\n "
401- ret += " std::cout << \" ERROR: " + var_name + " No unicoode \" << std::endl;\n "
402- ret += " Py_INCREF(Py_None);\n "
403- ret += " ret = Py_None;\n "
404- ret += " return ret;\n "
400+ ret += " PyErr_Format(PyExc_TypeError,\n "
401+ ret += " \" Argument \\ \" " + _arg ["name" ] + "\\ \" to %s must be a strint object not a \\ \" %s\\ \" \" ,\n "
402+ ret += " __FUNCTION__, Py_TYPE(" + var_name + ")->tp_name);\n "
403+ ret += " return NULL;\n "
405404 ret += " }\n "
406405 ret += " " + _arg ["type" ] + " " + _arg ["name" ] + " = PyUnicode_AsUTF8(" + var_name + ");\n "
407406 return ret
408407
408+ def prepare_parse_tuple_args_int (self , _arg , var_name ):
409+ ret = ""
410+ ret += " if (!PyLong_Check(" + var_name + ")) {\n "
411+ ret += " PyErr_Format(PyExc_TypeError,\n "
412+ ret += " \" Argument \\ \" " + _arg ["name" ] + "\\ \" to %s must be a int object not a \\ \" %s\\ \" \" ,\n "
413+ ret += " __FUNCTION__, Py_TYPE(" + var_name + ")->tp_name);\n "
414+ ret += " return NULL;\n "
415+ ret += " }\n "
416+ ret += " " + _arg ["type" ] + " " + _arg ["name" ] + " = PyLong_AsLong(" + var_name + ");\n "
417+ return ret
418+
419+ def prepare_parse_tuple_args_bool (self , _arg , var_name ):
420+ ret = ""
421+ ret += " if (!PyBool_Check(" + var_name + ")) {\n "
422+ ret += " PyErr_Format(PyExc_TypeError,\n "
423+ ret += " \" Argument \\ \" " + _arg ["name" ] + "\\ \" to %s must be a bool object not a \\ \" %s\\ \" \" ,\n "
424+ ret += " __FUNCTION__, Py_TYPE(" + var_name + ")->tp_name);\n "
425+ ret += " return NULL;\n "
426+ ret += " }\n "
427+ ret += " " + _arg ["type" ] + " " + _arg ["name" ] + " = " + var_name + " == Py_True;\n "
428+ return ret
429+
430+ def prepare_parse_tuple_args_float (self , _arg , var_name ):
431+ ret = ""
432+ ret += " if (!PyFloat_Check(" + var_name + ")) {\n "
433+ ret += " PyErr_Format(PyExc_TypeError,\n "
434+ ret += " \" Argument \\ \" " + _arg ["name" ] + "\\ \" to %s must be a float object not a \\ \" %s\\ \" \" ,\n "
435+ ret += " __FUNCTION__, Py_TYPE(" + var_name + ")->tp_name);\n "
436+ ret += " return NULL;\n "
437+ ret += " }\n "
438+ ret += " " + _arg ["type" ] + " " + _arg ["name" ] + " = PyFloat_AsDouble(" + var_name + ");\n "
439+ return ret
440+
409441 def prepare_parse_tuple_args (self , _args ):
410442 ret = {
411443 "parse" : " // parse args:\n " ,
@@ -419,7 +451,7 @@ def prepare_parse_tuple_args(self, _args):
419451 for _arg in _args :
420452 counter += 1
421453 var_name = "pArg" + str (counter )
422- ret ["parse" ] += " PyObject *" + var_name + "; // " + _arg ["type" ] + " " + _arg ["name" ] + ";\n "
454+ ret ["parse" ] += " PyObject *" + var_name + " = NULL ; // " + _arg ["type" ] + " " + _arg ["name" ] + ";\n "
423455 parse_tuple_o += "O"
424456 parse_tuple_args += ", &" + var_name
425457
@@ -434,6 +466,12 @@ def prepare_parse_tuple_args(self, _args):
434466 ret ["parse" ] += " // " + var_name + "\n "
435467 if _arg ["type" ] == "const char *" :
436468 ret ["parse" ] += self .prepare_parse_tuple_args_const_char_pointer (_arg , var_name )
469+ elif _arg ["type" ] == "int" :
470+ ret ["parse" ] += self .prepare_parse_tuple_args_int (_arg , var_name )
471+ elif _arg ["type" ] == "bool" :
472+ ret ["parse" ] += self .prepare_parse_tuple_args_bool (_arg , var_name )
473+ elif _arg ["type" ] == "float" :
474+ ret ["parse" ] += self .prepare_parse_tuple_args_float (_arg , var_name )
437475 else :
438476 ret ["parse" ] += "TODO for " + _arg ["type" ] + "\n "
439477 ret ["parse" ] += "\n "
@@ -738,7 +776,7 @@ def write_source_finish(self):
738776 "mat4" ,
739777 "ObjectMeshDynamic" ,
740778 "vec3" ,
741- "Vec3 " ,
779+ "vec2 " ,
742780 "Player" ,
743781 # editor
744782 "AssetManager" ,
0 commit comments