*/
%{
-#include "config.h"
+#include <config.h>
#include <glib.h>
#include <stdio.h>
#include <stdlib.h>
static GList *error_vals = NULL;
static gboolean abstract = FALSE;
+static gboolean dynamic = FALSE;
static char *chunk_size = NULL;
static char *bonobo_object_class = NULL;
static int glade_xml = FALSE;
static char *defreturn = NULL;
static GList *gtktypes = NULL;
+static char *signal_name=NULL;
static Property *property = NULL;
char *out=NULL;
char *p;
- if(strcmp(yytext,"\n")==0) {
- out=g_strconcat("Error: ",str," before newline",NULL);
- } else if(yytext[0]=='\0') {
+ if (strcmp (yytext, "\n") == 0 ||
+ strcmp (yytext, "\r") == 0) {
+ out = g_strconcat ("Error: ", str, " before end of line", NULL);
+ } else if (yytext[0] == '\0') {
out=g_strconcat("Error: ", str, " at end of input", NULL);
} else {
char *tmp = g_strdup(yytext);
g_assert(scope != CLASS_SCOPE);
- if(method == INIT_METHOD || method == CLASS_INIT_METHOD) {
+ if(method == INIT_METHOD ||
+ method == CLASS_INIT_METHOD ||
+ method == CONSTRUCTOR_METHOD ||
+ method == DISPOSE_METHOD ||
+ method == FINALIZE_METHOD) {
type = (Type *)node_new (TYPE_NODE,
"name", "void",
NULL);
} else
c_cbuf = NULL;
+ if (signal_name == NULL )
+ {
+ GString * buffer=g_string_new("");
+ g_string_printf(buffer, "\"%s\"", id);
+ signal_name = buffer->str;
+ g_string_free(buffer, FALSE);
+ }
node = node_new (METHOD_NODE,
"scope", scope,
"method", method,
"gtktypes:steal", gtktypes,
"flags:steal", flags,
"id:steal", id,
+ "signal_name:steal", signal_name,
"args:steal", funcargs,
"funcattrs:steal", funcattrs,
"onerror:steal", onerror,
above */
c_cbuf?FALSE:TRUE);
gtktypes = NULL;
+ signal_name = NULL;
funcargs = NULL;
-
funcattrs = NULL;
onerror = NULL;
defreturn = NULL;
"pointer", "*",
NULL);
- g_string_sprintf (get_cbuf,
- "\t%s%s val; "
- "g_object_get (G_OBJECT (self), \"%s\", "
- "&val, NULL); "
- "return val;\n",
- the_type->name,
- the_type->pointer ? the_type->pointer : "",
- var_name);
-
+ g_string_printf(get_cbuf,
+ "\t%s%s val; "
+ "g_object_get (G_OBJECT (self), \"%s\", "
+ "&val, NULL); "
+ "return val;\n",
+ the_type->name,
+ the_type->pointer ? the_type->pointer : "",
+ var_name);
+
typestack = g_list_prepend (typestack, node1);
typestack = g_list_prepend (typestack, node3);
"pointer", "*",
NULL);
- g_string_sprintf (set_cbuf,
- "\tg_object_set (G_OBJECT (self), "
- "\"%s\", val, NULL);\n",
- var_name);
+ g_string_printf(set_cbuf,
+ "\tg_object_set (G_OBJECT (self), "
+ "\"%s\", val, NULL);\n",
+ var_name);
typestack = g_list_prepend (typestack, node2);
typestack = g_list_prepend (typestack, node1);
const char *setcast = "";
char *to_free = NULL;
set_func = g_strdup_printf ("g_value_set_%s", prop->gtktype);
- g_strdown (set_func);
+ gob_strdown (set_func);
get_func = g_strdup_printf ("g_value_get_%s", prop->gtktype);
- g_strdown (get_func);
+ gob_strdown (get_func);
if (for_cpp) {
if (strcmp (prop->gtktype, "FLAGS") == 0) {
%token SIGNED UNSIGNED LONG SHORT INT FLOAT DOUBLE CHAR
%token <id> TOKEN NUMBER TYPETOKEN ARRAY_DIM SINGLE_CHAR
-%token <cbuf> CCODE ADCODE HTCODE PHCODE HCODE ACODE ATCODE STRING
+%token <cbuf> CCODE CTCODE ADCODE HTCODE PHCODE HCODE ACODE ATCODE STRING
%token <line> PUBLIC PRIVATE PROTECTED CLASSWIDE PROPERTY ARGUMENT
%token <line> VIRTUAL SIGNAL OVERRIDE
-%token <line> NICK BLURB MAXIMUM MINIMUM DEFAULT_VALUE ERROR FLAGS TYPE
+%token <line> NAME NICK BLURB MAXIMUM MINIMUM DEFAULT_VALUE ERROR FLAGS TYPE
%token <line> FLAGS_TYPE ENUM_TYPE PARAM_TYPE BOXED_TYPE OBJECT_TYPE
%%
nodes = g_list_append(nodes,node);
g_string_free($<cbuf>1,FALSE);
}
+ | CTCODE {
+ Node *node = node_new (CCODE_NODE,
+ "cctype", CT_CCODE,
+ "cbuf:steal", ($<cbuf>1)->str,
+ "line_no", ccode_line,
+ NULL);
+ nodes = g_list_append(nodes,node);
+ g_string_free($<cbuf>1,FALSE);
+ }
;
ccodes: ccodes ccode { ; }
"interfaces:steal", interfaces,
"chunk_size:steal", chunk_size,
"abstract", abstract,
+ "dynamic", dynamic,
NULL);
bonobo_object_class = NULL;
glade_xml = FALSE;
| '(' TOKEN ')' classflags {
if(strcmp($<id>2,"abstract") == 0) {
abstract = TRUE;
+ } else if(strcmp($<id>2,"dynamic") == 0) {
+ dynamic = TRUE;
} else {
yyerror(_("parse error"));
YYERROR;
| string { $<id>$ = $<id>1; }
;
-param_spec_value: NICK '=' string {
+param_spec_value: NAME '=' string {
+ ensure_property ();
+ node_set ((Node *)property,
+ "canonical_name:steal", gob_str_delete_quotes($<id>3),
+ NULL);
+ }
+ | NICK '=' string {
ensure_property ();
node_set ((Node *)property,
"nick:steal", $<id>3,
sigtype: TOKEN '(' tokenlist ')' {
gtktypes = g_list_prepend(gtktypes, debool ($<id>1));
}
+ | TOKEN STRING '(' tokenlist ')' {
+ gtktypes = g_list_prepend(gtktypes, debool ($<id>1));
+ signal_name=$<id>2;
+ }
;
tokenlist: tokenlist ',' TOKEN {