2013-08-23 00:22, Ian Martin skrev:
Hi,
I'm messing around with cluttermm, which hasn't seen a lot of
attention for some time. I think the last time the .hg files were
updated was just before the 1.0 release in 2009, and the last git
commit was about a year ago.
I've managed to build it with jhbuild, but there's been a lot of
work done in cluttermm since 2009, and there's some wrapping
required to get it up to speed. I'm working my way through that,
but have run into the following problem: when running enum.pl to
generate the enums, ClutterPathNodeType is causing grief. Here's
the C declaration in clutter-enums.h (emphasis mine):
#define CLUTTER_PATH_RELATIVE (32)
/**
* ClutterPathNodeType:
* @CLUTTER_PATH_MOVE_TO: jump to the given position
* @CLUTTER_PATH_LINE_TO: create a line from the last node to
the
* given position
* @CLUTTER_PATH_CURVE_TO: bezier curve using the last position
and
* three control points.
* @CLUTTER_PATH_CLOSE: create a line from the last node to the
last
* %CLUTTER_PATH_MOVE_TO node.
* @CLUTTER_PATH_REL_MOVE_TO: same as %CLUTTER_PATH_MOVE_TO but
with
* coordinates relative to the last node.
* @CLUTTER_PATH_REL_LINE_TO: same as %CLUTTER_PATH_LINE_TO but
with
* coordinates relative to the last node.
* @CLUTTER_PATH_REL_CURVE_TO: same as %CLUTTER_PATH_CURVE_TO
but with
* coordinates relative to the last node.
*
* Types of nodes in a #ClutterPath.
*
* Since: 1.0
*/
typedef enum {
CLUTTER_PATH_MOVE_TO = 0,
CLUTTER_PATH_LINE_TO = 1,
CLUTTER_PATH_CURVE_TO = 2,
CLUTTER_PATH_CLOSE = 3,
CLUTTER_PATH_REL_MOVE_TO = CLUTTER_PATH_MOVE_TO |
CLUTTER_PATH_RELATIVE,
CLUTTER_PATH_REL_LINE_TO = CLUTTER_PATH_LINE_TO |
CLUTTER_PATH_RELATIVE,
CLUTTER_PATH_REL_CURVE_TO = CLUTTER_PATH_CURVE_TO |
CLUTTER_PATH_RELATIVE
} ClutterPathNodeType;
and so running enum.pl on it results in
WARNING: CLUTTER_PATH_RELATIVE value of
CLUTTER_PATH_REL_LINE_TO element in 'ClutterPathNodeType' enum
is an unknown token.
It probably is ...
I'm guessing it's the preprocessor define that's causing the
problem. Is there a simple way to get gmmproc to read this
appropriately, or should I just redefine the whole enum in one of
the .hg files?
Ian.
Are the warnings fatal, or does enum.pl generate a useful file?
When generating gio_enums.defs in glibmm/gio/src, enum.pl prints
some such warnings because of
typedef enum {
G_SOCKET_FAMILY_INVALID,
G_SOCKET_FAMILY_UNIX = GLIB_SYSDEF_AF_UNIX,
G_SOCKET_FAMILY_IPV4 = GLIB_SYSDEF_AF_INET,
G_SOCKET_FAMILY_IPV6 = GLIB_SYSDEF_AF_INET6
} GSocketFamily;
and
typedef enum /*< flags >*/
{
G_SOCKET_MSG_NONE,
G_SOCKET_MSG_OOB = GLIB_SYSDEF_MSG_OOB,
G_SOCKET_MSG_PEEK = GLIB_SYSDEF_MSG_PEEK,
G_SOCKET_MSG_DONTROUTE = GLIB_SYSDEF_MSG_DONTROUTE
} GSocketMsgFlags;
The generated file is still correct, and gmmproc can use it for
generating .h files out out .hg files.
These enums are simpler than your enum, because they don't contain
"|". I don't know it that matters.
Kjell
|