grim/gplate

Parents c1ea4aef75c5
Children c4d20ffaecd2
Adding some helpers for management of the tag list
--- a/gplate/gplate-template.c Thu Feb 07 18:18:53 2008 -0600
+++ b/gplate/gplate-template.c Thu Feb 07 19:01:28 2008 -0600
@@ -50,6 +50,8 @@
gchar *pattern;
GPlateVariable *vars;
+
+ GList *tokens;
} GPlateTemplatePrivate;
typedef struct {
@@ -638,3 +640,87 @@
return ret;
}
+GPlateTag *
+gplate_template_first_tag(GPlateTemplate *tplate) {
+ GPlateTemplateClass *klass = NULL;
+
+ g_return_val_if_fail(GPLATE_IS_TEMPLATE(tplate), NULL);
+
+ klass = GPLATE_TEMPLATE_GET_CLASS(tplate);
+
+ if(klass && klass->first_tag)
+ return klass->first_tag(tplate);
+
+ return NULL;
+}
+
+GPlateTag *
+gplate_template_last_tag(GPlateTemplate *tplate) {
+ GPlateTemplateClass *klass = NULL;
+
+ g_return_val_if_fail(GPLATE_IS_TEMPLATE(tplate), NULL);
+
+ klass = GPLATE_TEMPLATE_GET_CLASS(tplate);
+
+ if(klass && klass->last_tag)
+ return klass->last_tag(tplate);
+
+ return NULL;
+}
+
+GPlateTag *
+gplate_template_next_tag(GPlateTemplate *tplate) {
+ GPlateTemplateClass *klass = NULL;
+
+ g_return_val_if_fail(GPLATE_IS_TEMPLATE(tplate), NULL);
+
+ klass = GPLATE_TEMPLATE_GET_CLASS(tplate);
+
+ if(klass && klass->next_tag)
+ return klass->next_tag(tplate);
+
+ return NULL;
+}
+
+GPlateTag *
+gplate_template_previous_tag(GPlateTemplate *tplate) {
+ GPlateTemplateClass *klass = NULL;
+
+ g_return_val_if_fail(GPLATE_IS_TEMPLATE(tplate), NULL);
+
+ klass = GPLATE_TEMPLATE_GET_CLASS(tplate);
+
+ if(klass && klass->previous_tag)
+ return klass->previous_tag(tplate);
+
+ return NULL;
+}
+
+GPlateTag *
+gplate_template_nth_tag(GPlateTemplate *tplate) {
+ GPlateTemplateClass *klass = NULL;
+
+ g_return_val_if_fail(GPLATE_IS_TEMPLATE(tplate), NULL);
+
+ klass = GPLATE_TEMPLATE_GET_CLASS(tplate);
+
+ if(klass && klass->nth_tag)
+ return klass->nth_tag(tplate);
+
+ return NULL;
+}
+
+GPlateTag *
+gplate_template_nth_previous_tag(GPlateTemplate *tplate) {
+ GPlateTemplateClass *klass = NULL;
+
+ g_return_val_if_fail(GPLATE_IS_TEMPLATE(tplate), NULL);
+
+ klass = GPLATE_TEMPLATE_GET_CLASS(tplate);
+
+ if(klass && klass->nth_previous_tag)
+ return klass->nth_previous_tag(tplate);
+
+ return NULL;
+}
+
--- a/gplate/gplate-template.h Thu Feb 07 18:18:53 2008 -0600
+++ b/gplate/gplate-template.h Thu Feb 07 19:01:28 2008 -0600
@@ -50,6 +50,13 @@
GList *(*tokenize)(GPlateTemplate *tplate, const gchar *tplate_string, GError **error);
+ GPlateTag *(*first_tag)(GPlateTemplate *tplate);
+ GPlateTag *(*last_tag)(GPlateTemplate *tplate);
+ GPlateTag *(*next_tag)(GPlateTemplate *tplate);
+ GPlateTag *(*previous_tag)(GPlateTemplate *tplate);
+ GPlateTag *(*nth_tag)(GPlateTemplate *tplate);
+ GPlateTag *(*nth_previous_tag)(GPlateTemplate *tplate);
+
void (*_gplate_reserved1)(void);
void (*_gplate_reserved2)(void);
void (*_gplate_reserved3)(void);
@@ -69,6 +76,13 @@
gchar *gplate_template_render(GPlateTemplate *tplate, const gchar *tplate_string, GError **error);
gchar *gplate_template_render_file(GPlateTemplate *tplate, const gchar *filename, GError **error);
+GPlateTag *gplate_template_first_tag(GPlateTemplate *tplate);
+GPlateTag *gplate_template_last_tag(GPlateTemplate *tplate);
+GPlateTag *gplate_template_next_tag(GPlateTemplate *tplate);
+GPlateTag *gplate_template_previous_tag(GPlateTemplate *tplate);
+GPlateTag *gplate_template_nth_tag(GPlateTemplate *tplate);
+GPlateTag *gplate_template_nth_previous_tag(GPlateTemplate *tplate);
+
G_END_DECLS
#endif /* GPLATE_TEMPLATE_H */