Browse Source

added operator overload for string

Karroffel 8 years ago
parent
commit
7fa7f7b9c5

+ 5 - 3
binding_generator/src/main.rs

@@ -504,7 +504,8 @@ fn generate_icall_header(icalls: &HashSet<(String, Vec<String>)>) -> String {
 		contents = contents + return_type(ret) + " " + get_icall_name_ref((ret, args)).as_str() + "(godot_method_bind *mb, godot_object *inst";
 		for arg in args {
 			contents = contents + ", ";
-			if !is_primitive(&arg) && is_core_type(&arg) {
+			// if !is_primitive(&arg) && is_core_type(&arg) {
+			if !is_primitive(&arg) {
 				contents = contents + "const " + arg.as_str() + "&";
 			} else {
 				contents = contents + "const " + arg.as_str() + "";
@@ -544,7 +545,8 @@ fn generate_icall_implementation(icalls: &HashSet<(String, Vec<String>)>) -> Str
 		let mut i = 0;
 		for arg in args {
 			contents = contents + ", ";
-			if !is_primitive(&arg) && is_core_type(&arg) {
+			// if !is_primitive(&arg) && is_core_type(&arg) {
+			if !is_primitive(&arg) {
 				contents = contents + "const " + arg.as_str() + "&";
 			} else {
 				contents = contents + "const " + arg.as_str() + "";
@@ -570,7 +572,7 @@ fn generate_icall_implementation(icalls: &HashSet<(String, Vec<String>)>) -> Str
 			} else if is_core_type(arg) {
 				contents = contents + "(void *) &arg" + j.to_string().as_str();
 			} else {
-				contents = contents + "(void *) *(godot_object**) &arg" + j.to_string().as_str();
+				contents = contents + "(void *) arg" + j.to_string().as_str() + ".__core_object";
 			}
 			contents = contents + ",\n";
 			j = j + 1;

+ 3 - 1
include/SConstruct

@@ -57,7 +57,9 @@ elif target == "bindings":
         env.Append(LINKFLAGS = ['-Wl,-R,\'$$ORIGIN/\''])
     env.Append(CPPPATH=['.', './godot', './godot_cpp'])
 
-    env.Append(LIBS=['godot_cpp_core', 'godot.windows.tools.64'])
+    if platform == "windows":
+        env.Append(LIBS=['godot.windows.tools.64'])
+    env.Append(LIBS=['godot_cpp_core'])
     env.Append(LIBPATH=["."])
 
     env.Append(CPPFLAGS=['-D_GD_CPP_BINDING_IMPL'])

+ 1 - 1
include/godot_cpp/Godot.hpp

@@ -173,7 +173,7 @@ struct _WrappedMethod1<T, void, A0> {
 		(obj->*(method->f))(*arg[0]);
 
 		return v;
-	}
+ 	}
 };
 
 

+ 5 - 0
include/godot_cpp/core/String.cpp

@@ -66,6 +66,11 @@ int String::length() const
 	return len;
 }
 
+void String::operator =(const String &s)
+{
+	godot_string_copy_string(&_godot_string, &s._godot_string);
+}
+
 bool String::operator ==(const String &s)
 {
 	return godot_string_operator_equal(&_godot_string, &s._godot_string);

+ 2 - 0
include/godot_cpp/core/String.hpp

@@ -41,6 +41,8 @@ public:
 
 	int length() const;
 
+	void operator =(const String &s);
+
 	bool operator ==(const String &s);
 
 	bool operator !=(const String &s);