aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJean-François Rameau <jframeau@cvs.gnome.org>2005-01-21 03:04:31 +0800
committerJean-François Rameau <jframeau@src.gnome.org>2005-01-21 03:04:31 +0800
commit0611ef2fe780b5d8b3abea917921ceca2fdf544a (patch)
tree7849cf5b7d520a9dd7cb108952a3b78b10ab7585 /src
parent7158c7b4c0c51189580126c4966e5868c920f8d7 (diff)
downloadgsoc2013-epiphany-0611ef2fe780b5d8b3abea917921ceca2fdf544a.tar
gsoc2013-epiphany-0611ef2fe780b5d8b3abea917921ceca2fdf544a.tar.gz
gsoc2013-epiphany-0611ef2fe780b5d8b3abea917921ceca2fdf544a.tar.bz2
gsoc2013-epiphany-0611ef2fe780b5d8b3abea917921ceca2fdf544a.tar.lz
gsoc2013-epiphany-0611ef2fe780b5d8b3abea917921ceca2fdf544a.tar.xz
gsoc2013-epiphany-0611ef2fe780b5d8b3abea917921ceca2fdf544a.tar.zst
gsoc2013-epiphany-0611ef2fe780b5d8b3abea917921ceca2fdf544a.zip
Make ephy-bookmarks.h's enum a named enum. Auto-generate types for
2005-01-20 Jean-François Rameau <jframeau@cvs.gnome.org> * src/bookmarks/ephy-bookmarks.h: * src/bookmarks/Makefile.am: * src/bookmarks/ephy-bookmarks.c: (ephy_bookmarks_get_type): Make ephy-bookmarks.h's enum a named enum. Auto-generate types for ephy-bookmarks.h's enum. Make sure our enum type is registered.
Diffstat (limited to 'src')
-rw-r--r--src/bookmarks/Makefile.am57
-rw-r--r--src/bookmarks/ephy-bookmarks.c5
-rw-r--r--src/bookmarks/ephy-bookmarks.h4
3 files changed, 63 insertions, 3 deletions
diff --git a/src/bookmarks/Makefile.am b/src/bookmarks/Makefile.am
index 0644de0b8..e5f286ea7 100644
--- a/src/bookmarks/Makefile.am
+++ b/src/bookmarks/Makefile.am
@@ -1,7 +1,9 @@
noinst_LTLIBRARIES = libephybookmarks.la
headerdir = $(prefix)/include/epiphany-@EPIPHANY_MAJOR@/epiphany
-header_DATA = $(INST_H_FILES)
+header_DATA = \
+ ephy-bookmarks-type-builtins.h \
+ $(INST_H_FILES)
INST_H_FILES = \
ephy-bookmarks.h
@@ -21,6 +23,7 @@ NOINST_H_FILES = \
ephy-topics-selector.h
libephybookmarks_la_SOURCES = \
+ $(BUILT_SOURCES) \
ephy-bookmarks.c \
ephy-bookmark-action.c \
ephy-bookmarks-editor.c \
@@ -37,6 +40,54 @@ libephybookmarks_la_SOURCES = \
$(NOINST_H_FILES) \
$(INST_H_FILES)
+BUILT_SOURCES = $(TYPES_SOURCE)
+
+TYPES_SOURCE = \
+ ephy-bookmarks-type-builtins.c \
+ ephy-bookmarks-type-builtins.h
+
+stamp_files = \
+ stamp-ephy-bookmarks-type-builtins.c \
+ stamp-ephy-bookmarks-type-builtins.h
+
+ephy-bookmarks-type-builtins.c: stamp-ephy-bookmarks-type-builtins.c
+ @true
+stamp-ephy-bookmarks-type-builtins.c: $(INST_H_FILES) $(NOINST_H_FILES)
+ ( cd $(srcdir) && $(GLIB_MKENUMS) \
+ --fhead "#include \"ephy-bookmarks-type-builtins.h\"\n\n" \
+ --fprod "\n/* enumerations from \"@filename@\" */" \
+ --fprod "\n#include \"@filename@\"" \
+ --vhead "static const G@Type@Value _@enum_name@_values[] = {" \
+ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ --vtail " { 0, NULL, NULL }\n};\n\n" \
+ --vtail "GType\n@enum_name@_get_type (void)\n{\n" \
+ --vtail " static GType type = 0;\n\n" \
+ --vtail " if (G_UNLIKELY (type == 0))\n" \
+ --vtail " type = g_@type@_register_static (\"@EnumName@\", _@enum_name@_values);\n\n" \
+ --vtail " return type;\n}\n\n" \
+ $(^F) ) > xgen-$(@F) \
+ && ( cmp -s xgen-$(@F) $(@F:stamp-%=%) || cp xgen-$(@F) $(@F:stamp-%=%) ) \
+ && rm -f xgen-$(@F) \
+ && echo timestamp > $(@F)
+
+ephy-bookmarks-type-builtins.h: stamp-ephy-bookmarks-type-builtins.h
+ @true
+stamp-ephy-bookmarks-type-builtins.h: $(INST_H_FILES) $(NOINST_H_FILES)
+ ( cd $(srcdir) && $(GLIB_MKENUMS) \
+ --fhead "#ifndef EPHY_BOOKMARKS_TYPE_BUILTINS_H\n" \
+ --fhead "#define EPHY_BOOKMARKS_TYPE_BUILTINS_H 1\n\n" \
+ --fhead "#include <glib-object.h>\n\n" \
+ --fhead "G_BEGIN_DECLS\n\n" \
+ --ftail "G_END_DECLS\n\n" \
+ --ftail "#endif /* EPHY_TYPE_BUILTINS_H */\n" \
+ --fprod "\n/* --- @filename@ --- */" \
+ --eprod "#define EPHY_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n" \
+ --eprod "GType @enum_name@_get_type (void);\n" \
+ $(^F) ) > xgen-$(@F) \
+ && ( cmp -s xgen-$(@F) $(@F:stamp-%=%) || cp xgen-$(@F) $(@F:stamp-%=%) ) \
+ && rm -f xgen-$(@F) \
+ && echo timestamp > $(@F)
+
libephybookmarks_la_CPPFLAGS = \
-I$(top_builddir)/lib \
-I$(top_srcdir)/lib \
@@ -49,3 +100,7 @@ libephybookmarks_la_CPPFLAGS = \
libephybookmarks_la_CFLAGS = \
$(EPIPHANY_DEPENDENCY_CFLAGS) \
$(AM_CFLAGS)
+
+CLEANFILES = $(stamp_files) $(BUILT_SOURCES)
+DISTCLEANFILES = $(stamp_files) $(BUILT_SOURCES)
+MAINTAINERCLEANFILES = $(stamp_files) $(BUILT_SOURCES)
diff --git a/src/bookmarks/ephy-bookmarks.c b/src/bookmarks/ephy-bookmarks.c
index 5fa33c340..9d24f7d76 100644
--- a/src/bookmarks/ephy-bookmarks.c
+++ b/src/bookmarks/ephy-bookmarks.c
@@ -22,6 +22,7 @@
#include "config.h"
#include "ephy-bookmarks.h"
+#include "ephy-bookmarks-type-builtins.h"
#include "ephy-file-helpers.h"
#include "ephy-embed-shell.h"
#include "ephy-shell.h"
@@ -138,6 +139,10 @@ ephy_bookmarks_get_type (void)
0, /* n_preallocs */
(GInstanceInitFunc) ephy_bookmarks_init
};
+ volatile GType flags_type; /* work around gcc's optimiser */
+
+ /* make sure the flags type is known */
+ flags_type = EPHY_TYPE_BOOKMARK_PROPERTY;
type = g_type_register_static (G_TYPE_OBJECT,
"EphyBookmarks",
diff --git a/src/bookmarks/ephy-bookmarks.h b/src/bookmarks/ephy-bookmarks.h
index e42a6975d..b9a3ea69c 100644
--- a/src/bookmarks/ephy-bookmarks.h
+++ b/src/bookmarks/ephy-bookmarks.h
@@ -42,7 +42,7 @@ typedef struct _EphyBookmarksPrivate EphyBookmarksPrivate;
#define BOOKMARKS_HIERARCHY_SEP "->"
-enum
+typedef enum
{
EPHY_NODE_BMK_PROP_TITLE = 2,
EPHY_NODE_BMK_PROP_LOCATION = 3,
@@ -50,7 +50,7 @@ enum
EPHY_NODE_KEYWORD_PROP_NAME = 5,
EPHY_NODE_BMK_PROP_ICON = 7,
EPHY_NODE_KEYWORD_PROP_PRIORITY = 8
-};
+} EphyBookmarkProperty;
struct _EphyBookmarks
{