|
@@ -98,6 +98,7 @@ const char *Expression::func_name[Expression::FUNC_MAX] = {
|
|
"typeof",
|
|
"typeof",
|
|
"type_exists",
|
|
"type_exists",
|
|
"char",
|
|
"char",
|
|
|
|
+ "ord",
|
|
"str",
|
|
"str",
|
|
"print",
|
|
"print",
|
|
"printerr",
|
|
"printerr",
|
|
@@ -164,6 +165,7 @@ int Expression::get_func_argument_count(BuiltinFunc p_func) {
|
|
case OBJ_WEAKREF:
|
|
case OBJ_WEAKREF:
|
|
case TYPE_OF:
|
|
case TYPE_OF:
|
|
case TEXT_CHAR:
|
|
case TEXT_CHAR:
|
|
|
|
+ case TEXT_ORD:
|
|
case TEXT_STR:
|
|
case TEXT_STR:
|
|
case TEXT_PRINT:
|
|
case TEXT_PRINT:
|
|
case TEXT_PRINTERR:
|
|
case TEXT_PRINTERR:
|
|
@@ -675,6 +677,32 @@ void Expression::exec_func(BuiltinFunc p_func, const Variant **p_inputs, Variant
|
|
|
|
|
|
*r_return = String(result);
|
|
*r_return = String(result);
|
|
|
|
|
|
|
|
+ } break;
|
|
|
|
+ case TEXT_ORD: {
|
|
|
|
+
|
|
|
|
+ if (p_inputs[0]->get_type() != Variant::STRING) {
|
|
|
|
+
|
|
|
|
+ r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
|
|
|
+ r_error.argument = 0;
|
|
|
|
+ r_error.expected = Variant::STRING;
|
|
|
|
+
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String str = *p_inputs[0];
|
|
|
|
+
|
|
|
|
+ if (str.length() != 1) {
|
|
|
|
+
|
|
|
|
+ r_error_str = RTR("Expected a string of length 1 (a character).");
|
|
|
|
+ r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
|
|
|
|
+ r_error.argument = 0;
|
|
|
|
+ r_error.expected = Variant::STRING;
|
|
|
|
+
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ *r_return = str.get(0);
|
|
|
|
+
|
|
} break;
|
|
} break;
|
|
case TEXT_STR: {
|
|
case TEXT_STR: {
|
|
|
|
|