/* LIBPIKA - The PIKA Library * Copyright (C) 1995-2003 Peter Mattis and Spencer Kimball * * pikaparamspecs.h * * This library is free software: you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see * . */ #if !defined (__PIKA_BASE_H_INSIDE__) && !defined (PIKA_BASE_COMPILATION) #error "Only can be included directly." #endif #ifndef __PIKA_PARAM_SPECS_H__ #define __PIKA_PARAM_SPECS_H__ G_BEGIN_DECLS /* For information look into the C source or the html documentation */ /** * PIKA_PARAM_NO_VALIDATE: * * Since 3.0 */ /* * Keep in sync with libpikaconfig/pikaconfig-params.h */ #define PIKA_PARAM_NO_VALIDATE (1 << (6 + G_PARAM_USER_SHIFT)) /** * PIKA_PARAM_STATIC_STRINGS: * * Since: 2.4 **/ #define PIKA_PARAM_STATIC_STRINGS (G_PARAM_STATIC_NAME | \ G_PARAM_STATIC_NICK | \ G_PARAM_STATIC_BLURB) /** * PIKA_PARAM_READABLE: * * Since: 2.4 **/ #define PIKA_PARAM_READABLE (G_PARAM_READABLE | \ PIKA_PARAM_STATIC_STRINGS) /** * PIKA_PARAM_WRITABLE: * * Since: 2.4 **/ #define PIKA_PARAM_WRITABLE (G_PARAM_WRITABLE | \ PIKA_PARAM_STATIC_STRINGS) /** * PIKA_PARAM_READWRITE: * * Since: 2.4 **/ #define PIKA_PARAM_READWRITE (G_PARAM_READWRITE | \ PIKA_PARAM_STATIC_STRINGS) /* * PIKA_TYPE_PARAM_CHOICE */ #define PIKA_TYPE_PARAM_CHOICE (pika_param_choice_get_type ()) #define PIKA_PARAM_SPEC_CHOICE(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), PIKA_TYPE_PARAM_CHOICE, PikaParamSpecChoice)) #define PIKA_IS_PARAM_SPEC_CHOICE(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), PIKA_TYPE_PARAM_CHOICE)) typedef struct _PikaParamSpecChoice PikaParamSpecChoice; struct _PikaParamSpecChoice { GParamSpecBoxed parent_instance; gchar *default_value; PikaChoice *choice; }; GType pika_param_choice_get_type (void) G_GNUC_CONST; GParamSpec * pika_param_spec_choice (const gchar *name, const gchar *nick, const gchar *blurb, PikaChoice *choice, const gchar *default_value, GParamFlags flags); /* * PIKA_TYPE_ARRAY */ /** * PikaArray: * @data: (array length=length): pointer to the array's data. * @length: length of @data, in bytes. * @static_data: whether @data points to statically allocated memory. **/ typedef struct _PikaArray PikaArray; struct _PikaArray { guint8 *data; gsize length; gboolean static_data; }; PikaArray * pika_array_new (const guint8 *data, gsize length, gboolean static_data); PikaArray * pika_array_copy (const PikaArray *array); void pika_array_free (PikaArray *array); #define PIKA_TYPE_ARRAY (pika_array_get_type ()) #define PIKA_VALUE_HOLDS_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), PIKA_TYPE_ARRAY)) GType pika_array_get_type (void) G_GNUC_CONST; /* * PIKA_TYPE_PARAM_ARRAY */ #define PIKA_TYPE_PARAM_ARRAY (pika_param_array_get_type ()) #define PIKA_PARAM_SPEC_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), PIKA_TYPE_PARAM_ARRAY, PikaParamSpecArray)) #define PIKA_IS_PARAM_SPEC_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), PIKA_TYPE_PARAM_ARRAY)) typedef struct _PikaParamSpecArray PikaParamSpecArray; struct _PikaParamSpecArray { GParamSpecBoxed parent_instance; }; GType pika_param_array_get_type (void) G_GNUC_CONST; GParamSpec * pika_param_spec_array (const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags); /* * PIKA_TYPE_INT32_ARRAY */ #define PIKA_TYPE_INT32_ARRAY (pika_int32_array_get_type ()) #define PIKA_VALUE_HOLDS_INT32_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), PIKA_TYPE_INT32_ARRAY)) GType pika_int32_array_get_type (void) G_GNUC_CONST; /* * PIKA_TYPE_PARAM_INT32_ARRAY */ #define PIKA_TYPE_PARAM_INT32_ARRAY (pika_param_int32_array_get_type ()) #define PIKA_PARAM_SPEC_INT32_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), PIKA_TYPE_PARAM_INT32_ARRAY, PikaParamSpecInt32Array)) #define PIKA_IS_PARAM_SPEC_INT32_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), PIKA_TYPE_PARAM_INT32_ARRAY)) typedef struct _PikaParamSpecInt32Array PikaParamSpecInt32Array; struct _PikaParamSpecInt32Array { PikaParamSpecArray parent_instance; }; GType pika_param_int32_array_get_type (void) G_GNUC_CONST; GParamSpec * pika_param_spec_int32_array (const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags); const gint32 * pika_value_get_int32_array (const GValue *value); gint32 * pika_value_dup_int32_array (const GValue *value); void pika_value_set_int32_array (GValue *value, const gint32 *data, gsize length); void pika_value_set_static_int32_array (GValue *value, const gint32 *data, gsize length); void pika_value_take_int32_array (GValue *value, gint32 *data, gsize length); /* * PIKA_TYPE_FLOAT_ARRAY */ #define PIKA_TYPE_FLOAT_ARRAY (pika_float_array_get_type ()) #define PIKA_VALUE_HOLDS_FLOAT_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), PIKA_TYPE_FLOAT_ARRAY)) GType pika_float_array_get_type (void) G_GNUC_CONST; /* * PIKA_TYPE_PARAM_FLOAT_ARRAY */ #define PIKA_TYPE_PARAM_FLOAT_ARRAY (pika_param_float_array_get_type ()) #define PIKA_PARAM_SPEC_FLOAT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), PIKA_TYPE_PARAM_FLOAT_ARRAY, PikaParamSpecFloatArray)) #define PIKA_IS_PARAM_SPEC_FLOAT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), PIKA_TYPE_PARAM_FLOAT_ARRAY)) typedef struct _PikaParamSpecFloatArray PikaParamSpecFloatArray; struct _PikaParamSpecFloatArray { PikaParamSpecArray parent_instance; }; GType pika_param_float_array_get_type (void) G_GNUC_CONST; GParamSpec * pika_param_spec_float_array (const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags); const gdouble * pika_value_get_float_array (const GValue *value); gdouble * pika_value_dup_float_array (const GValue *value); void pika_value_set_float_array (GValue *value, const gdouble *data, gsize length); void pika_value_set_static_float_array (GValue *value, const gdouble *data, gsize length); void pika_value_take_float_array (GValue *value, gdouble *data, gsize length); /* * PIKA_TYPE_RGB_ARRAY */ #define PIKA_TYPE_RGB_ARRAY (pika_rgb_array_get_type ()) #define PIKA_VALUE_HOLDS_RGB_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), PIKA_TYPE_RGB_ARRAY)) GType pika_rgb_array_get_type (void) G_GNUC_CONST; /* * PIKA_TYPE_PARAM_RGB_ARRAY */ #define PIKA_TYPE_PARAM_RGB_ARRAY (pika_param_rgb_array_get_type ()) #define PIKA_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), PIKA_TYPE_PARAM_RGB_ARRAY, PikaParamSpecRGBArray)) #define PIKA_IS_PARAM_SPEC_RGB_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), PIKA_TYPE_PARAM_RGB_ARRAY)) typedef struct _PikaParamSpecRGBArray PikaParamSpecRGBArray; struct _PikaParamSpecRGBArray { GParamSpecBoxed parent_instance; }; GType pika_param_rgb_array_get_type (void) G_GNUC_CONST; GParamSpec * pika_param_spec_rgb_array (const gchar *name, const gchar *nick, const gchar *blurb, GParamFlags flags); const PikaRGB * pika_value_get_rgb_array (const GValue *value); PikaRGB * pika_value_dup_rgb_array (const GValue *value); void pika_value_set_rgb_array (GValue *value, const PikaRGB *data, gsize length); void pika_value_set_static_rgb_array (GValue *value, const PikaRGB *data, gsize length); void pika_value_take_rgb_array (GValue *value, PikaRGB *data, gsize length); /* * PIKA_TYPE_OBJECT_ARRAY */ /** * PikaObjectArray: * @object_type: #GType of the contained objects. * @data: (array length=length): pointer to the array's data. * @length: length of @data, in number of objects. * @static_data: whether @data points to statically allocated memory. **/ typedef struct _PikaObjectArray PikaObjectArray; struct _PikaObjectArray { GType object_type; GObject **data; gsize length; gboolean static_data; }; PikaObjectArray * pika_object_array_new (GType object_type, GObject **data, gsize length, gboolean static_data); PikaObjectArray * pika_object_array_copy (const PikaObjectArray *array); void pika_object_array_free (PikaObjectArray *array); #define PIKA_TYPE_OBJECT_ARRAY (pika_object_array_get_type ()) #define PIKA_VALUE_HOLDS_OBJECT_ARRAY(value) (G_TYPE_CHECK_VALUE_TYPE ((value), PIKA_TYPE_OBJECT_ARRAY)) GType pika_object_array_get_type (void) G_GNUC_CONST; /* * PIKA_TYPE_PARAM_OBJECT_ARRAY */ #define PIKA_TYPE_PARAM_OBJECT_ARRAY (pika_param_object_array_get_type ()) #define PIKA_PARAM_SPEC_OBJECT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_CAST ((pspec), PIKA_TYPE_PARAM_OBJECT_ARRAY, PikaParamSpecObjectArray)) #define PIKA_IS_PARAM_SPEC_OBJECT_ARRAY(pspec) (G_TYPE_CHECK_INSTANCE_TYPE ((pspec), PIKA_TYPE_PARAM_OBJECT_ARRAY)) typedef struct _PikaParamSpecObjectArray PikaParamSpecObjectArray; struct _PikaParamSpecObjectArray { GParamSpecBoxed parent_instance; GType object_type; }; GType pika_param_object_array_get_type (void) G_GNUC_CONST; GParamSpec * pika_param_spec_object_array (const gchar *name, const gchar *nick, const gchar *blurb, GType object_type, GParamFlags flags); GObject ** pika_value_get_object_array (const GValue *value); GObject ** pika_value_dup_object_array (const GValue *value); void pika_value_set_object_array (GValue *value, GType object_type, GObject **data, gsize length); void pika_value_set_static_object_array (GValue *value, GType object_type, GObject **data, gsize length); void pika_value_take_object_array (GValue *value, GType object_type, GObject **data, gsize length); G_END_DECLS #endif /* __PIKA_PARAM_SPECS_H__ */