[jit] Use std::string rather than const char * in C++ wrapper API.

David Malcolm dmalcolm@redhat.com
Wed Jan 1 00:00:00 GMT 2014


Committed to branch dmalcolm/jit:

gcc/jit/
	* libgccjit++.h (gccjit::context::new_location): Update filename
	arg from a const char * to a const std::string &.
	(gccjit::context::new_field): Likewise for "name" arg.
	(gccjit::context::new_struct_type): Likewise.
	(gccjit::context::new_param): Likewise.
	(gccjit::context::new_function): Likewise.
	(gccjit::function::new_local): Likewise.
	(gccjit::context::new_rvalue): Likewise for "value" arg.
	(gccjit::function::add_comment): Likewise for "text" arg.
	(gccjit::function::new_forward_label): Likewise for "name" arg; add
	variant taking no args for anonymous labels.
	(gccjit::function::add_label): Likewise.
---
 gcc/jit/ChangeLog.jit | 15 ++++++++++
 gcc/jit/libgccjit++.h | 77 +++++++++++++++++++++++++++++++--------------------
 2 files changed, 62 insertions(+), 30 deletions(-)

diff --git a/gcc/jit/ChangeLog.jit b/gcc/jit/ChangeLog.jit
index 714bee7..e1e908f 100644
--- a/gcc/jit/ChangeLog.jit
+++ b/gcc/jit/ChangeLog.jit
@@ -1,5 +1,20 @@
 2014-02-10  David Malcolm  <dmalcolm@redhat.com>
 
+	* libgccjit++.h (gccjit::context::new_location): Update filename
+	arg from a const char * to a const std::string &.
+	(gccjit::context::new_field): Likewise for "name" arg.
+	(gccjit::context::new_struct_type): Likewise.
+	(gccjit::context::new_param): Likewise.
+	(gccjit::context::new_function): Likewise.
+	(gccjit::function::new_local): Likewise.
+	(gccjit::context::new_rvalue): Likewise for "value" arg.
+	(gccjit::function::add_comment): Likewise for "text" arg.
+	(gccjit::function::new_forward_label): Likewise for "name" arg; add
+	variant taking no args for anonymous labels.
+	(gccjit::function::add_label): Likewise.
+
+2014-02-10  David Malcolm  <dmalcolm@redhat.com>
+
 	* libgccjit++.h (gccjit::object, gccjit::location): Move
 	these declarations to before that of gccjit::context so that
 	the various methods of context taking a location can have a
diff --git a/gcc/jit/libgccjit++.h b/gcc/jit/libgccjit++.h
index b57dae2..1579979 100644
--- a/gcc/jit/libgccjit++.h
+++ b/gcc/jit/libgccjit++.h
@@ -75,7 +75,7 @@ namespace gccjit
 			  int value);
 
     location
-    new_location (const char *filename,
+    new_location (const std::string &filename,
 		  int line,
 		  int column);
 
@@ -84,20 +84,20 @@ namespace gccjit
     type new_array_type (type element_type, int num_elements,
 			 location loc = location ());
 
-    field new_field (type type_, const char *name,
+    field new_field (type type_, const std::string &name,
 		     location loc = location ());
 
-    type new_struct_type (const char *name,
+    type new_struct_type (const std::string &name,
 			  std::vector<field> fields,
 			  location loc = location ());
 
     param new_param (type type_,
-		     const char *name,
+		     const std::string &name,
 		     location loc = location ());
 
     function new_function (enum gcc_jit_function_kind kind,
 			   type return_type,
-			   const char *name,
+			   const std::string &name,
 			   std::vector<param> params,
 			   int is_variadic,
 			   location loc = location ());
@@ -110,7 +110,7 @@ namespace gccjit
 		       double value);
     rvalue new_rvalue (type pointer_type,
 		       void *value);
-    rvalue new_rvalue (const char *value);
+    rvalue new_rvalue (const std::string &value);
 
     rvalue new_unary_op (enum gcc_jit_unary_op op,
 			 type result_type,
@@ -167,10 +167,11 @@ namespace gccjit
 
     gcc_jit_function *get_inner_function ();
 
-    label new_forward_label (const char *name);
+    label new_forward_label ();
+    label new_forward_label (const std::string &name);
 
     lvalue new_local (type type_,
-		      const char *name,
+		      const std::string &name,
 		      location loc = location ());
 
     void add_eval (rvalue rvalue,
@@ -185,7 +186,7 @@ namespace gccjit
 			    rvalue rvalue,
 			    location loc = location ());
 
-    void add_comment (const char *text,
+    void add_comment (const std::string &text,
 		      location loc = location ());
 
     void add_conditional (rvalue boolval,
@@ -193,8 +194,9 @@ namespace gccjit
 			  label on_false,
 			  location loc = location ());
 
-    label add_label (const char *name,
+    label add_label (const std::string &name,
 		     location loc = location ());
+    label add_label (location loc = location ());
 
     void place_forward_label (label lab,
 			      location loc = location ());
@@ -304,12 +306,12 @@ context::set_bool_option (enum gcc_jit_bool_option opt,
 }
 
 inline location
-context::new_location (const char *filename,
+context::new_location (const std::string &filename,
 		       int line,
 		       int column)
 {
   return location (gcc_jit_context_new_location (m_inner_ctxt,
-						 filename,
+						 filename.c_str (),
 						 line,
 						 column));
 }
@@ -331,16 +333,16 @@ context::new_array_type (type element_type, int num_elements, location loc)
 }
 
 inline field
-context::new_field (type type_, const char *name, location loc)
+context::new_field (type type_, const std::string &name, location loc)
 {
   return field (gcc_jit_context_new_field (m_inner_ctxt,
 					   loc.get_inner_location (),
 					   type_.get_inner_type (),
-					   name));
+					   name.c_str ()));
 }
 
 inline type
-context::new_struct_type (const char *name,
+context::new_struct_type (const std::string &name,
 			  std::vector<field> fields,
 			  location loc)
 {
@@ -354,26 +356,26 @@ context::new_struct_type (const char *name,
 
   return type (gcc_jit_context_new_struct_type (m_inner_ctxt,
 						loc.get_inner_location (),
-						name,
+						name.c_str (),
 						fields.size (),
 						as_array_of_ptrs));
 }
 
 inline param
 context::new_param (type type_,
-		    const char *name,
+		    const std::string &name,
 		    location loc)
 {
   return param (gcc_jit_context_new_param (m_inner_ctxt,
 					   loc.get_inner_location (),
 					   type_.get_inner_type (),
-					   name));
+					   name.c_str ()));
 }
 
 inline function
 context::new_function (enum gcc_jit_function_kind kind,
 		       type return_type,
-		       const char *name,
+		       const std::string &name,
 		       std::vector<param> params,
 		       int is_variadic,
 		       location loc)
@@ -390,7 +392,7 @@ context::new_function (enum gcc_jit_function_kind kind,
 						 loc.get_inner_location (),
 						 kind,
 						 return_type.get_inner_type (),
-						 name,
+						 name.c_str (),
 						 params.size (),
 						 as_array_of_ptrs,
 						 is_variadic));
@@ -441,10 +443,10 @@ context::new_rvalue (type pointer_type,
 }
 
 inline rvalue
-context::new_rvalue (const char *value)
+context::new_rvalue (const std::string &value)
 {
   return rvalue (
-    gcc_jit_context_new_string_literal (m_inner_ctxt, value));
+    gcc_jit_context_new_string_literal (m_inner_ctxt, value.c_str ()));
 }
 
 inline rvalue
@@ -597,21 +599,28 @@ function::get_inner_function ()
 }
 
 inline label
-function::new_forward_label (const char *name)
+function::new_forward_label ()
 {
   return label (gcc_jit_function_new_forward_label (get_inner_function (),
-						    name));
+						    NULL));
+}
+
+inline label
+function::new_forward_label (const std::string &name)
+{
+  return label (gcc_jit_function_new_forward_label (get_inner_function (),
+						    name.c_str ()));
 }
 
 inline lvalue
 function::new_local (type type_,
-		     const char *name,
+		     const std::string &name,
 		     location loc)
 {
   return lvalue (gcc_jit_function_new_local (get_inner_function (),
 					     loc.get_inner_location (),
 					     type_.get_inner_type (),
-					     name));
+					     name.c_str ()));
 }
 
 inline void
@@ -648,12 +657,12 @@ function::add_assignment_op (lvalue lvalue,
 }
 
 inline void
-function::add_comment (const char *text,
+function::add_comment (const std::string &text,
 		       location loc)
 {
   gcc_jit_function_add_comment (get_inner_function (),
 				loc.get_inner_location (),
-				text);
+				text.c_str ());
 }
 
 inline void
@@ -670,12 +679,20 @@ function::add_conditional (rvalue boolval,
 }
 
 inline label
-function::add_label (const char *name,
+function::add_label (const std::string &name,
 		     location loc)
 {
   return label (gcc_jit_function_add_label (get_inner_function (),
 					    loc.get_inner_location (),
-					    name));
+					    name.c_str ()));
+}
+
+inline label
+function::add_label (location loc)
+{
+  return label (gcc_jit_function_add_label (get_inner_function (),
+					    loc.get_inner_location (),
+					    NULL));
 }
 
 inline void
-- 
1.7.11.7



More information about the Jit mailing list