grim/gplate

testing jenkins

2013-06-22, Gary Kramlich
bbd7f5310eae
testing jenkins
/*
* GPlate - GObject based templating library
* Copyright (C) 2007-2012 Gary Kramlich <grim@reaperworld.com>
*
* 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 <http://www.gnu.org/licenses/>.
*/
#ifndef GPLATE_COLLECTION_H
#define GPLATE_COLLECTION_H
#include <glib.h>
#include <glib-object.h>
#include <gplate/gplate-variable.h>
#include <gplate/gplate-iterator.h>
#define GPLATE_TYPE_COLLECTION (gplate_collection_get_type())
/**
* SECTION:gplate-collection
* @short_description: A collection of #GPlateVariable items.
*
* GPlateCollection is a #GInterface that defines the behavior of a
* variable collection.
*/
#define GPLATE_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GPLATE_TYPE_COLLECTION, GPlateCollection))
#define GPLATE_IS_COLLECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPLATE_TYPE_COLLECTION))
#define GPLATE_COLLECTION_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE((obj), GPLATE_TYPE_COLLECTION, GPlateCollectionIface))
/**
* GPlateCollection:
*
* The GPlateCollection typedef is used as a placeholder for objects
* that implement the GPlateCollection interface.
*/
typedef struct _GPlateCollection GPlateCollection;
typedef struct _GPlateCollectionIface GPlateCollectionIface;
/**
* GPlateCollectionIface:
* @gparent: The parent data.
* @find_variable: see gplate_collection_find_variable()
* @add_variable_with_name: see gplate_collection_add_variable_with_name()
* @remove_variable: see gplate_collection_remove_variable()
* @remove_all: see gplate_collection_remove_all()
* @get_iterator: see gplate_collection_get_iterator()
*
* The GPlateCollectionIface is the interface implemented by classes
* that wish to present themselves as a GPlateCollection.
*/
struct _GPlateCollectionIface {
GTypeInterface gparent;
GPlateVariable *(*find_variable)(const GPlateCollection *collection, const gchar *name);
gboolean (*add_variable_with_name)(GPlateCollection *collection, const gchar *name, GPlateVariable *variable);
gboolean (*remove_variable)(GPlateCollection *collection, GPlateVariable *variable);
gboolean (*remove_all)(GPlateCollection *collection);
GPlateIterator *(*get_iterator)(GPlateCollection *collection);
/*< private >*/
void (*_gplate_reserved1)(void);
void (*_gplate_reserved2)(void);
void (*_gplate_reserved3)(void);
void (*_gplate_reserved4)(void);
};
G_BEGIN_DECLS
/**
* gplate_collection_add:
* @collection: The GPlateCollection.
* @type: The type of the variable (<emphasis>not the
* #GType</emphasis>). This must be one of "string", "boolean",
* "integer", "float" or "double".
* @name: The name of the variable.
* @value: The value of the variable.
*
* Add a string, boolean, integer, float or double value variable to
* the @collection.
*/
#define gplate_collection_add(collection, type, name, value) { \
GPlateVariable *var = NULL; \
\
var = gplate_variable_new_from_##type((name), (value)); \
gplate_collection_add_variable(GPLATE_COLLECTION(collection), (var));\
}
/**
* gplate_collection_add_string:
* @collection: The GPlateCollection.
* @name: The name of the string variable.
* @value: The string variable's content.
*
* A helper macro for adding a string variable to a collection.
*
* This is a wrapper around the #gplate_collection_add macro.
*/
#define gplate_collection_add_string(collection, name, value) \
gplate_collection_add((collection), string, (name), (value));
/**
* gplate_collection_add_boolean:
* @collection: The GPlateCollection.
* @name: The name of the boolean variable.
* @value: The boolean variable's content.
*
* A helper macro for adding a boolean variable to a collection.
*
* This is a wrapper around the #gplate_collection_add macro.
*/
#define gplate_collection_add_boolean(collection, name, value) \
gplate_collection_add((collection), boolean, (name), (value));
/**
* gplate_collection_add_integer:
* @collection: The GPlateCollection.
* @name: The name of the integer variable.
* @value: The integer variable's content.
*
* A helper macro for adding a integer variable to a collection.
*
* This is a wrapper around the #gplate_collection_add macro.
*/
#define gplate_collection_add_integer(collection, name, value) \
gplate_collection_add((collection), integer, (name), (value));
/**
* gplate_collection_add_float:
* @collection: The GPlateCollection.
* @name: The name of the float variable.
* @value: The float variable's content.
*
* A helper macro for adding a float variable to a collection.
*
* This is a wrapper around the #gplate_collection_add macro.
*/
#define gplate_collection_add_float(collection, name, value) \
gplate_collection_add((collection), float, (name), (value));
/**
* gplate_collection_add_double:
* @collection: The GPlateCollection.
* @name: The name of the double variable.
* @value: The double variable's content.
*
* A helper macro for adding a double variable to a collection.
*
* This is a wrapper around the #gplate_collection_add macro.
*/
#define gplate_collection_add_double(collection, name, value) \
gplate_collection_add((collection), double, (name), (value));
GType gplate_collection_get_type(void);
GPlateVariable *gplate_collection_find_variable(const GPlateCollection *collection, const gchar *name);
const gchar *gplate_collection_lookup(const GPlateCollection *collection, const gchar *name);
gboolean gplate_collection_add_variable(GPlateCollection *collection, GPlateVariable *variable);
gboolean gplate_collection_add_variable_with_name(GPlateCollection *collection, const gchar *name, GPlateVariable *variable);
gboolean gplate_collection_remove_variable(GPlateCollection *collection, GPlateVariable *variable);
gboolean gplate_collection_remove_all(GPlateCollection *collection);
GPlateIterator *gplate_collection_get_iterator(GPlateCollection *collection);
G_END_DECLS
#endif /* GPLATE_COLLECTION_H */