1
namespace VQDR.Common.Utils {
2
public int str_cmp (string a, string b) {
6
public void print_ln (string str, ...) {
9
// Reallocate the string as it is not owned by the function.
12
// Hopefully this does not create any memony leaks. :-)
13
print (tmp.vprintf (va));
16
public string object_to_string (GLib.Object obj) {
17
GLib.ObjectClass real_obj = (GLib.ObjectClass) obj.get_type ().class_ref ();
19
var str_builder = new GLib.StringBuilder ();
22
str_builder.append ("(")
23
.append (obj.get_type().name ())
26
foreach (GLib.ParamSpec ps in real_obj.list_properties ()) {
28
if (ps.value_type == 0 || ps.value_type == GLib.Type.INVALID) {
32
var prop_name = ps.get_name ();
34
Value prop_val = GLib.Value (ps.value_type);
36
if (prop_val.type () == GLib.Type.INVALID || prop_val.type () == 0) {
40
obj.get_property (prop_name, ref prop_val);
43
str_builder.append ("\t (")
44
.append (prop_val.type_name ())
50
switch (prop_val.type ()) {
51
case (GLib.Type.STRING):
52
str_builder.append (prop_val.get_string ());
55
str_builder.append (prop_val.get_int ().to_string ());
57
case (GLib.Type.BOOLEAN):
58
str_builder.append (prop_val.get_boolean ().to_string ());
60
case (GLib.Type.CHAR):
61
var v = prop_val.get_schar ();
62
str_builder.append_c (v)
64
.append_printf ("%hhx", v);
65
str_builder.append (")");
67
case (GLib.Type.DOUBLE):
68
str_builder.append (prop_val.get_double ().to_string ());
70
case (GLib.Type.ENUM):
71
str_builder.append (prop_val.get_enum ().to_string ());
73
case (GLib.Type.FLAGS):
74
// Probobly needs better handling, but this will do.
75
str_builder.append (prop_val.get_flags ().to_string ());
77
case (GLib.Type.FLOAT):
78
str_builder.append (prop_val.get_float ().to_string ());
80
case (GLib.Type.INT64):
81
str_builder.append (prop_val.get_int64 ().to_string ());
83
case (GLib.Type.LONG):
84
str_builder.append (prop_val.get_long ().to_string ());
86
case (GLib.Type.OBJECT):
87
str_builder.append_printf ("%llX", (((long)((pointer)prop_val.get_object ()))));
89
case (GLib.Type.PARAM):
90
var spsc = prop_val.get_param ();
91
str_builder.append ("name: ")
94
.append (spsc.value_type.name ());
96
case (GLib.Type.POINTER):
97
str_builder.append_printf ("%llX", (((long)prop_val.get_pointer ())));
99
case (GLib.Type.UCHAR):
100
var v = prop_val.get_uchar ();
101
str_builder.append_c ((char) v)
103
.append_printf ("%hhx", v);
104
str_builder.append (")");
106
case (GLib.Type.UINT):
107
str_builder.append (prop_val.get_uint ().to_string ());
109
case (GLib.Type.UINT64):
110
str_builder.append (prop_val.get_uint64 ().to_string ());
112
case (GLib.Type.ULONG):
113
str_builder.append (prop_val.get_ulong ().to_string ());
115
case (GLib.Type.VARIANT):
116
GLib.Variant v = prop_val.get_variant ();
117
str_builder.append ("(\n")
118
.append (v.print (true))
122
str_builder.append ("\n");
126
return str_builder.str;