"vips list" can show any class

This commit is contained in:
John Cupitt 2011-12-14 14:13:34 +00:00
parent 94fcf5f362
commit bf88439c0a
2 changed files with 8 additions and 39 deletions

9
TODO
View File

@ -1,14 +1,5 @@
- suppression for the strspn() thing? - suppression for the strspn() thing?
leak check output should write a single line for each leaked image, not the
whole header
"header" should maybe not have it's own summary printer? can we put this in
vips somewhere
"vips list VipsInterpolate" should list all classes below VipsInterpolate
- "header fred.png" does not work, since header uses im_open() which uses - "header fred.png" does not work, since header uses im_open() which uses

View File

@ -186,6 +186,11 @@ print_list( int argc, char **argv )
else if( strcmp( argv[0], "classes" ) == 0 ) else if( strcmp( argv[0], "classes" ) == 0 )
vips_type_map_all( g_type_from_name( "VipsObject" ), vips_type_map_all( g_type_from_name( "VipsObject" ),
(VipsTypeMapFn) list_class, NULL ); (VipsTypeMapFn) list_class, NULL );
else if( g_type_from_name( argv[0] ) &&
g_type_is_a( g_type_from_name( argv[0] ), VIPS_TYPE_OBJECT ) ) {
vips_type_map_all( g_type_from_name( argv[0] ),
(VipsTypeMapFn) list_class, NULL );
}
else { else {
if( map_name( argv[0], list_function ) ) if( map_name( argv[0], list_function ) )
error_exit( "unknown package \"%s\"", argv[0] ); error_exit( "unknown package \"%s\"", argv[0] );
@ -194,33 +199,6 @@ print_list( int argc, char **argv )
return( 0 ); return( 0 );
} }
/* Is s1 a prefix of s2?
*/
static int
isprefix( const char *s1, const char *s2 )
{
while( *s1 && *s1 == *s2 ) {
s1++;
s2++;
}
return( *s1 == '\0' );
}
/* Is s1 a postfix of s2?
*/
static int
ispostfix( const char *s1, const char *s2 )
{
int l1 = strlen( s1 );
int l2 = strlen( s2 );
if( l2 < l1 )
return( 0 );
return( strcasecmp( s1, s2 + l2 - l1 ) == 0 );
}
/* Print "ln -s" lines for this package. /* Print "ln -s" lines for this package.
*/ */
static void * static void *
@ -455,7 +433,7 @@ find_ioargs( im_function *fn, int *ia, int *oa )
static gboolean static gboolean
drop_postfix( char *str, const char *postfix ) drop_postfix( char *str, const char *postfix )
{ {
if( ispostfix( postfix, str ) ) { if( vips_ispostfix( str, postfix ) ) {
str[strlen( str ) - strlen( postfix )] = '\0'; str[strlen( str ) - strlen( postfix )] = '\0';
return( TRUE ); return( TRUE );
@ -485,7 +463,7 @@ c2cpp_name( const char *in, char *out )
/* Copy, chopping off "im_" prefix. /* Copy, chopping off "im_" prefix.
*/ */
if( isprefix( "im_", in ) ) if( vips_isprefix( "im_", in ) )
strcpy( out, in + 3 ); strcpy( out, in + 3 );
else else
strcpy( out, in ); strcpy( out, in );
@ -498,7 +476,7 @@ c2cpp_name( const char *in, char *out )
found = FALSE; found = FALSE;
for( i = 0; i < IM_NUMBER( dont_drop ); i++ ) for( i = 0; i < IM_NUMBER( dont_drop ); i++ )
if( ispostfix( dont_drop[i], out ) ) { if( vips_ispostfix( out, dont_drop[i] ) ) {
found = TRUE; found = TRUE;
break; break;
} }