| object.h | | object.h | |
| | | | |
| skipping to change at line 331 | | skipping to change at line 331 | |
| GSList *p; \ | | GSList *p; \ | |
| \ | | \ | |
| for( p = object_class->argument_table_traverse; p; p = p->next ) { \ | | for( p = object_class->argument_table_traverse; p; p = p->next ) { \ | |
| VipsArgumentClass *ARG_CLASS = \ | | VipsArgumentClass *ARG_CLASS = \ | |
| (VipsArgumentClass *) p->data; \ | | (VipsArgumentClass *) p->data; \ | |
| VipsArgument *argument = (VipsArgument *) argument_class; \ | | VipsArgument *argument = (VipsArgument *) argument_class; \ | |
| GParamSpec *PSPEC = argument->pspec; \ | | GParamSpec *PSPEC = argument->pspec; \ | |
| VipsArgumentInstance *ARG_INSTANCE = \ | | VipsArgumentInstance *ARG_INSTANCE = \ | |
| vips__argument_get_instance( argument_class, \ | | vips__argument_get_instance( argument_class, \ | |
| VIPS_OBJECT( OBJECT ) ); \ | | VIPS_OBJECT( OBJECT ) ); \ | |
|
| \ | | | |
| /* We have many props on the arg table ... filter out the \ | | | |
| * ones for this class. \ | | | |
| */ \ | | | |
| if( g_object_class_find_property( \ | | | |
| G_OBJECT_CLASS( object_class ), \ | | | |
| g_param_spec_get_name( PSPEC ) ) == PSPEC ) { | | | |
| | | | |
|
| #define VIPS_ARGUMENT_FOR_ALL_END } } } | | #define VIPS_ARGUMENT_FOR_ALL_END } } | |
| | | | |
| /* And some macros to collect args from a va list. | | /* And some macros to collect args from a va list. | |
| */ | | */ | |
| #define VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP ) \ | | #define VIPS_ARGUMENT_COLLECT_SET( PSPEC, ARG_CLASS, AP ) \ | |
| if( (ARG_CLASS->flags & VIPS_ARGUMENT_INPUT) ) { \ | | if( (ARG_CLASS->flags & VIPS_ARGUMENT_INPUT) ) { \ | |
| GValue value = { 0, }; \ | | GValue value = { 0, }; \ | |
| gchar *error = NULL; \ | | gchar *error = NULL; \ | |
| \ | | \ | |
| /* Input args are given inline, eg. ("factor", 12.0) \ | | /* Input args are given inline, eg. ("factor", 12.0) \ | |
| * and must be collected. \ | | * and must be collected. \ | |
| | | | |
| skipping to change at line 497 | | skipping to change at line 490 | |
| | | | |
| /* Class nickname, eg. "VipsInterpolateBicubic" has "bicubic" as a | | /* Class nickname, eg. "VipsInterpolateBicubic" has "bicubic" as a | |
| * nickname. Not internationalised. | | * nickname. Not internationalised. | |
| */ | | */ | |
| const char *nickname; | | const char *nickname; | |
| | | | |
| /* Class description. Used for help messages, so internationalised. | | /* Class description. Used for help messages, so internationalised. | |
| */ | | */ | |
| const char *description; | | const char *description; | |
| | | | |
|
| /* Table of arguments for this class and any derived classes. Order | | /* Hash from pspec to VipsArgumentClass. | |
| * is important, so keep a traverse list too. We can't rely on the | | * | |
| * ordering given by g_object_class_list_properties() since it comes | | * This records the VipsArgumentClass for every pspec used in | |
| * from a hash :-( | | * VipsObject and any subclass (ie. everywhere), so it's huge. Don't | |
| | | * loop over this hash! Fine for lookups though. | |
| */ | | */ | |
| VipsArgumentTable *argument_table; | | VipsArgumentTable *argument_table; | |
|
| | | | |
| | | /* A sorted (by priority) list of the VipsArgumentClass for this cla | |
| | | ss | |
| | | * and any superclasses. This is small and specific to this class. | |
| | | * | |
| | | * Use the stored GType to work out when to restart the list for a | |
| | | * subclass. | |
| | | */ | |
| GSList *argument_table_traverse; | | GSList *argument_table_traverse; | |
|
| | | GType argument_table_traverse_gtype; | |
| }; | | }; | |
| | | | |
| gboolean vips_value_is_null( GParamSpec *psoec, const GValue *value ); | | gboolean vips_value_is_null( GParamSpec *psoec, const GValue *value ); | |
| void vips_object_set_property( GObject *gobject, | | void vips_object_set_property( GObject *gobject, | |
| guint property_id, const GValue *value, GParamSpec *pspec ); | | guint property_id, const GValue *value, GParamSpec *pspec ); | |
| void vips_object_get_property( GObject *gobject, | | void vips_object_get_property( GObject *gobject, | |
| guint property_id, GValue *value, GParamSpec *pspec ); | | guint property_id, GValue *value, GParamSpec *pspec ); | |
| | | | |
| void vips_object_preclose( VipsObject *object ); | | void vips_object_preclose( VipsObject *object ); | |
| int vips_object_build( VipsObject *object ); | | int vips_object_build( VipsObject *object ); | |
| | | | |
End of changes. 5 change blocks. |
| 12 lines changed or deleted | | 15 lines changed or added | |
|
| operation.h | | operation.h | |
| | | | |
| skipping to change at line 69 | | skipping to change at line 69 | |
| /* When we added this operation to cache .. used to find LRU for | | /* When we added this operation to cache .. used to find LRU for | |
| * flush. | | * flush. | |
| */ | | */ | |
| int time; | | int time; | |
| | | | |
| /* Keep the hash here. | | /* Keep the hash here. | |
| */ | | */ | |
| guint hash; | | guint hash; | |
| gboolean found_hash; | | gboolean found_hash; | |
| | | | |
|
| | | /* Set this before the end of _build() to stop this operation from | |
| | | * being cached. Some things, like sequential read from a TIFF file, | |
| | | * can't be reused. | |
| | | */ | |
| | | gboolean nocache; | |
| | | | |
| } VipsOperation; | | } VipsOperation; | |
| | | | |
| typedef struct _VipsOperationClass { | | typedef struct _VipsOperationClass { | |
| VipsObjectClass parent_class; | | VipsObjectClass parent_class; | |
| | | | |
| /* Print the usage message. | | /* Print the usage message. | |
| */ | | */ | |
| void (*usage)( struct _VipsOperationClass *, VipsBuf * ); | | void (*usage)( struct _VipsOperationClass *, VipsBuf * ); | |
| } VipsOperationClass; | | } VipsOperationClass; | |
| | | | |
| | | | |
| skipping to change at line 92 | | skipping to change at line 98 | |
| | | | |
| int vips_operation_call_valist( VipsOperation *operation, va_list ap ); | | int vips_operation_call_valist( VipsOperation *operation, va_list ap ); | |
| VipsOperation *vips_operation_new( const char *name ); | | VipsOperation *vips_operation_new( const char *name ); | |
| int vips_call( const char *operation_name, ... ); | | int vips_call( const char *operation_name, ... ); | |
| int vips_call_split( const char *operation_name, va_list optional, ... ); | | int vips_call_split( const char *operation_name, va_list optional, ... ); | |
| | | | |
| void vips_call_options( GOptionGroup *group, VipsOperation *operation ); | | void vips_call_options( GOptionGroup *group, VipsOperation *operation ); | |
| int vips_call_argv( VipsOperation *operation, int argc, char **argv ); | | int vips_call_argv( VipsOperation *operation, int argc, char **argv ); | |
| | | | |
| void vips_cache_drop_all( void ); | | void vips_cache_drop_all( void ); | |
|
| | | void vips_operation_set_nocache( VipsOperation *operation, gboolean nocache
); | |
| int vips_cache_operation_buildp( VipsOperation **operation ); | | int vips_cache_operation_buildp( VipsOperation **operation ); | |
| VipsOperation *vips_cache_operation_build( VipsOperation *operation ); | | VipsOperation *vips_cache_operation_build( VipsOperation *operation ); | |
| void vips_cache_set_max( int max ); | | void vips_cache_set_max( int max ); | |
| void vips_cache_set_max_mem( size_t max_mem ); | | void vips_cache_set_max_mem( size_t max_mem ); | |
| int vips_cache_get_max( void ); | | int vips_cache_get_max( void ); | |
| int vips_cache_get_size( void ); | | int vips_cache_get_size( void ); | |
| size_t vips_cache_get_max_mem( void ); | | size_t vips_cache_get_max_mem( void ); | |
| int vips_cache_get_max_files( void ); | | int vips_cache_get_max_files( void ); | |
| void vips_cache_set_max_files( int max_files ); | | void vips_cache_set_max_files( int max_files ); | |
| void vips_cache_set_dump( gboolean dump ); | | void vips_cache_set_dump( gboolean dump ); | |
| | | | |
End of changes. 2 change blocks. |
| 0 lines changed or deleted | | 7 lines changed or added | |
|