gobject-introspection compiles

we now mostly compile cleanly, woo
This commit is contained in:
John Cupitt 2011-06-22 12:17:43 +01:00
parent cc330b3cbf
commit f69168fc04
18 changed files with 137 additions and 57 deletions

View File

@ -55,7 +55,7 @@ vips_introspection_sources="$introspection_sources2"
# add headers that form the public vips8 API .. don't do a find and exclude, # add headers that form the public vips8 API .. don't do a find and exclude,
# we end up excluding almost everything argh # we end up excluding almost everything argh
headers="vips.h object.h image.h error.h format.h region.h interpolate.h header.h operation.h enumtypes.h arithmetic.h" headers="vips.h object.h image.h error.h format.h interpolate.h header.h operation.h enumtypes.h arithmetic.h"
for name in $headers; do for name in $headers; do
vips_introspection_sources="$vips_introspection_sources include/vips/$name" vips_introspection_sources="$vips_introspection_sources include/vips/$name"
done done

View File

@ -147,7 +147,7 @@ measure_patches( IMAGE *im, double *coeff,
} }
/** /**
* im_measure_area: * im_measure_area: (skip)
* @im: image to measure * @im: image to measure
* @left: area of image containing chart * @left: area of image containing chart
* @top: area of image containing chart * @top: area of image containing chart

View File

@ -95,7 +95,7 @@ recomb_buf( void *bin, void *bout, int width, IMAGE *in, DOUBLEMASK *mat )
} }
/** /**
* im_recomb: * im_recomb: (skip)
* @in: input image * @in: input image
* @out: output image * @out: output image
* @recomb: recombination matrix * @recomb: recombination matrix

View File

@ -183,7 +183,7 @@ stats_scan( void *in, int n, void *seq, void *a, void *b )
} }
/** /**
* im_stats: * im_stats: (skip)
* @in: image to scan * @in: image to scan
* *
* Find many image statistics in a single pass through the data. Returns a * Find many image statistics in a single pass through the data. Returns a

View File

@ -245,7 +245,7 @@ format_compare( VipsFormatClass *a, VipsFormatClass *b )
} }
/** /**
* vips_format_map: * vips_format_map: (skip)
* @fn: function to apply to each #VipsFormatClass * @fn: function to apply to each #VipsFormatClass
* @a: user data * @a: user data
* @b: user data * @b: user data

View File

@ -382,7 +382,7 @@ gboolean vips_image_isMSBfirst( VipsImage *image );
gboolean vips_image_isfile( VipsImage *image ); gboolean vips_image_isfile( VipsImage *image );
gboolean vips_image_ispartial( VipsImage *image ); gboolean vips_image_ispartial( VipsImage *image );
int vips_image_write_line( VipsImage *image, int ypos, PEL *linebuffer ); int vips_image_write_line( VipsImage *image, int ypos, void *linebuffer );
int vips_image_wio_input( VipsImage *image ); int vips_image_wio_input( VipsImage *image );
int vips_image_wio_output( VipsImage *image ); int vips_image_wio_output( VipsImage *image );

View File

@ -61,7 +61,7 @@ typedef struct _VipsInterpolate {
* interpolate the value at position (x, y) in "in". * interpolate the value at position (x, y) in "in".
*/ */
typedef void (*VipsInterpolateMethod)( VipsInterpolate *interpolate, typedef void (*VipsInterpolateMethod)( VipsInterpolate *interpolate,
PEL *out, VipsRegion *in, double x, double y ); void *out, VipsRegion *in, double x, double y );
typedef struct _VipsInterpolateClass { typedef struct _VipsInterpolateClass {
VipsObjectClass parent_class; VipsObjectClass parent_class;
@ -88,7 +88,7 @@ typedef struct _VipsInterpolateClass {
GType vips_interpolate_get_type( void ); GType vips_interpolate_get_type( void );
void vips_interpolate( VipsInterpolate *interpolate, void vips_interpolate( VipsInterpolate *interpolate,
PEL *out, VipsRegion *in, double x, double y ); void *out, VipsRegion *in, double x, double y );
VipsInterpolateMethod vips_interpolate_get_method( VipsInterpolate *interpolate ); VipsInterpolateMethod vips_interpolate_get_method( VipsInterpolate *interpolate );
int vips_interpolate_get_window_size( VipsInterpolate *interpolate ); int vips_interpolate_get_window_size( VipsInterpolate *interpolate );
int vips_interpolate_get_window_offset( VipsInterpolate *interpolate ); int vips_interpolate_get_window_offset( VipsInterpolate *interpolate );

View File

@ -152,11 +152,6 @@ typedef struct _VipsArgumentInstance {
*/ */
typedef GHashTable VipsArgumentTable; typedef GHashTable VipsArgumentTable;
VipsArgumentInstance *vips__argument_get_instance(
VipsArgumentClass *argument_class,
VipsObject *object);
VipsArgument *vips__argument_table_lookup( VipsArgumentTable *table,
GParamSpec *pspec);
typedef void *(*VipsArgumentMapFn)( VipsObject *object, GParamSpec *pspec, typedef void *(*VipsArgumentMapFn)( VipsObject *object, GParamSpec *pspec,
VipsArgumentClass *argument_class, VipsArgumentClass *argument_class,
VipsArgumentInstance *argument_instance, void *a, void *b ); VipsArgumentInstance *argument_instance, void *a, void *b );

View File

@ -90,7 +90,7 @@ typedef struct {
* update operation and we'd need to _remove() and _insert() on every list * update operation and we'd need to _remove() and _insert() on every list
* operation. * operation.
*/ */
typedef struct { typedef struct _VipsBufferCacheList {
GSList *buffers; /* GSList of VipsBuffer* */ GSList *buffers; /* GSList of VipsBuffer* */
GThread *thread; /* Just for sanity checking */ GThread *thread; /* Just for sanity checking */
struct _VipsImage *im; struct _VipsImage *im;
@ -99,7 +99,7 @@ typedef struct {
/* What we track for each pixel buffer. /* What we track for each pixel buffer.
*/ */
typedef struct { typedef struct _VipsBuffer {
int ref_count; /* # of regions referencing us */ int ref_count; /* # of regions referencing us */
struct _VipsImage *im; /* VipsImage we are attached to */ struct _VipsImage *im; /* VipsImage we are attached to */
@ -124,7 +124,7 @@ void vips_buffer_print( VipsBuffer *buffer );
/* Region types. /* Region types.
*/ */
typedef enum region_type { typedef enum _RegionType {
VIPS_REGION_NONE, VIPS_REGION_NONE,
VIPS_REGION_BUFFER, /* a pixel buffer */ VIPS_REGION_BUFFER, /* a pixel buffer */
VIPS_REGION_OTHER_REGION, /* memory on another region */ VIPS_REGION_OTHER_REGION, /* memory on another region */
@ -166,6 +166,12 @@ int vips__image_write_prepare( struct _VipsImage *image );
*/ */
void vips_arithmetic_operation_init( void ); void vips_arithmetic_operation_init( void );
VipsArgumentInstance *vips__argument_get_instance(
VipsArgumentClass *argument_class,
VipsObject *object);
VipsArgument *vips__argument_table_lookup( VipsArgumentTable *table,
GParamSpec *pspec);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /*__cplusplus*/ #endif /*__cplusplus*/

View File

@ -1101,7 +1101,7 @@ vips_check_hist( const char *domain, VipsImage *im )
} }
/** /**
* vips_check_imask: * vips_check_imask: (skip)
* @domain: the originating domain for the error message * @domain: the originating domain for the error message
* @mask: mask to check * @mask: mask to check
* *
@ -1129,7 +1129,7 @@ vips_check_imask( const char *domain, INTMASK *mask )
} }
/** /**
* vips_check_dmask: * vips_check_dmask: (skip)
* @domain: the originating domain for the error message * @domain: the originating domain for the error message
* @mask: mask to check * @mask: mask to check
* *
@ -1157,7 +1157,7 @@ vips_check_dmask( const char *domain, DOUBLEMASK *mask )
} }
/** /**
* vips_check_dmask_1d: * vips_check_dmask_1d: (skip)
* @domain: the originating domain for the error message * @domain: the originating domain for the error message
* @mask: mask to check * @mask: mask to check
* *

View File

@ -415,7 +415,7 @@ vips_image_get_mode( VipsImage *image )
} }
/** /**
* vips_image_get_data: * vips_image_get_data: (skip)
* @image: image to get data for * @image: image to get data for
* *
* Return a pointer to the image's pixel data, if possible. This can involve * Return a pointer to the image's pixel data, if possible. This can involve
@ -877,7 +877,7 @@ vips_image_map_fn( VipsMeta *meta, VipsImageMapFn fn, void *a )
} }
/** /**
* vips_image_map: * vips_image_map: (skip)
* @image: image to map over * @image: image to map over
* @fn: function to call for each header field * @fn: function to call for each header field
* @a: user data for function * @a: user data for function
@ -1231,7 +1231,7 @@ meta_get_value( VipsImage *image,
} }
/** /**
* vips_image_set_area: * vips_image_set_area: (skip)
* @image: image to attach the metadata to * @image: image to attach the metadata to
* @field: metadata name * @field: metadata name
* @free_fn: free function for @data * @free_fn: free function for @data
@ -1256,7 +1256,7 @@ vips_image_set_area( VipsImage *image, const char *field,
} }
/** /**
* vips_image_get_area: * vips_image_get_area: (skip)
* @image: image to get the metadata from * @image: image to get the metadata from
* @field: metadata name * @field: metadata name
* @data: return metadata value * @data: return metadata value
@ -1401,7 +1401,7 @@ vips_ref_string_get_type( void )
} }
/** /**
* vips_blob_get: * vips_blob_get: (skip)
* @value: GValue to get from * @value: GValue to get from
* @length: return the blob length here, optionally * @length: return the blob length here, optionally
* *
@ -1493,7 +1493,7 @@ vips_blob_get_type( void )
} }
/** /**
* vips_blob_set: * vips_blob_set: (skip)
* @value: GValue to set * @value: GValue to set
* @free_fn: free function for @data * @free_fn: free function for @data
* @data: pointer to area of memory * @data: pointer to area of memory
@ -1529,7 +1529,7 @@ vips_blob_set( GValue *value,
} }
/** /**
* vips_image_set_blob: * vips_image_set_blob: (skip)
* @image: image to attach the metadata to * @image: image to attach the metadata to
* @field: metadata name * @field: metadata name
* @free_fn: free function for @data * @free_fn: free function for @data
@ -1557,7 +1557,7 @@ vips_image_set_blob( VipsImage *image, const char *field,
} }
/** /**
* vips_image_get_blob: * vips_image_get_blob: (skip)
* @image: image to get the metadata from * @image: image to get the metadata from
* @field: metadata name * @field: metadata name
* @data: pointer to area of memory * @data: pointer to area of memory

View File

@ -1969,7 +1969,7 @@ vips__image_write_prepare( VipsImage *image )
* Returns: 0 on success, or -1 on error. * Returns: 0 on success, or -1 on error.
*/ */
int int
vips_image_write_line( VipsImage *image, int ypos, PEL *linebuffer ) vips_image_write_line( VipsImage *image, int ypos, void *linebuffer )
{ {
int linesize = VIPS_IMAGE_SIZEOF_LINE( image ); int linesize = VIPS_IMAGE_SIZEOF_LINE( image );

View File

@ -238,7 +238,18 @@ vips_argument_table_destroy( VipsArgumentTable *table )
g_hash_table_destroy( table ); g_hash_table_destroy( table );
} }
/* Loop over the vips_arguments to an object. /**
* vips_argument_map: (skip)
* @object: object whose args should be enumerated
* @fn: call this function for every argument
* @a: client data
* @b: client data
*
* Loop over the vips_arguments to an object. Stop when @fn returns non-%NULL
* and return that value.
*
* Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first
* non-%NULL value from @fn.
*/ */
void * void *
vips_argument_map( VipsObject *object, vips_argument_map( VipsObject *object,
@ -1300,6 +1311,18 @@ vips_object_set_required( VipsObject *object, const char *value )
return( 0 ); return( 0 );
} }
/**
* vips_object_new: (skip)
* @type: object to create
* @set: set arguments with this
* @a: client data
* @b: client data
*
* g_object_new() the object, set any arguments with @set, call
* vips_object_build() and return the complete object.
*
* Returns: the new object
*/
VipsObject * VipsObject *
vips_object_new( GType type, VipsObjectSetArguments set, void *a, void *b ) vips_object_new( GType type, VipsObjectSetArguments set, void *a, void *b )
{ {
@ -1462,7 +1485,12 @@ vips_object_to_string_optional( VipsObject *object,
return( NULL ); return( NULL );
} }
/* The inverse of vips_object_new_from_string(): turn an object into eg. /**
* vips_object_to_string: (skip)
* @object: object to stringify
* @buf: write string here
*
* The inverse of vips_object_new_from_string(): turn an object into eg.
* "VipsInterpolateSnohalo1(blur=.333333)". * "VipsInterpolateSnohalo1(blur=.333333)".
*/ */
void void
@ -1502,6 +1530,18 @@ vips_object_map_sub( VipsObject *key, VipsObject *value,
args->result = args->fn( key, args->a, args->b ); args->result = args->fn( key, args->a, args->b );
} }
/**
* vips_object_map: (skip)
* @fn: function to call for all objects
* @a: client data
* @b: client data
*
* Call a function for all alive objects.
* Stop when @fn returns non-%NULL and return that value.
*
* Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first
* non-%NULL value from @fn.
*/
void * void *
vips_object_map( VipsSListMap2Fn fn, void *a, void *b ) vips_object_map( VipsSListMap2Fn fn, void *a, void *b )
{ {
@ -1525,7 +1565,18 @@ vips_object_map( VipsSListMap2Fn fn, void *a, void *b )
return( args.result ); return( args.result );
} }
/* Map over all a type's children. /**
* vips_type_map: (skip)
* @base: base type
* @fn: call this function for every type
* @a: client data
* @b: client data
*
* Map over a type's children. Stop when @fn returns non-%NULL
* and return that value.
*
* Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first
* non-%NULL value from @fn.
*/ */
void * void *
vips_type_map( GType base, VipsTypeMap2 fn, void *a, void *b ) vips_type_map( GType base, VipsTypeMap2 fn, void *a, void *b )
@ -1544,7 +1595,17 @@ vips_type_map( GType base, VipsTypeMap2 fn, void *a, void *b )
return( result ); return( result );
} }
/* Loop over all the subtypes of a base type. /**
* vips_type_map_all: (skip)
* @base: base type
* @fn: call this function for every type
* @a: client data
*
* Map over a type's children, direct and indirect. Stop when @fn returns
* non-%NULL and return that value.
*
* Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first
* non-%NULL value from @fn.
*/ */
void * void *
vips_type_map_all( GType base, VipsTypeMap fn, void *a ) vips_type_map_all( GType base, VipsTypeMap fn, void *a )
@ -1558,18 +1619,28 @@ vips_type_map_all( GType base, VipsTypeMap fn, void *a )
return( result ); return( result );
} }
/* Loop over all the subclasses of a base type. /**
* vips_class_map_all: (skip)
* @base: base type
* @fn: call this function for every class
* @a: client data
*
* Map over a class's subclasses, direct and indirect. Stop when @fn returns
* non-%NULL and return that value.
*
* Returns: %NULL if @fn returns %NULL for all arguments, otherwise the first
* non-%NULL value from @fn.
*/ */
void * void *
vips_class_map_all( GType type, VipsClassMap fn, void *a ) vips_class_map_all( GType base, VipsClassMap fn, void *a )
{ {
void *result; void *result;
/* We never unref this ref, but we never unload classes /* We never unref this ref, but we never unload classes
* anyway, so so what. * anyway, so so what.
*/ */
if( !(result = fn( VIPS_OBJECT_CLASS( g_type_class_ref( type ) ), a )) ) if( !(result = fn( VIPS_OBJECT_CLASS( g_type_class_ref( base ) ), a )) )
result = vips_type_map( type, result = vips_type_map( base,
(VipsTypeMap2) vips_class_map_all, fn, a ); (VipsTypeMap2) vips_class_map_all, fn, a );
return( result ); return( result );
@ -1589,8 +1660,15 @@ test_name( VipsObjectClass *class, const char *nickname )
return( NULL ); return( NULL );
} }
/* Find a class ... search below base, return the first match on a nickname or /**
* a name. * vips_class_find: (skip)
* @basename: name of base class
* @nickname: search for a class with this nickname
*
* Search below basename, return the first class whose name or nickname
* matches.
*
* Returns: the found class.
*/ */
VipsObjectClass * VipsObjectClass *
vips_class_find( const char *basename, const char *nickname ) vips_class_find( const char *basename, const char *nickname )

View File

@ -105,7 +105,7 @@ G_DEFINE_TYPE( VipsInterpolateBicubic, vips_interpolate_bicubic,
*/ */
template <typename T, int min_value, int max_value> template <typename T, int min_value, int max_value>
static void inline static void inline
bicubic_int_tab( PEL *pout, const PEL *pin, bicubic_int_tab( void *pout, const PEL *pin,
const int bands, const int lskip, const int bands, const int lskip,
const int *cx, const int *cy ) const int *cx, const int *cy )
{ {
@ -173,7 +173,7 @@ bicubic_int_tab( PEL *pout, const PEL *pin,
*/ */
template <typename T> template <typename T>
static void inline static void inline
bicubic_float_tab( PEL *pout, const PEL *pin, bicubic_float_tab( void *pout, const PEL *pin,
const int bands, const int lskip, const int bands, const int lskip,
const double *cx, const double *cy ) const double *cx, const double *cy )
{ {
@ -236,7 +236,7 @@ bicubic_float_tab( PEL *pout, const PEL *pin,
*/ */
template <typename T> template <typename T>
static void inline static void inline
bicubic_notab( PEL *pout, const PEL *pin, bicubic_notab( void *pout, const PEL *pin,
const int bands, const int lskip, const int bands, const int lskip,
double x, double y ) double x, double y )
{ {
@ -303,7 +303,7 @@ bicubic_notab( PEL *pout, const PEL *pin,
static void static void
vips_interpolate_bicubic_interpolate( VipsInterpolate *interpolate, vips_interpolate_bicubic_interpolate( VipsInterpolate *interpolate,
PEL *out, REGION *in, double x, double y ) void *out, REGION *in, double x, double y )
{ {
/* Find the mask index. We round-to-nearest, so we need to generate /* Find the mask index. We round-to-nearest, so we need to generate
* indexes in 0 to VIPS_TRANSFORM_SCALE, 2^n + 1 values. We multiply * indexes in 0 to VIPS_TRANSFORM_SCALE, 2^n + 1 values. We multiply

View File

@ -200,7 +200,7 @@ vips_interpolate_init( VipsInterpolate *interpolate )
} }
/** /**
* vips_interpolate: * vips_interpolate: (skip)
* @interpolate: interpolator to use * @interpolate: interpolator to use
* @out: write result here * @out: write result here
* @in: read source data from here * @in: read source data from here
@ -215,7 +215,7 @@ vips_interpolate_init( VipsInterpolate *interpolate )
*/ */
void void
vips_interpolate( VipsInterpolate *interpolate, vips_interpolate( VipsInterpolate *interpolate,
PEL *out, REGION *in, double x, double y ) void *out, REGION *in, double x, double y )
{ {
VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate ); VipsInterpolateClass *class = VIPS_INTERPOLATE_GET_CLASS( interpolate );
@ -225,7 +225,7 @@ vips_interpolate( VipsInterpolate *interpolate,
} }
/** /**
* vips_interpolate_get_method: * vips_interpolate_get_method: (skip)
* @interpolate: interpolator to use * @interpolate: interpolator to use
* *
* Look up the @interpolate method in the class and return it. Use this * Look up the @interpolate method in the class and return it. Use this
@ -333,7 +333,7 @@ G_DEFINE_TYPE( VipsInterpolateNearest, vips_interpolate_nearest,
static void static void
vips_interpolate_nearest_interpolate( VipsInterpolate *interpolate, vips_interpolate_nearest_interpolate( VipsInterpolate *interpolate,
PEL *out, REGION *in, double x, double y ) void *out, REGION *in, double x, double y )
{ {
/* Pel size and line size. /* Pel size and line size.
*/ */
@ -346,11 +346,12 @@ vips_interpolate_nearest_interpolate( VipsInterpolate *interpolate,
const int yi = (int) y; const int yi = (int) y;
const PEL *p = (PEL *) IM_REGION_ADDR( in, xi, yi ); const PEL *p = (PEL *) IM_REGION_ADDR( in, xi, yi );
PEL *q = (PEL *) out;
int z; int z;
for( z = 0; z < ps; z++ ) for( z = 0; z < ps; z++ )
out[z] = p[z]; q[z] = p[z];
} }
static void static void
@ -390,7 +391,7 @@ vips_interpolate_nearest_new( void )
* A convenience function that returns a nearest-neighbour interpolator you * A convenience function that returns a nearest-neighbour interpolator you
* don't need to free. * don't need to free.
* *
* Returns: a nearest-neighbour interpolator * Returns: (transfer none): a nearest-neighbour interpolator
*/ */
VipsInterpolate * VipsInterpolate *
vips_interpolate_nearest_static( void ) vips_interpolate_nearest_static( void )
@ -501,7 +502,7 @@ G_DEFINE_TYPE( VipsInterpolateBilinear, vips_interpolate_bilinear,
static void static void
vips_interpolate_bilinear_interpolate( VipsInterpolate *interpolate, vips_interpolate_bilinear_interpolate( VipsInterpolate *interpolate,
PEL *out, REGION *in, double x, double y ) void *out, REGION *in, double x, double y )
{ {
/* Pel size and line size. /* Pel size and line size.
*/ */
@ -560,7 +561,7 @@ vips_interpolate_bilinear_new( void )
* A convenience function that returns a bilinear interpolator you * A convenience function that returns a bilinear interpolator you
* don't need to free. * don't need to free.
* *
* Returns: a bilinear interpolator * Returns: (transfer none): a bilinear interpolator
*/ */
VipsInterpolate * VipsInterpolate *
vips_interpolate_bilinear_static( void ) vips_interpolate_bilinear_static( void )

View File

@ -570,7 +570,7 @@ lbbicubic( const double c00,
*/ */
#define LBB_CONVERSION( conversion ) \ #define LBB_CONVERSION( conversion ) \
template <typename T> static void inline \ template <typename T> static void inline \
lbb_ ## conversion( PEL* restrict pout, \ lbb_ ## conversion( void* restrict pout, \
const PEL* restrict pin, \ const PEL* restrict pin, \
const int bands, \ const int bands, \
const int lskip, \ const int lskip, \
@ -752,7 +752,7 @@ G_DEFINE_TYPE( VipsInterpolateLbb, vips_interpolate_lbb,
static void static void
vips_interpolate_lbb_interpolate( VipsInterpolate* restrict interpolate, vips_interpolate_lbb_interpolate( VipsInterpolate* restrict interpolate,
PEL* restrict out, void* restrict out,
REGION* restrict in, REGION* restrict in,
double absolute_x, double absolute_x,
double absolute_y ) double absolute_y )

View File

@ -1222,8 +1222,8 @@ lbbicubic( const double c00,
*/ */
#define NOHALO_CONVERSION( conversion ) \ #define NOHALO_CONVERSION( conversion ) \
template <typename T> static void inline \ template <typename T> static void inline \
nohalo_ ## conversion( PEL* restrict pout, \ nohalo_ ## conversion( void* restrict pout, \
const PEL* restrict pin, \ const void* restrict pin, \
const int bands, \ const int bands, \
const int lskip, \ const int lskip, \
const double x_0, \ const double x_0, \
@ -1477,7 +1477,7 @@ G_DEFINE_TYPE( VipsInterpolateNohalo, vips_interpolate_nohalo,
static void static void
vips_interpolate_nohalo_interpolate( VipsInterpolate* restrict interpolate, vips_interpolate_nohalo_interpolate( VipsInterpolate* restrict interpolate,
PEL* restrict out, void* restrict out,
REGION* restrict in, REGION* restrict in,
double absolute_x, double absolute_x,
double absolute_y ) double absolute_y )

View File

@ -178,7 +178,7 @@ typedef struct _VipsInterpolateVsqbsClass {
*/ */
#define VSQBS_CONVERSION( conversion ) \ #define VSQBS_CONVERSION( conversion ) \
template <typename T> static void inline \ template <typename T> static void inline \
vsqbs_ ## conversion( PEL* restrict pout, \ vsqbs_ ## conversion( void* restrict pout, \
const PEL* restrict pin, \ const PEL* restrict pin, \
const int bands, \ const int bands, \
const int lskip, \ const int lskip, \
@ -303,7 +303,7 @@ extern "C" {
static void static void
vips_interpolate_vsqbs_interpolate( VipsInterpolate* restrict interpolate, vips_interpolate_vsqbs_interpolate( VipsInterpolate* restrict interpolate,
PEL* restrict out, void* restrict out,
REGION* restrict in, REGION* restrict in,
double absolute_x, double absolute_x,
double absolute_y ) double absolute_y )