type_member_definition.append (node);
}
+ public void add_function_declaration (CCodeFunction func) {
+ var decl = func.copy ();
+ decl.is_declaration = true;
+ type_member_declaration.append (decl);
+ }
+
public void add_function (CCodeFunction func) {
type_member_definition.append (func);
}
public string attributes { get; set; }
+ public bool is_declaration { get; set; }
+
/**
* The function body.
*/
public CCodeBlock block { get; set; }
private List<CCodeFormalParameter> parameters = new ArrayList<CCodeFormalParameter> ();
-
+
public CCodeFunction (string name, string return_type = "void") {
this.name = name;
this.return_type = return_type;
+ this.block = new CCodeBlock ();
}
/**
func.parameters.add (param);
}
+ func.is_declaration = is_declaration;
func.block = block;
return func;
}
writer.write_string (" G_GNUC_DEPRECATED");
}
- if (block == null) {
+ if (is_declaration) {
if (attributes != null) {
writer.write_string (" ");
writer.write_string (attributes);
fun.modifiers = CCodeModifiers.STATIC;
fun.add_parameter (new CCodeFormalParameter ("array", "%s*".printf (st.get_cname ())));
fun.add_parameter (new CCodeFormalParameter ("array_length", "gint"));
- cfile.add_type_member_declaration (fun.copy ());
+ cfile.add_function_declaration (fun);
var cdofree = new CCodeBlock ();
fun.add_parameter (new CCodeFormalParameter ("array", "gpointer"));
fun.add_parameter (new CCodeFormalParameter ("array_length", "gint"));
fun.add_parameter (new CCodeFormalParameter ("destroy_func", "GDestroyNotify"));
- cfile.add_type_member_declaration (fun.copy ());
+ cfile.add_function_declaration (fun);
var cdofree = new CCodeBlock ();
fun.add_parameter (new CCodeFormalParameter ("array", "gpointer"));
fun.add_parameter (new CCodeFormalParameter ("array_length", "gint"));
fun.add_parameter (new CCodeFormalParameter ("destroy_func", "GDestroyNotify"));
- cfile.add_type_member_declaration (fun.copy ());
+ cfile.add_function_declaration (fun);
// call _vala_array_destroy to free the array elements
var ccall = new CCodeFunctionCall (new CCodeIdentifier ("_vala_array_destroy"));
fun.add_parameter (new CCodeFormalParameter ("src", "gint"));
fun.add_parameter (new CCodeFormalParameter ("dest", "gint"));
fun.add_parameter (new CCodeFormalParameter ("length", "gint"));
- cfile.add_type_member_declaration (fun.copy ());
+ cfile.add_function_declaration (fun);
var array = new CCodeCastExpression (new CCodeIdentifier ("array"), "char*");
var element_size = new CCodeIdentifier ("element_size");
var fun = new CCodeFunction ("_vala_array_length", "gint");
fun.modifiers = CCodeModifiers.STATIC;
fun.add_parameter (new CCodeFormalParameter ("array", "gpointer"));
- cfile.add_type_member_declaration (fun.copy ());
+ cfile.add_function_declaration (fun);
var block = new CCodeBlock ();
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
fun.modifiers = CCodeModifiers.STATIC;
fun.add_parameter (new CCodeFormalParameter ("str1", "const char *"));
fun.add_parameter (new CCodeFormalParameter ("str2", "const char *"));
- cfile.add_type_member_declaration (fun.copy ());
+ cfile.add_function_declaration (fun);
// (str1 != str2)
var cineq = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, new CCodeIdentifier ("str1"), new CCodeIdentifier ("str2"));
regfun.attributes = "G_GNUC_UNUSED";
}
- decl_space.add_type_member_declaration (regfun);
+ decl_space.add_function_declaration (regfun);
return true;
}
if (prop.is_private_symbol () || (!acc.readable && !acc.writable) || acc.access == SymbolAccessibility.PRIVATE) {
function.modifiers |= CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
public override void visit_property_accessor (PropertyAccessor acc) {
var ref_fun = new CCodeFunction ("block%d_data_ref".printf (block_id), struct_name + "*");
ref_fun.add_parameter (new CCodeFormalParameter ("_data%d_".printf (block_id), struct_name + "*"));
ref_fun.modifiers = CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (ref_fun.copy ());
+ cfile.add_function_declaration (ref_fun);
ref_fun.block = new CCodeBlock ();
var ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_atomic_int_inc"));
var unref_fun = new CCodeFunction ("block%d_data_unref".printf (block_id), "void");
unref_fun.add_parameter (new CCodeFormalParameter ("_data%d_".printf (block_id), struct_name + "*"));
unref_fun.modifiers = CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (unref_fun.copy ());
+ cfile.add_function_declaration (unref_fun);
unref_fun.block = new CCodeBlock ();
ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_atomic_int_dec_and_test"));
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = cblock;
cfile.add_function (function);
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = cblock;
cfile.add_function (function);
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
free_call.add_argument (new CCodeMemberAccess.pointer(new CCodeIdentifier("node"), "data"));
wrapper_block.add_statement (new CCodeExpressionStatement (free_call));
wrapper_block.add_statement (new CCodeReturnStatement (new CCodeConstant ("FALSE")));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
wrapper.block = wrapper_block;
cfile.add_function (wrapper);
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (fragment);
block.add_statement (new CCodeReturnStatement (result));
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
cfunc.block = block;
cfile.add_function (cfunc);
block.add_statement (cloop);
block.add_statement (new CCodeReturnStatement (new CCodeConstant ("FALSE")));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (fragment);
block.add_statement (new CCodeReturnStatement (sink));
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
cfunc.block = block;
cfile.add_function (cfunc);
}
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = cblock;
cfile.add_function (function);
}
pop_context ();
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = cblock;
cfile.add_function (function);
}
// append to file
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
if (!(m is CreationMethod && cl != null && cl.is_abstract)) {
generate_cparameters (m, decl_space, cparam_map, function, null, carg_map, new CCodeFunctionCall (new CCodeIdentifier ("fake")));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
if (m is CreationMethod && cl != null) {
cparam_map = new HashMap<int,CCodeFormalParameter> (direct_hash, direct_equal);
generate_cparameters (m, decl_space, cparam_map, function);
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
}
if (m.base_method != null || m.base_interface_method != null) {
// declare *_real_* function
function.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
} else if (m.is_private_symbol ()) {
function.modifiers |= CCodeModifiers.STATIC;
}
function.add_parameter (new CCodeFormalParameter ("data", Symbol.lower_case_to_camel_case (m.get_cname ()) + "Data*"));
function.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
}
}
}
function.modifiers = CCodeModifiers.STATIC;
}
function.add_parameter (new CCodeFormalParameter ("self", "const " + st.get_cname () + "*"));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
function = new CCodeFunction (st.get_free_function (), "void");
if (st.is_private_symbol ()) {
function.modifiers = CCodeModifiers.STATIC;
}
function.add_parameter (new CCodeFormalParameter ("self", st.get_cname () + "*"));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
if (st.is_disposable ()) {
function = new CCodeFunction (st.get_copy_function (), "void");
}
function.add_parameter (new CCodeFormalParameter ("self", "const " + st.get_cname () + "*"));
function.add_parameter (new CCodeFormalParameter ("dest", st.get_cname () + "*"));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
function = new CCodeFunction (st.get_destroy_function (), "void");
if (st.is_private_symbol ()) {
function.modifiers = CCodeModifiers.STATIC;
}
function.add_parameter (new CCodeFormalParameter ("self", st.get_cname () + "*"));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
}
}
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
generate_dbus_property_getter_wrapper (prop, block);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
generate_dbus_property_setter_wrapper (prop, block);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
generate_dbus_connect_wrapper (sig, block);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
generate_dbus_disconnect_wrapper (sig, block);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
}
proxy_iface_init.modifiers = CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (proxy_iface_init.copy ());
+ cfile.add_function_declaration (proxy_iface_init);
proxy_iface_init.block = iface_block;
cfile.add_function (proxy_iface_init);
}
proxy_new.add_parameter (new CCodeFormalParameter ("name", "const char*"));
proxy_new.add_parameter (new CCodeFormalParameter ("path", "const char*"));
- decl_space.add_type_member_declaration (proxy_new);
+ decl_space.add_function_declaration (proxy_new);
}
public override void visit_interface (Interface iface) {
var type_fun = new CCodeFunction(lower_cname + "_get_type", "GType");
type_fun.attributes = "G_GNUC_CONST";
- cfile.add_type_member_declaration (type_fun);
+ cfile.add_function_declaration (type_fun);
var define_type = new CCodeFunctionCall (new CCodeIdentifier ("G_DEFINE_TYPE_EXTENDED"));
define_type.add_argument (new CCodeIdentifier (cname));
get_prop.add_parameter (new CCodeFormalParameter ("property_id", "guint"));
get_prop.add_parameter (new CCodeFormalParameter ("value", "GValue *"));
get_prop.add_parameter (new CCodeFormalParameter ("pspec", "GParamSpec *"));
- cfile.add_type_member_declaration (get_prop.copy ());
+ cfile.add_function_declaration (get_prop);
get_prop.block = new CCodeBlock ();
cfile.add_function (get_prop);
set_prop.add_parameter (new CCodeFormalParameter ("property_id", "guint"));
set_prop.add_parameter (new CCodeFormalParameter ("value", "const GValue *"));
set_prop.add_parameter (new CCodeFormalParameter ("pspec", "GParamSpec *"));
- cfile.add_type_member_declaration (set_prop.copy ());
+ cfile.add_function_declaration (set_prop);
set_prop.block = new CCodeBlock ();
cfile.add_function (set_prop);
}
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_result")));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
filter_block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("DBUS_HANDLER_RESULT_NOT_YET_HANDLED")));
- cfile.add_type_member_declaration (proxy_filter.copy ());
+ cfile.add_function_declaration (proxy_filter);
proxy_filter.block = filter_block;
cfile.add_function (proxy_filter);
}
cdecl.add_declarator (new CCodeVariableDeclarator ("reply"));
block.add_statement (cdecl);
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_result")));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (postfragment);
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
pending.add_argument (new CCodeConstant ("NULL"));
block.add_statement (new CCodeExpressionStatement (pending));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
pendingfree.add_argument (new CCodeIdentifier ("pending"));
block.add_statement (new CCodeExpressionStatement (pendingfree));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_result")));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_result")));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
reply_unref.add_argument (new CCodeIdentifier ("_reply"));
block.add_statement (new CCodeExpressionStatement (reply_unref));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
public override bool generate_enum_declaration (Enum en, CCodeFile decl_space) {
if (base.generate_enum_declaration (en, decl_space)) {
if (is_string_marshalled_enum (en)) {
- decl_space.add_type_member_declaration (generate_enum_from_string_function_declaration (en));
- decl_space.add_type_member_declaration (generate_enum_to_string_function_declaration (en));
+ decl_space.add_function_declaration (generate_enum_from_string_function_declaration (en));
+ decl_space.add_function_declaration (generate_enum_to_string_function_declaration (en));
}
return true;
}
cfunc.add_parameter (new CCodeFormalParameter ("object", "void*"));
cfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
cfunc.add_parameter (new CCodeFormalParameter ("object", "GObject*"));
cfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
block = new CCodeBlock ();
cfunc.block = block;
ready_block.add_statement (new CCodeExpressionStatement (free_call));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
if (m.coroutine) {
- cfile.add_type_member_declaration (ready_function.copy ());
+ cfile.add_function_declaration (ready_function);
ready_function.block = ready_block;
cfile.add_function (ready_function);
message_unref.add_argument (new CCodeIdentifier ("_message"));
block.add_statement (new CCodeExpressionStatement (message_unref));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
cfunc.modifiers |= CCodeModifiers.STATIC;
}
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
cfunc.add_parameter (new CCodeFormalParameter ("connection", "DBusConnection*"));
cfunc.add_parameter (new CCodeFormalParameter ("_user_data_", "void*"));
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
handle_reply (block);
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
handle_reply (block);
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
handle_reply (block);
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
handle_reply (block);
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
cfunc.modifiers |= CCodeModifiers.STATIC;
}
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
// create type_get/finalize functions
var type_get_fun = new CCodeFunction ("block%d_data_type_get".printf (block_id), "DovaType*");
type_get_fun.modifiers = CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (type_get_fun.copy ());
+ cfile.add_function_declaration (type_get_fun);
type_get_fun.block = new CCodeBlock ();
var cdecl = new CCodeDeclaration ("int");
var unref_fun = new CCodeFunction ("block%d_data_finalize".printf (block_id), "void");
unref_fun.add_parameter (new CCodeFormalParameter ("_data%d_".printf (block_id), struct_name + "*"));
unref_fun.modifiers = CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (unref_fun.copy ());
+ cfile.add_function_declaration (unref_fun);
unref_fun.block = free_block;
cfile.add_function (unref_fun);
if (d.is_internal_symbol ()) {
type_fun.modifiers = CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (type_fun);
+ decl_space.add_function_declaration (type_fun);
var type_init_fun = new CCodeFunction ("%s_type_init".printf (d.get_lower_case_cname ()));
if (d.is_internal_symbol ()) {
type_init_fun.modifiers = CCodeModifiers.STATIC;
}
type_init_fun.add_parameter (new CCodeFormalParameter ("type", "DovaType *"));
- decl_space.add_type_member_declaration (type_init_fun);
+ decl_space.add_function_declaration (type_init_fun);
generate_type_declaration (d.return_type, decl_space);
var function = generate_new_function (d, decl_space);
function.block = null;
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
function = generate_invoke_function (d, decl_space);
function.block = null;
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
CCodeFunction generate_new_function (Delegate d, CCodeFile decl_space) {
value_copy_function.add_parameter (new CCodeFormalParameter ("src", "void *"));
value_copy_function.add_parameter (new CCodeFormalParameter ("src_index", "int32_t"));
- cfile.add_type_member_declaration (value_copy_function);
+ cfile.add_function_declaration (value_copy_function);
var value_equals_function = new CCodeFunction ("dova_type_value_equals", "bool");
value_equals_function.add_parameter (new CCodeFormalParameter ("type", "DovaType *"));
value_equals_function.add_parameter (new CCodeFormalParameter ("other", "void *"));
value_equals_function.add_parameter (new CCodeFormalParameter ("other_index", "int32_t"));
- cfile.add_type_member_declaration (value_equals_function);
+ cfile.add_function_declaration (value_equals_function);
var value_hash_function = new CCodeFunction ("dova_type_value_hash", "uint32_t");
value_hash_function.add_parameter (new CCodeFormalParameter ("type", "DovaType *"));
value_hash_function.add_parameter (new CCodeFormalParameter ("value", "void *"));
value_hash_function.add_parameter (new CCodeFormalParameter ("value_index", "int32_t"));
- cfile.add_type_member_declaration (value_hash_function);
+ cfile.add_function_declaration (value_hash_function);
}
if (cl.base_class != null) {
foreach (var type_param in cl.get_type_parameters ()) {
type_fun.add_parameter (new CCodeFormalParameter ("%s_type".printf (type_param.name.down ()), "DovaType *"));
}
- decl_space.add_type_member_declaration (type_fun);
+ decl_space.add_function_declaration (type_fun);
var type_init_fun = new CCodeFunction ("%s_type_init".printf (cl.get_lower_case_cname ()));
if (cl.is_internal_symbol ()) {
foreach (var type_param in cl.get_type_parameters ()) {
type_init_fun.add_parameter (new CCodeFormalParameter ("%s_type".printf (type_param.name.down ()), "DovaType *"));
}
- decl_space.add_type_member_declaration (type_init_fun);
+ decl_space.add_function_declaration (type_init_fun);
}
void generate_virtual_method_declaration (Method m, CCodeFile decl_space, CCodeStruct type_struct) {
if (add_symbol_declaration (decl_space, type_class, "dova_type_set_value_copy")) {
return;
}
- decl_space.add_type_member_declaration (create_set_value_copy_function (true));
+ decl_space.add_function_declaration (create_set_value_copy_function (true));
}
CCodeFunction create_set_value_equals_function (bool decl_only = false) {
if (add_symbol_declaration (decl_space, type_class, "dova_type_set_value_equals")) {
return;
}
- decl_space.add_type_member_declaration (create_set_value_equals_function (true));
+ decl_space.add_function_declaration (create_set_value_equals_function (true));
}
CCodeFunction create_set_value_hash_function (bool decl_only = false) {
if (add_symbol_declaration (decl_space, type_class, "dova_type_set_value_hash")) {
return;
}
- decl_space.add_type_member_declaration (create_set_value_hash_function (true));
+ decl_space.add_function_declaration (create_set_value_hash_function (true));
}
CCodeFunction create_set_value_to_any_function (bool decl_only = false) {
if (add_symbol_declaration (decl_space, type_class, "dova_type_set_value_to_any")) {
return;
}
- decl_space.add_type_member_declaration (create_set_value_to_any_function (true));
+ decl_space.add_function_declaration (create_set_value_to_any_function (true));
}
CCodeFunction create_set_value_from_any_function (bool decl_only = false) {
if (add_symbol_declaration (decl_space, type_class, "dova_type_set_value_from_any")) {
return;
}
- decl_space.add_type_member_declaration (create_set_value_from_any_function (true));
+ decl_space.add_function_declaration (create_set_value_from_any_function (true));
}
public CCodeBlock generate_type_get_function (TypeSymbol cl, Class? base_class) {
function.add_parameter (new CCodeFormalParameter ("this", cl.get_cname () + "*"));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
var cblock = new CCodeBlock ();
if (prop.is_internal_symbol () || acc.is_internal_symbol ()) {
function.modifiers |= CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
if (prop.is_abstract || prop.is_virtual) {
string param_list = "(%s *this".printf (((ObjectTypeSymbol) prop.parent_symbol).get_cname ());
override_func.add_parameter (new CCodeFormalParameter ("type", "DovaType *"));
override_func.add_parameter (new CCodeFormalParameter ("(*function) %s".printf (param_list), acc.readable ? acc.value_type.get_cname () : "void"));
- decl_space.add_type_member_declaration (override_func);
+ decl_space.add_function_declaration (override_func);
}
}
foreach (var type_param in iface.get_type_parameters ()) {
type_fun.add_parameter (new CCodeFormalParameter ("%s_type".printf (type_param.name.down ()), "DovaType *"));
}
- decl_space.add_type_member_declaration (type_fun);
+ decl_space.add_function_declaration (type_fun);
var type_init_fun = new CCodeFunction ("%s_type_init".printf (iface.get_lower_case_cname ()));
if (iface.is_internal_symbol ()) {
foreach (var type_param in iface.get_type_parameters ()) {
type_init_fun.add_parameter (new CCodeFormalParameter ("%s_type".printf (type_param.name.down ()), "DovaType *"));
}
- decl_space.add_type_member_declaration (type_init_fun);
+ decl_space.add_function_declaration (type_init_fun);
}
generate_cparameters (m, decl_space, function, null, new CCodeFunctionCall (new CCodeIdentifier ("fake")));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
if (m.is_abstract || m.is_virtual) {
var base_func = function.copy ();
base_func.name = "%sbase_%s".printf (m.parent_symbol.get_lower_case_cprefix (), m.name);
base_func.insert_parameter (0, new CCodeFormalParameter ("base_type", "DovaType *"));
- decl_space.add_type_member_declaration (base_func);
+ decl_space.add_function_declaration (base_func);
string param_list = "(%s *this".printf (((ObjectTypeSymbol) m.parent_symbol).get_cname ());
foreach (var param in m.get_parameters ()) {
var override_func = new CCodeFunction ("%soverride_%s".printf (m.parent_symbol.get_lower_case_cprefix (), m.name));
override_func.add_parameter (new CCodeFormalParameter ("type", "DovaType *"));
override_func.add_parameter (new CCodeFormalParameter ("(*function) %s".printf (param_list), (m.return_type is GenericType) ? "void" : m.return_type.get_cname ()));
- decl_space.add_type_member_declaration (override_func);
+ decl_space.add_function_declaration (override_func);
}
if (m is CreationMethod && m.parent_symbol is Class) {
generate_cparameters (m, decl_space, function);
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
}
if (m.base_method != null || m.base_interface_method != null) {
// declare *_real_* function
function.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
} else if (m.is_internal_symbol ()) {
function.modifiers |= CCodeModifiers.STATIC;
}
vfunc.modifiers |= CCodeModifiers.STATIC;
}
- cfile.add_type_member_declaration (vfunc.copy ());
+ cfile.add_function_declaration (vfunc);
vfunc.block = vblock;
if (st.is_internal_symbol ()) {
type_fun.modifiers = CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (type_fun);
+ decl_space.add_function_declaration (type_fun);
var type_init_fun = new CCodeFunction ("%s_type_init".printf (st.get_lower_case_cname ()));
type_init_fun.add_parameter (new CCodeFormalParameter ("type", "DovaType *"));
if (st.is_internal_symbol ()) {
type_init_fun.modifiers = CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (type_init_fun);
+ decl_space.add_function_declaration (type_init_fun);
var function = new CCodeFunction (st.get_copy_function (), "void");
if (st.is_internal_symbol ()) {
function.add_parameter (new CCodeFormalParameter ("src", st.get_cname () + "*"));
function.add_parameter (new CCodeFormalParameter ("src_index", "int32_t"));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
public override void visit_struct (Struct st) {
if (m.base_method != null || m.base_interface_method != null) {
// declare *_real_* function
asyncfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (asyncfunc.copy ());
+ cfile.add_function_declaration (asyncfunc);
} else if (m.is_private_symbol ()) {
asyncfunc.modifiers |= CCodeModifiers.STATIC;
}
var block = function.block;
function.block = null;
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
asyncfunc.modifiers |= CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (asyncfunc);
+ decl_space.add_function_declaration (asyncfunc);
var finishfunc = new CCodeFunction (m.get_finish_cname ());
cparam_map = new HashMap<int,CCodeFormalParameter> (direct_hash, direct_equal);
finishfunc.modifiers |= CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (finishfunc);
+ decl_space.add_function_declaration (finishfunc);
} else {
base.generate_method_declaration (m, decl_space);
}
}
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
}
proxy_iface_init.modifiers = CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (proxy_iface_init.copy ());
+ cfile.add_function_declaration (proxy_iface_init);
proxy_iface_init.block = iface_block;
cfile.add_function (proxy_iface_init);
}
// declare proxy_get_type function
var proxy_get_type = new CCodeFunction (get_type_name, "GType");
proxy_get_type.attributes = "G_GNUC_CONST";
- decl_space.add_type_member_declaration (proxy_get_type);
+ decl_space.add_function_declaration (proxy_get_type);
}
public override void visit_interface (Interface iface) {
block.add_statement (postfragment);
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
cfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_result")));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
ccall.add_argument (new CCodeIdentifier ("_user_data_"));
block.add_statement (new CCodeExpressionStatement (ccall));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_result")));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_result")));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
unref_reply.add_argument (new CCodeIdentifier ("_reply"));
block.add_statement (new CCodeExpressionStatement (unref_reply));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
ready_block.add_statement (new CCodeExpressionStatement (unref_call));
}
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
if (m.coroutine) {
- cfile.add_type_member_declaration (ready_function.copy ());
+ cfile.add_function_declaration (ready_function);
ready_function.block = ready_block;
cfile.add_function (ready_function);
ccall.add_argument (new CCodeConstant ("NULL"));
block.add_statement (new CCodeExpressionStatement (ccall));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("_reply")));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
block.add_statement (postfragment);
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
function.block = block;
cfile.add_function (function);
cfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
cfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
cfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
var block = new CCodeBlock ();
cfunc.block = block;
if (sym.is_private_symbol ()) {
cfunc.modifiers |= CCodeModifiers.STATIC;
}
- decl_space.add_type_member_declaration (cfunc);
+ decl_space.add_function_declaration (cfunc);
}
void visit_object_type_symbol (ObjectTypeSymbol sym) {
cfunc = new CCodeFunction ("_" + sym.get_lower_case_cprefix () + "unregister_object");
cfunc.add_parameter (new CCodeFormalParameter ("user_data", "gpointer"));
cfunc.modifiers |= CCodeModifiers.STATIC;
- cfile.add_type_member_declaration (cfunc.copy ());
+ cfile.add_function_declaration (cfunc);
block = new CCodeBlock ();
cfunc.block = block;
var cquark_fun = new CCodeFunction (quark_fun_name, gquark_type.data_type.get_cname ());
- decl_space.add_type_member_declaration (cquark_fun);
+ decl_space.add_function_declaration (cquark_fun);
}
public override void visit_error_domain (ErrorDomain edomain) {
block.add_statement (cswitch);
- cfile.add_type_member_declaration (get_prop.copy ());
+ cfile.add_function_declaration (get_prop);
get_prop.block = block;
cswitch.add_statement (new CCodeBreakStatement ());
}
- cfile.add_type_member_declaration (set_prop.copy ());
+ cfile.add_function_declaration (set_prop);
set_prop.block = block;
function.add_parameter (new CCodeFormalParameter ("n_construct_properties", "guint"));
function.add_parameter (new CCodeFormalParameter ("construct_properties", "GObjectConstructParam *"));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
var cblock = new CCodeBlock ();
generate_gobject_property_getter_wrapper (prop, block);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
generate_gobject_property_setter_wrapper (prop, block);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
generate_gobject_connect_wrapper (sig, block, false);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
generate_gobject_connect_wrapper (sig, block, true);
// append to C source file
- cfile.add_type_member_declaration (func.copy ());
+ cfile.add_function_declaration (func);
func.block = block;
cfile.add_function (func);
signal_marshaller.add_parameter (new CCodeFormalParameter ("invocation_hint", "gpointer"));
signal_marshaller.add_parameter (new CCodeFormalParameter ("marshal_data", "gpointer"));
- cfile.add_type_member_declaration (signal_marshaller.copy ());
+ cfile.add_function_declaration (signal_marshaller);
var marshaller_body = new CCodeBlock ();
ref_fun.add_parameter (new CCodeFormalParameter ("instance", "gpointer"));
unref_fun.add_parameter (new CCodeFormalParameter ("instance", "gpointer"));
- decl_space.add_type_member_declaration (ref_fun.copy ());
- decl_space.add_type_member_declaration (unref_fun.copy ());
+ decl_space.add_function_declaration (ref_fun);
+ decl_space.add_function_declaration (unref_fun);
// GParamSpec and GValue functions
string function_name = cl.get_lower_case_cname ("param_spec_");
function.attributes = "G_GNUC_UNUSED";
}
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
function = new CCodeFunction (cl.get_set_value_function (), "void");
function.add_parameter (new CCodeFormalParameter ("value", "GValue*"));
function.attributes = "G_GNUC_UNUSED";
}
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
function = new CCodeFunction (cl.get_take_value_function (), "void");
function.add_parameter (new CCodeFormalParameter ("value", "GValue*"));
function.attributes = "G_GNUC_UNUSED";
}
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
function = new CCodeFunction (cl.get_get_value_function (), "gpointer");
function.add_parameter (new CCodeFormalParameter ("value", "const GValue*"));
function.attributes = "G_GNUC_UNUSED";
}
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
} else if (!is_gtypeinstance) {
if (cl.base_class == null) {
var function = new CCodeFunction (cl.get_lower_case_cprefix () + "free", "void");
function.add_parameter (new CCodeFormalParameter ("self", cl.get_cname () + "*"));
- decl_space.add_type_member_declaration (function);
+ decl_space.add_function_declaration (function);
}
}
if (cl.is_compact) {
// Add declaration, since the instance_init function is explicitly called
// by the creation methods
- cfile.add_type_member_declaration (instance_init.copy ());
+ cfile.add_function_declaration (instance_init);
}
var init_block = new CCodeBlock ();
function.modifiers = CCodeModifiers.STATIC;
function.add_parameter (new CCodeFormalParameter ("klass", cl.get_cname () + "Class *"));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
var cblock = new CCodeBlock ();
function.modifiers = CCodeModifiers.STATIC;
function.add_parameter (new CCodeFormalParameter ("klass", cl.get_cname () + "Class *"));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
var cblock = new CCodeBlock ();
function.add_parameter (new CCodeFormalParameter ("obj", fundamental_class.get_cname () + "*"));
- cfile.add_type_member_declaration (function.copy ());
+ cfile.add_function_declaration (function);
var cblock = new CCodeBlock ();
public override bool generate_enum_declaration (Enum en, CCodeFile decl_space) {
if (base.generate_enum_declaration (en, decl_space)) {
if (is_string_marshalled_enum (en)) {
- decl_space.add_type_member_declaration (generate_enum_from_string_function_declaration (en));
- decl_space.add_type_member_declaration (generate_enum_to_string_function_declaration (en));
+ decl_space.add_function_declaration (generate_enum_from_string_function_declaration (en));
+ decl_space.add_function_declaration (generate_enum_to_string_function_declaration (en));
}
return true;
}
var get_fun = new CCodeFunction ("%s_get_type".printf (get_type_declaration ().get_lower_case_cname (null)), "GType");
get_fun.attributes = "G_GNUC_CONST";
+ get_fun.is_declaration = true;
declaration_fragment.append (get_fun.copy ());
+ get_fun.is_declaration = false;
get_fun.block = new CCodeBlock ();
get_fun.block.add_statement (new CCodeReturnStatement (new CCodeIdentifier (type_id_name)));
type_block.add_statement (new CCodeReturnStatement (new CCodeIdentifier (type_id_name)));
}
+ fun.is_declaration = true;
declaration_fragment.append (fun.copy ());
+ fun.is_declaration = false;
fun.block = type_block;