vdk 2.4.0
gtksourcetag.h
00001 /*  gtksourcetag.h
00002  *
00003  *  Copyright (C) 2001
00004  *  Mikael Hermansson<tyan@linux.se>
00005  *  Chris Phelps <chicane@reninet.com>
00006  *
00007  *  This program is free software; you can redistribute it and/or modify
00008  *  it under the terms of the GNU Library General Public License as published by
00009  *  the Free Software Foundation; either version 2 of the License, or
00010  *  (at your option) any later version.
00011  *
00012  *  This program is distributed in the hope that it will be useful,
00013  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  *  GNU Library General Public License for more details.
00016  *
00017  *  You should have received a copy of the GNU Library General Public License*  along with this program; if not, write to the Free Software
00018  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00019  */
00020 
00021 #ifndef __GTK_SOURCE_TAG_H__
00022 #define __GTK_SOURCE_TAG_H__
00023 
00024 #include <regex.h>
00025 #include <gtk/gtk.h>
00026 #include <gtk/gtktexttag.h>
00027 
00028 G_BEGIN_DECLS
00029 
00030 #define GTK_TYPE_SYNTAX_TAG            (gtk_syntax_tag_get_type ())
00031 #define GTK_SYNTAX_TAG(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_SYNTAX_TAG, GtkSyntaxTag))
00032 #define GTK_SYNTAX_TAG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_SYNTAX_TAG, GtkSyntaxTagClass))
00033 #define GTK_IS_SYNTAX_TAG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_SYNTAX_TAG))
00034 #define GTK_IS_SYNTAX_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SYNTAX_TAG))
00035 #define GTK_SYNTAX_TAG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_SYNTAX_TAG, GtkSyntaxTagClass))
00036 
00037 #define GTK_TYPE_PATTERN_TAG            (gtk_pattern_tag_get_type ())
00038 #define GTK_PATTERN_TAG(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_PATTERN_TAG, GtkPatternTag))
00039 #define GTK_PATTERN_TAG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_PATTERN_TAG, GtkPatternTagClass))
00040 #define GTK_IS_PATTERN_TAG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_PATTERN_TAG))
00041 #define GTK_IS_PATTERN_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_PATTERN_TAG))
00042 #define GTK_PATTERN_TAG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_PATTERN_TAG, GtkPatternTagClass))
00043 
00044 #define GTK_TYPE_EMBEDDED_TAG            (gtk_embedded_tag_get_type ())
00045 #define GTK_EMBEDDED_TAG(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_EMBEDDED_TAG, GtkEmbeddedTag))
00046 #define GTK_EMBEDDED_TAG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_EMBEDDED_TAG, GtkEmbeddedTagClass))
00047 #define GTK_IS_EMBEDDED_TAG(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_EMBEDDED_TAG))
00048 #define GTK_IS_EMBEDDED_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_EMBEDDED_TAG))
00049 #define GTK_EMBEDDED_TAG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_EMBEDDED_TAG, GtkEmbeddedTagClass))
00050 
00051 typedef struct _GtkSourceBufferMatch
00052 {
00053   gint startpos;
00054   gint endpos;
00055 }GtkSourceBufferMatch;
00056 
00057 /* FIXME: regex routines is NOT UTF8 compat... */
00058 
00059 typedef struct _Regex {
00060         struct re_pattern_buffer buf;
00061         struct re_registers reg;
00062         gint len;
00063 }Regex;
00064 
00065 typedef struct _GtkSyntaxTag GtkSyntaxTag;
00066 typedef struct _GtkSyntaxTagClass GtkSyntaxTagClass;
00067 typedef struct _GtkPatternTag GtkPatternTag;
00068 typedef struct _GtkPatternTagClass GtkPatternTagClass;
00069 typedef struct _GtkEmbeddedTag GtkEmbeddedTag;
00070 typedef struct _GtkEmbeddedTagClass GtkEmbeddedTagClass;
00071 
00072 struct _GtkSyntaxTag {
00073         GtkTextTag parent_instance;
00074         gchar *start;  
00075         Regex reg_start;
00076         Regex reg_end;
00077 };
00078 
00079 struct _GtkSyntaxTagClass {
00080         GtkTextTagClass parent_class; 
00081 };
00082 
00083 struct _GtkPatternTag {
00084         GtkTextTag parent_instance;
00085         Regex reg_pattern;
00086 };
00087 
00088 struct _GtkPatternTagClass {
00089         GtkTextTagClass parent_class; 
00090 };
00091 
00092 struct _GtkEmbeddedTag {
00093         GtkTextTag parent_instance;
00094         Regex reg_outside;
00095         Regex reg_inside;
00096 };
00097 
00098 struct _GtkEmbeddedTagClass {
00099         GtkTextTagClass parent_class; 
00100 };
00101 
00102 
00103 GType      gtk_syntax_tag_get_type(void) G_GNUC_CONST;
00104 GtkTextTag* gtk_syntax_tag_new(const gchar *name, const gchar *patternstart,
00105                                const gchar *patternend);
00106 
00107 GType      gtk_pattern_tag_get_type(void) G_GNUC_CONST;
00108 GtkTextTag* gtk_pattern_tag_new(const gchar *name, const gchar *pattern);
00109 
00110 GType      gtk_embedded_tag_get_type(void) G_GNUC_CONST;
00111 GtkTextTag* gtk_embedded_tag_new(const gchar *name, const gchar *outside,
00112                                  const gchar *inside);
00113 
00114 gboolean gtk_source_compile_regex (const gchar *pattern, Regex *regex);
00115 
00116 G_END_DECLS
00117 
00118 #endif