Skip to content

Commit 8fa29d9

Browse files
committed
atk: Fix TODOs
1 parent 56871ea commit 8fa29d9

File tree

3 files changed

+197
-7
lines changed

3 files changed

+197
-7
lines changed

atk.fbfrog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
nodos.fbfrog
2+
-replacements atk.replacements
23

34
-removedefine ATK_AVAILABLE_IN_2_10
45
-removedefine ATK_AVAILABLE_IN_2_12

atk.replacements

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
convert c: #define ATK_DEFINE_TYPE(TN, t_n, T_P) ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, 0, {})
2+
to fb: #define ATK_DEFINE_TYPE(TN, t_n, T_P) ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, 0, )
3+
4+
convert c:
5+
#define ATK_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_) \
6+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, 0) \
7+
{ \
8+
_C_; \
9+
} \
10+
_ATK_DEFINE_TYPE_EXTENDED_END()
11+
to fb:
12+
#macro ATK_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)
13+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, 0)
14+
scope
15+
_C_
16+
end scope
17+
_ATK_DEFINE_TYPE_EXTENDED_END()
18+
#endmacro
19+
20+
convert c: #define ATK_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
21+
to fb: #define ATK_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, )
22+
23+
convert c:
24+
#define ATK_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) \
25+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) \
26+
{ \
27+
_C_; \
28+
} \
29+
_ATK_DEFINE_TYPE_EXTENDED_END()
30+
to fb:
31+
#macro ATK_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_)
32+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT)
33+
scope
34+
_C_
35+
end scope
36+
_ATK_DEFINE_TYPE_EXTENDED_END()
37+
#endmacro
38+
39+
convert c:
40+
#define ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_) \
41+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, _f_) \
42+
{ \
43+
_C_; \
44+
} \
45+
_ATK_DEFINE_TYPE_EXTENDED_END()
46+
to fb:
47+
#macro ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)
48+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, _f_)
49+
scope
50+
_C_
51+
end scope
52+
_ATK_DEFINE_TYPE_EXTENDED_END()
53+
#endmacro
54+
55+
convert c:
56+
#define _ATK_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE, flags) \
57+
static void type_name##_init(TypeName *self); \
58+
static void type_name##_class_init(TypeName##Class *klass); \
59+
static gpointer type_name##_parent_class = NULL; \
60+
static void type_name##_class_intern_init(gpointer klass) { \
61+
type_name##_parent_class = g_type_class_peek_parent(klass); \
62+
type_name##_class_init((TypeName##Class*) klass); \
63+
} \
64+
ATK_AVAILABLE_IN_ALL GType type_name##_get_type (void) { \
65+
static volatile gsize g_define_type_id__volatile = 0; \
66+
if (g_once_init_enter(&g_define_type_id__volatile)) { \
67+
AtkObjectFactory *factory; \
68+
GType derived_type; \
69+
GTypeQuery query; \
70+
GType derived_atk_type; \
71+
GType g_define_type_id; \
72+
derived_type = g_type_parent(TYPE); \
73+
factory = atk_registry_get_factory(atk_get_default_registry(), derived_type); \
74+
derived_atk_type = atk_object_factory_get_accessible_type(factory); \
75+
g_type_query(derived_atk_type, &query); \
76+
g_define_type_id = g_type_register_static_simple( \
77+
derived_atk_type, \
78+
g_intern_static_string(#TypeName), \
79+
query.class_size, \
80+
(GClassInitFunc)type_name##_class_intern_init, \
81+
query.instance_size, \
82+
(GInstanceInitFunc)type_name##_init, \
83+
(GTypeFlags)flags \
84+
); \
85+
{
86+
to fb:
87+
#macro _ATK_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE, flags)
88+
extern "C"
89+
declare sub type_name##_init(byval self as TypeName ptr)
90+
declare sub type_name##_class_init(byval klass as TypeName##Class ptr)
91+
92+
dim shared as gpointer type_name##_parent_class = NULL
93+
94+
private sub type_name##_class_intern_init(byval klass as gpointer)
95+
type_name##_parent_class = g_type_class_peek_parent(klass)
96+
type_name##_class_init(cptr(TypeName##Class ptr, klass))
97+
end sub
98+
99+
function type_name##_get_type() as GType
100+
static as gsize g_define_type_id__volatile = 0
101+
102+
if g_once_init_enter(@g_define_type_id__volatile) then
103+
var derived_type = g_type_parent(TYPE)
104+
var factory = atk_registry_get_factory(atk_get_default_registry(), derived_type)
105+
var derived_atk_type = atk_object_factory_get_accessible_type(factory)
106+
107+
dim as GTypeQuery query
108+
g_type_query(derived_atk_type, @query)
109+
110+
var g_define_type_id = g_type_register_static_simple( _
111+
derived_atk_type, _
112+
g_intern_static_string(#TypeName), _
113+
query.class_size, _
114+
cast(GClassInitFunc, @type_name##_class_intern_init), _
115+
query.instance_size, _
116+
cast(GInstanceInitFunc, @type_name##_init), _
117+
cast(GTypeFlags, flags) _
118+
)
119+
scope
120+
#endmacro
121+
122+
convert c:
123+
#define _ATK_DEFINE_TYPE_EXTENDED_END() \
124+
} \
125+
g_once_init_leave(&g_define_type_id__volatile, g_define_type_id); \
126+
} \
127+
return g_define_type_id__volatile; \
128+
}
129+
to fb:
130+
#macro _ATK_DEFINE_TYPE_EXTENDED_END()
131+
end scope
132+
g_once_init_leave(@g_define_type_id__volatile, g_define_type_id)
133+
end if
134+
return g_define_type_id__volatile
135+
end function
136+
end extern
137+
#endmacro

inc/atk/atk.bi

Lines changed: 59 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -461,14 +461,66 @@ declare function atk_get_focus_object() as AtkObject ptr
461461
declare function atk_get_toolkit_name() as const zstring ptr
462462
declare function atk_get_toolkit_version() as const zstring ptr
463463
declare function atk_get_version() as const zstring ptr
464+
#define ATK_DEFINE_TYPE(TN, t_n, T_P) ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, 0, )
465+
#macro ATK_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_)
466+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, 0)
467+
scope
468+
_C_
469+
end scope
470+
_ATK_DEFINE_TYPE_EXTENDED_END()
471+
#endmacro
472+
#define ATK_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, )
473+
#macro ATK_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_)
474+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT)
475+
scope
476+
_C_
477+
end scope
478+
_ATK_DEFINE_TYPE_EXTENDED_END()
479+
#endmacro
480+
#macro ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_)
481+
_ATK_DEFINE_TYPE_EXTENDED_BEGIN(TN, t_n, T_P, _f_)
482+
scope
483+
_C_
484+
end scope
485+
_ATK_DEFINE_TYPE_EXTENDED_END()
486+
#endmacro
487+
#macro _ATK_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE, flags)
488+
extern "C"
489+
declare sub type_name##_init(byval self as TypeName ptr)
490+
declare sub type_name##_class_init(byval klass as TypeName##Class ptr)
491+
dim shared as gpointer type_name##_parent_class = NULL
492+
private sub type_name##_class_intern_init(byval klass as gpointer)
493+
type_name##_parent_class = g_type_class_peek_parent(klass)
494+
type_name##_class_init(cptr(TypeName##Class ptr, klass))
495+
end sub
496+
function type_name##_get_type() as GType
497+
static as gsize g_define_type_id__volatile = 0
498+
if g_once_init_enter(@g_define_type_id__volatile) then
499+
var derived_type = g_type_parent(TYPE)
500+
var factory = atk_registry_get_factory(atk_get_default_registry(), derived_type)
501+
var derived_atk_type = atk_object_factory_get_accessible_type(factory)
502+
dim as GTypeQuery query
503+
g_type_query(derived_atk_type, @query)
504+
var g_define_type_id = g_type_register_static_simple( _
505+
derived_atk_type, _
506+
g_intern_static_string(#TypeName), _
507+
query.class_size, _
508+
cast(GClassInitFunc, @type_name##_class_intern_init), _
509+
query.instance_size, _
510+
cast(GInstanceInitFunc, @type_name##_init), _
511+
cast(GTypeFlags, flags) _
512+
)
513+
scope
514+
#endmacro
515+
#macro _ATK_DEFINE_TYPE_EXTENDED_END()
516+
end scope
517+
g_once_init_leave(@g_define_type_id__volatile, g_define_type_id)
518+
end if
519+
return g_define_type_id__volatile
520+
end function
521+
end extern
522+
#endmacro
464523

465-
#define ATK_DEFINE_TYPE(TN, t_n, T_P) '' TODO: ATK_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, 0, {})
466-
#define ATK_DEFINE_TYPE_WITH_CODE(TN, t_n, T_P, _C_) '' TODO: _ATK_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, 0) {_C_;} _ATK_DEFINE_TYPE_EXTENDED_END()
467-
#define ATK_DEFINE_ABSTRACT_TYPE(TN, t_n, T_P) '' TODO: ATK_DEFINE_TYPE_EXTENDED (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT, {})
468-
#define ATK_DEFINE_ABSTRACT_TYPE_WITH_CODE(TN, t_n, T_P, _C_) '' TODO: _ATK_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, G_TYPE_FLAG_ABSTRACT) {_C_;} _ATK_DEFINE_TYPE_EXTENDED_END()
469-
#define ATK_DEFINE_TYPE_EXTENDED(TN, t_n, T_P, _f_, _C_) '' TODO: _ATK_DEFINE_TYPE_EXTENDED_BEGIN (TN, t_n, T_P, _f_) {_C_;} _ATK_DEFINE_TYPE_EXTENDED_END()
470-
#define _ATK_DEFINE_TYPE_EXTENDED_BEGIN(TypeName, type_name, TYPE, flags) '' TODO: static void type_name##_init (TypeName *self);static void type_name##_class_init (TypeName##Class *klass);static gpointer type_name##_parent_class = NULL;static void type_name##_class_intern_init (gpointer klass){ type_name##_parent_class = g_type_class_peek_parent (klass); type_name##_class_init ((TypeName##Class*) klass);}ATK_AVAILABLE_IN_ALL GType type_name##_get_type (void){ static volatile gsize g_define_type_id__volatile = 0; if (g_once_init_enter (&g_define_type_id__volatile)) { AtkObjectFactory *factory; GType derived_type; GTypeQuery query; GType derived_atk_type; GType g_define_type_id; derived_type = g_type_parent (TYPE); factory = atk_registry_get_factory (atk_get_default_registry (), derived_type); derived_atk_type = atk_object_factory_get_accessible_type (factory); g_type_query (derived_atk_type, &query); g_define_type_id = g_type_register_static_simple (derived_atk_type, g_intern_static_string (#TypeName), query.class_size, (GClassInitFunc) type_name##_class_intern_init, query.instance_size, (GInstanceInitFunc) type_name##_init, (GTypeFlags) flags); {
471-
#define _ATK_DEFINE_TYPE_EXTENDED_END() '' TODO: } g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); } return g_define_type_id__volatile;}
472524
#define ATK_TYPE_COMPONENT atk_component_get_type()
473525
#define ATK_IS_COMPONENT(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), ATK_TYPE_COMPONENT)
474526
#define ATK_COMPONENT(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), ATK_TYPE_COMPONENT, AtkComponent)

0 commit comments

Comments
 (0)