Browse Source

Don't declare new member if it is an override

Hugh Sanderson 14 years ago
parent
commit
ff9da6846c
1 changed files with 12 additions and 4 deletions
  1. 12 4
      gencpp.ml

+ 12 - 4
gencpp.ml

@@ -1717,6 +1717,13 @@ let is_data_member field =
 	| Some { eexpr = TFunction function_def } -> is_dynamic_haxe_method field
 	| _ -> true;;
 
+
+let is_override class_def field =
+   List.mem field class_def.cl_overrides
+;;
+
+			   (* external mem  Dynamic & *)
+
 let default_value_string = function
 	| TInt i -> Printf.sprintf "%ld" i
 	| TFloat float_as_string -> float_as_string
@@ -1924,10 +1931,11 @@ let gen_member_def ctx class_def is_static is_extern is_interface field =
 	end else (match  field.cf_expr with
 	| Some { eexpr = TFunction function_def } ->
 		if ( is_dynamic_haxe_method field ) then begin
-			output ("Dynamic " ^ remap_name ^ ";\n");
-			output (if is_static then "		static " else "		");
-			(* external mem  Dynamic & *)
-			output ("inline Dynamic &" ^ remap_name ^ "_dyn() " ^ "{return " ^ remap_name^ "; }\n")
+         if ( not (is_override class_def field.cf_name ) ) then begin
+			   output ("Dynamic " ^ remap_name ^ ";\n");
+			   output (if is_static then "		static " else "		");
+			   output ("inline Dynamic &" ^ remap_name ^ "_dyn() " ^ "{return " ^ remap_name^ "; }\n")
+          end
 		end else begin
 			let return_type = (type_string function_def.tf_type) in
 			if (not is_static) then output "virtual ";