indent class lists

"vips list classes" now indents the class lists by structure
This commit is contained in:
John Cupitt 2011-07-16 11:26:24 +01:00
parent 03226f6f67
commit 580536e412
9 changed files with 44 additions and 15 deletions

View File

@ -111,6 +111,8 @@ vips_arithmetic_class_init( VipsArithmeticClass *class )
gobject_class->set_property = vips_object_set_property;
gobject_class->get_property = vips_object_get_property;
vobject_class->nickname = "arithmetic";
vobject_class->description = _( "VIPS arithmetic operations" );
vobject_class->build = vips_arithmetic_build;
pspec = g_param_spec_object( "out", "Output",

View File

@ -359,6 +359,8 @@ vips_binary_class_init( VipsBinaryClass *class )
gobject_class->set_property = vips_object_set_property;
gobject_class->get_property = vips_object_get_property;
vobject_class->nickname = "binary";
vobject_class->description = _( "VIPS binary operations" );
vobject_class->build = vips_binary_build;
/* Create properties.

View File

@ -502,6 +502,8 @@ vips_wrap7_class_init( VipsWrap7Class *class )
gobject_class->dispose = vips_wrap7_dispose;
gobject_class->finalize = vips_wrap7_finalize;
vobject_class->nickname = "wrap7";
vobject_class->description = _( "vips7 operations as vips8 classes" );
vobject_class->build = vips_wrap7_build;
}

View File

@ -291,15 +291,18 @@ vips_format_print_class( VipsObjectClass *object_class, VipsBuf *buf )
VIPS_OBJECT_CLASS( vips_format_parent_class )->
print_class( object_class, buf );
vips_buf_appends( buf, ", " );
vips_buf_appends( buf, ", (" );
for( p = class->suffs; *p; p++ ) {
vips_buf_appendf( buf, "%s", *p );
if( p[1] )
vips_buf_appends( buf, ", " );
if( class->suffs ) {
vips_buf_appends( buf, "(" );
for( p = class->suffs; *p; p++ ) {
vips_buf_appendf( buf, "%s", *p );
if( p[1] )
vips_buf_appends( buf, ", " );
}
vips_buf_appends( buf, ") " );
}
vips_buf_appends( buf, ") " );
if( class->is_a )
vips_buf_appends( buf, "is_a " );
if( class->header )
@ -317,10 +320,9 @@ vips_format_class_init( VipsFormatClass *class )
{
VipsObjectClass *object_class = (VipsObjectClass *) class;
object_class->nickname = "format";
object_class->description = _( "VIPS file formats" );
object_class->print_class = vips_format_print_class;
object_class->print_class = vips_format_print_class;
}
static void

View File

@ -346,6 +346,7 @@ typedef void *(*VipsClassMap)( VipsObjectClass *, void * );
void *vips_type_map( GType base, VipsTypeMap2 fn, void *a, void *b );
void *vips_type_map_all( GType base, VipsTypeMap fn, void *a );
void *vips_class_map_all( GType base, VipsClassMap fn, void *a );
int vips_class_depth( VipsObjectClass *klass );
VipsObjectClass *vips_class_find( const char *basename, const char *nickname );
GType vips_type_find( const char *basename, const char *nickname );

View File

@ -1585,6 +1585,22 @@ vips_class_map_all( GType type, VipsClassMap fn, void *a )
return( result );
}
/* How deeply nested is a class ... used to indent class lists.
*/
int
vips_class_depth( VipsObjectClass *class )
{
int depth;
GType type;
type = G_TYPE_FROM_CLASS( class );
depth = 0;
while( type != VIPS_TYPE_OBJECT && (type = g_type_parent( type )) )
depth += 1;
return( depth );
}
static void *
test_name( VipsObjectClass *class, const char *nickname )
{

View File

@ -178,6 +178,8 @@ vips_operation_class_init( VipsOperationClass *class )
{
VipsObjectClass *vobject_class = VIPS_OBJECT_CLASS( class );
vobject_class->nickname = "operation";
vobject_class->description = _( "VIPS operations" );
vobject_class->print = vips_operation_print;
vobject_class->build = vips_operation_build;
}

View File

@ -181,7 +181,7 @@ vips_interpolate_class_init( VipsInterpolateClass *class )
#endif /*DEBUG*/
vobject_class->nickname = "interpolate";
vobject_class->description = _( "VIPS interpolation class" );
vobject_class->description = _( "VIPS interpolators" );
class->interpolate = NULL;
class->get_window_size = vips_interpolate_real_get_window_size;

View File

@ -168,10 +168,12 @@ list_function( im_function *func )
static void *
list_class( VipsObjectClass *class )
{
/* Ignore abstract classes.
*/
if( !G_TYPE_IS_ABSTRACT( G_OBJECT_CLASS_TYPE( class ) ) )
vips_object_print_class( class );
int depth = vips_class_depth( class );
int i;
for( i = 0; i < depth * 2; i++ )
printf( " " );
vips_object_print_class( class );
return( NULL );
}