[nautilus-actions] Review NAIFactoryObject interface
- From: Pierre Wieser <pwieser src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus-actions] Review NAIFactoryObject interface
- Date: Tue, 3 Jan 2012 22:35:05 +0000 (UTC)
commit 4e9887ac5067552950c4c97a76501d7a6aba9ba5
Author: Pierre Wieser <pwieser trychlos org>
Date: Tue Jan 3 23:09:27 2012 +0100
Review NAIFactoryObject interface
ChangeLog | 3 +
src/core/na-factory-object.c | 138 +++++++++++++++++------------------------
src/core/na-ifactory-object.c | 55 +++++++---------
3 files changed, 83 insertions(+), 113 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 4f3257c..1078313 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2012-01-03 Pierre Wieser <pwieser trychlos org>
+ * src/core/na-factory-object.c:
+ * src/core/na-ifactory-object.c: Review NAIFactoryObject interface.
+
* src/core/na-exporter.c:
* src/core/na-iexporter.c: Review NAIExporter interface.
diff --git a/src/core/na-factory-object.c b/src/core/na-factory-object.c
index ad03d1a..c0f53fb 100644
--- a/src/core/na-factory-object.c
+++ b/src/core/na-factory-object.c
@@ -123,17 +123,14 @@ na_factory_object_define_properties( GObjectClass *class, const NADataGroup *gro
{
static const gchar *thisfn = "na_factory_object_define_properties";
- if( ifactory_object_initialized && !ifactory_object_finalized ){
+ g_return_if_fail( G_IS_OBJECT_CLASS( class ));
- g_debug( "%s: class=%p (%s)",
- thisfn, ( void * ) class, G_OBJECT_CLASS_NAME( class ));
+ g_debug( "%s: class=%p (%s)",
+ thisfn, ( void * ) class, G_OBJECT_CLASS_NAME( class ));
- g_return_if_fail( G_IS_OBJECT_CLASS( class ));
-
- /* define class properties
- */
- iter_on_data_defs( groups, DATA_DEF_ITER_SET_PROPERTIES, ( NADataDefIterFunc ) define_class_properties_iter, class );
- }
+ /* define class properties
+ */
+ iter_on_data_defs( groups, DATA_DEF_ITER_SET_PROPERTIES, ( NADataDefIterFunc ) define_class_properties_iter, class );
}
static gboolean
@@ -175,23 +172,20 @@ na_factory_object_get_data_def( const NAIFactoryObject *object, const gchar *nam
def = NULL;
- if( ifactory_object_initialized && !ifactory_object_finalized ){
+ NADataGroup *groups = v_get_groups( object );
+ while( groups->group ){
- NADataGroup *groups = v_get_groups( object );
- while( groups->group ){
-
- NADataDef *def = groups->def;
- if( def ){
- while( def->name ){
+ NADataDef *def = groups->def;
+ if( def ){
+ while( def->name ){
- if( !strcmp( def->name, name )){
- return( def );
- }
- def++;
+ if( !strcmp( def->name, name )){
+ return( def );
}
+ def++;
}
- groups++;
}
+ groups++;
}
return( def );
@@ -210,12 +204,7 @@ na_factory_object_get_data_groups( const NAIFactoryObject *object )
g_return_val_if_fail( NA_IS_IFACTORY_OBJECT( object ), NULL );
- groups = NULL;
-
- if( ifactory_object_initialized && !ifactory_object_finalized ){
-
- groups = v_get_groups( object );
- }
+ groups = v_get_groups( object );
return( groups );
}
@@ -238,15 +227,12 @@ na_factory_object_iter_on_boxed( const NAIFactoryObject *object, NAFactoryObject
g_return_if_fail( NA_IS_IFACTORY_OBJECT( object ));
- if( ifactory_object_initialized && !ifactory_object_finalized ){
-
- list = g_object_get_data( G_OBJECT( object ), NA_IFACTORY_OBJECT_PROP_DATA );
- /*g_debug( "list=%p (count=%u)", ( void * ) list, g_list_length( list ));*/
- stop = FALSE;
+ list = g_object_get_data( G_OBJECT( object ), NA_IFACTORY_OBJECT_PROP_DATA );
+ /*g_debug( "list=%p (count=%u)", ( void * ) list, g_list_length( list ));*/
+ stop = FALSE;
- for( ibox = list ; ibox && !stop ; ibox = ibox->next ){
- stop = ( *pfn )( object, NA_DATA_BOXED( ibox->data ), user_data );
- }
+ for( ibox = list ; ibox && !stop ; ibox = ibox->next ){
+ stop = ( *pfn )( object, NA_DATA_BOXED( ibox->data ), user_data );
}
}
@@ -269,14 +255,11 @@ na_factory_object_get_default( NAIFactoryObject *object, const gchar *name )
value = NULL;
- if( ifactory_object_initialized && !ifactory_object_finalized ){
-
- g_debug( "%s: object=%p (%s)", thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+ g_debug( "%s: object=%p (%s)", thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
- def = na_factory_object_get_data_def( object, name );
- if( def ){
- value = g_strdup( def->default_value );
- }
+ def = na_factory_object_get_data_def( object, name );
+ if( def ){
+ value = g_strdup( def->default_value );
}
return( value );
@@ -297,22 +280,19 @@ na_factory_object_set_defaults( NAIFactoryObject *object )
g_return_if_fail( NA_IS_IFACTORY_OBJECT( object ));
- if( ifactory_object_initialized && !ifactory_object_finalized ){
-
- g_debug( "%s: object=%p (%s)", thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
+ g_debug( "%s: object=%p (%s)", thisfn, ( void * ) object, G_OBJECT_TYPE_NAME( object ));
- groups = v_get_groups( object );
- if( !groups ){
- g_warning( "%s: no NADataGroup found for %s", thisfn, G_OBJECT_TYPE_NAME( object ));
+ groups = v_get_groups( object );
+ if( !groups ){
+ g_warning( "%s: no NADataGroup found for %s", thisfn, G_OBJECT_TYPE_NAME( object ));
- } else {
- iter_data = g_new0( NafoDefaultIter, 1 );
- iter_data->object = object;
+ } else {
+ iter_data = g_new0( NafoDefaultIter, 1 );
+ iter_data->object = object;
- iter_on_data_defs( groups, DATA_DEF_ITER_SET_DEFAULTS, ( NADataDefIterFunc ) set_defaults_iter, iter_data );
+ iter_on_data_defs( groups, DATA_DEF_ITER_SET_DEFAULTS, ( NADataDefIterFunc ) set_defaults_iter, iter_data );
- g_free( iter_data );
- }
+ g_free( iter_data );
}
}
@@ -352,20 +332,17 @@ na_factory_object_move_boxed( NAIFactoryObject *target, const NAIFactoryObject *
g_return_if_fail( NA_IS_IFACTORY_OBJECT( target ));
g_return_if_fail( NA_IS_IFACTORY_OBJECT( source ));
- if( ifactory_object_initialized && !ifactory_object_finalized ){
+ GList *src_list = g_object_get_data( G_OBJECT( source ), NA_IFACTORY_OBJECT_PROP_DATA );
- GList *src_list = g_object_get_data( G_OBJECT( source ), NA_IFACTORY_OBJECT_PROP_DATA );
+ if( g_list_find( src_list, boxed )){
+ src_list = g_list_remove( src_list, boxed );
+ g_object_set_data( G_OBJECT( source ), NA_IFACTORY_OBJECT_PROP_DATA, src_list );
- if( g_list_find( src_list, boxed )){
- src_list = g_list_remove( src_list, boxed );
- g_object_set_data( G_OBJECT( source ), NA_IFACTORY_OBJECT_PROP_DATA, src_list );
+ attach_boxed_to_object( target, boxed );
- attach_boxed_to_object( target, boxed );
-
- const NADataDef *src_def = na_data_boxed_get_data_def( boxed );
- NADataDef *tgt_def = na_factory_object_get_data_def( target, src_def->name );
- na_data_boxed_set_data_def( boxed, tgt_def );
- }
+ const NADataDef *src_def = na_data_boxed_get_data_def( boxed );
+ NADataDef *tgt_def = na_factory_object_get_data_def( target, src_def->name );
+ na_data_boxed_set_data_def( boxed, tgt_def );
}
}
@@ -597,29 +574,26 @@ na_factory_object_read_item( NAIFactoryObject *object, const NAIFactoryProvider
g_return_if_fail( NA_IS_IFACTORY_OBJECT( object ));
g_return_if_fail( NA_IS_IFACTORY_PROVIDER( reader ));
- if( ifactory_object_initialized && !ifactory_object_finalized ){
+ NADataGroup *groups = v_get_groups( object );
- NADataGroup *groups = v_get_groups( object );
-
- if( groups ){
- v_read_start( object, reader, reader_data, messages );
+ if( groups ){
+ v_read_start( object, reader, reader_data, messages );
- NafoReadIter *iter = g_new0( NafoReadIter, 1 );
- iter->object = object;
- iter->reader = ( NAIFactoryProvider * ) reader;
- iter->reader_data = reader_data;
- iter->messages = messages;
+ NafoReadIter *iter = g_new0( NafoReadIter, 1 );
+ iter->object = object;
+ iter->reader = ( NAIFactoryProvider * ) reader;
+ iter->reader_data = reader_data;
+ iter->messages = messages;
- iter_on_data_defs( groups, DATA_DEF_ITER_READ_ITEM, ( NADataDefIterFunc ) read_data_iter, iter );
+ iter_on_data_defs( groups, DATA_DEF_ITER_READ_ITEM, ( NADataDefIterFunc ) read_data_iter, iter );
- g_free( iter );
+ g_free( iter );
- v_read_done( object, reader, reader_data, messages );
+ v_read_done( object, reader, reader_data, messages );
- } else {
- g_warning( "%s: class %s doesn't return any NADataGroup structure",
- thisfn, G_OBJECT_TYPE_NAME( object ));
- }
+ } else {
+ g_warning( "%s: class %s doesn't return any NADataGroup structure",
+ thisfn, G_OBJECT_TYPE_NAME( object ));
}
}
diff --git a/src/core/na-ifactory-object.c b/src/core/na-ifactory-object.c
index a1ad864..214501c 100644
--- a/src/core/na-ifactory-object.c
+++ b/src/core/na-ifactory-object.c
@@ -44,12 +44,11 @@ struct _NAIFactoryObjectInterfacePrivate {
void *empty; /* so that gcc -pedantic is happy */
};
-gboolean ifactory_object_initialized = FALSE;
-gboolean ifactory_object_finalized = FALSE;
+static guint st_initializations = 0; /* interface initialization count */
static GType register_type( void );
-static void interface_base_init( NAIFactoryObjectInterface *klass );
-static void interface_base_finalize( NAIFactoryObjectInterface *klass );
+static void interface_init( NAIFactoryObjectInterface *klass );
+static void interface_finalize( NAIFactoryObjectInterface *klass );
static guint ifactory_object_get_version( const NAIFactoryObject *instance );
@@ -76,8 +75,8 @@ register_type( void )
static const GTypeInfo info = {
sizeof( NAIFactoryObjectInterface ),
- ( GBaseInitFunc ) interface_base_init,
- ( GBaseFinalizeFunc ) interface_base_finalize,
+ ( GBaseInitFunc ) interface_init,
+ ( GBaseFinalizeFunc ) interface_finalize,
NULL,
NULL,
NULL,
@@ -96,11 +95,11 @@ register_type( void )
}
static void
-interface_base_init( NAIFactoryObjectInterface *klass )
+interface_init( NAIFactoryObjectInterface *klass )
{
- static const gchar *thisfn = "na_ifactory_object_interface_base_init";
+ static const gchar *thisfn = "na_ifactory_object_interface_init";
- if( !ifactory_object_initialized ){
+ if( !st_initializations ){
g_debug( "%s: klass=%p (%s)", thisfn, ( void * ) klass, G_OBJECT_CLASS_NAME( klass ));
@@ -115,21 +114,21 @@ interface_base_init( NAIFactoryObjectInterface *klass )
klass->read_done = NULL;
klass->write_start = NULL;
klass->write_done = NULL;
-
- ifactory_object_initialized = TRUE;
}
+
+ st_initializations += 1;
}
static void
-interface_base_finalize( NAIFactoryObjectInterface *klass )
+interface_finalize( NAIFactoryObjectInterface *klass )
{
- static const gchar *thisfn = "na_ifactory_object_interface_base_finalize";
+ static const gchar *thisfn = "na_ifactory_object_interface_finalize";
- if( ifactory_object_initialized && !ifactory_object_finalized ){
+ st_initializations -= 1;
- g_debug( "%s: klass=%p", thisfn, ( void * ) klass );
+ if( !st_initializations ){
- ifactory_object_finalized = TRUE;
+ g_debug( "%s: klass=%p", thisfn, ( void * ) klass );
g_free( klass->private );
}
@@ -161,18 +160,15 @@ na_ifactory_object_get_data_boxed( const NAIFactoryObject *object, const gchar *
g_return_val_if_fail( NA_IS_IFACTORY_OBJECT( object ), NULL );
- if( ifactory_object_initialized && !ifactory_object_finalized ){
+ list = g_object_get_data( G_OBJECT( object ), NA_IFACTORY_OBJECT_PROP_DATA );
+ /*g_debug( "list=%p (count=%u)", ( void * ) list, g_list_length( list ));*/
- list = g_object_get_data( G_OBJECT( object ), NA_IFACTORY_OBJECT_PROP_DATA );
- /*g_debug( "list=%p (count=%u)", ( void * ) list, g_list_length( list ));*/
+ for( ip = list ; ip ; ip = ip->next ){
+ NADataBoxed *boxed = NA_DATA_BOXED( ip->data );
+ const NADataDef *def = na_data_boxed_get_data_def( boxed );
- for( ip = list ; ip ; ip = ip->next ){
- NADataBoxed *boxed = NA_DATA_BOXED( ip->data );
- const NADataDef *def = na_data_boxed_get_data_def( boxed );
-
- if( !strcmp( def->name, name )){
- return( boxed );
- }
+ if( !strcmp( def->name, name )){
+ return( boxed );
}
}
@@ -199,11 +195,8 @@ na_ifactory_object_get_data_groups( const NAIFactoryObject *object )
groups = NULL;
- if( ifactory_object_initialized && !ifactory_object_finalized ){
-
- if( NA_IFACTORY_OBJECT_GET_INTERFACE( object )->get_groups ){
- groups = NA_IFACTORY_OBJECT_GET_INTERFACE( object )->get_groups( object );
- }
+ if( NA_IFACTORY_OBJECT_GET_INTERFACE( object )->get_groups ){
+ groups = NA_IFACTORY_OBJECT_GET_INTERFACE( object )->get_groups( object );
}
return( groups );
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]