require 'yaml' opencl_model = YAML::load_file("opencl_model.yaml") if ARGV.empty? namespace = "babeltrace_cl" else namespace = ARGV[0] end puts < 0) { bt_field_class_type _type = bt_field_get_class_type(bt_field_array_borrow_element_field_by_index_const(_field, 0)); #{name} = (#{type})malloc(_#{name}_length*sizeof(#{scalar_type})); for (uint64_t _i = 0; _i < _#{name}_length; _i++) { if (bt_field_class_type_is(_type, BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER)) #{name}[_i] = (#{scalar_type})bt_field_integer_unsigned_get_value(bt_field_array_borrow_element_field_by_index_const(_field, _i)); else #{name}[_i] = (#{scalar_type})bt_field_integer_signed_get_value(bt_field_array_borrow_element_field_by_index_const(_field, _i)); } } else #{name} = NULL; EOF when "ctf_sequence", "ctf_sequence_hex" scalar_type = type.gsub("const","").sub("*", "") puts < 0) { bt_field_class_type _type = bt_field_get_class_type(bt_field_array_borrow_element_field_by_index_const(_field, 0)); #{name} = (#{type})malloc(_sz*sizeof(#{scalar_type})); for (uint64_t _i = 0; _i < _sz; _i++) { if (bt_field_class_type_is(_type, BT_FIELD_CLASS_TYPE_UNSIGNED_INTEGER)) #{name}[_i] = (#{scalar_type})bt_field_integer_unsigned_get_value(bt_field_array_borrow_element_field_by_index_const(_field, _i)); else #{name}[_i] = (#{scalar_type})bt_field_integer_signed_get_value(bt_field_array_borrow_element_field_by_index_const(_field, _i)); } } else #{name} = NULL; EOF when "ctf_sequence_text", "ctf_string" puts <callbacks, p)) ) { ((#{namespace}_#{name.gsub(":","_")}_cb *)*p)( #{(["bt_evt", "bt_clock"] + fields.each.collect { |n, f| s = "#{n}" if f["array"] ["_#{n}_length", s] else s end }).flatten.join(",\n ")}); } #{fields.each.collect { |n, f| if f["array"] && f["lttng"] != "ctf_sequence_text" "if (#{n}) free((void *)#{n})" else nil end }.compact.join(";\n ")}; } EOF } puts <