From 53306bdc3ef4e2e2a664b3f9deb3bb5ff8655d35 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Sat, 30 Oct 2004 21:28:36 +0000 Subject: [PATCH] now 'defined' as variable name is fixed git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6573 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Examples/test-suite/preproc.i | 16 ++++++++++++---- Examples/test-suite/python/preproc_runme.py | 10 ++++++++++ Source/Preprocessor/cpp.c | 21 +++++++++++---------- 3 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 Examples/test-suite/python/preproc_runme.py diff --git a/Examples/test-suite/preproc.i b/Examples/test-suite/preproc.i index 3507fba49..3ef400f9b 100644 --- a/Examples/test-suite/preproc.i +++ b/Examples/test-suite/preproc.i @@ -270,9 +270,17 @@ inline const char* mangle ## #@__VA_ARGS__ () { #define three THREE(42) +#if defined(one) +/* hello */ +#else +/* chiao */ +#endif; + +#ifdef SWIGRUBY +%rename(ddefined) defined; +#endif %inline %{ -int endif = 0; -int define = 0; -/* this is not working */ -/* int defined = 0; */ +const int endif = 1; +const int define = 1; +const int defined = 1; %} diff --git a/Examples/test-suite/python/preproc_runme.py b/Examples/test-suite/python/preproc_runme.py new file mode 100644 index 000000000..3bf9ece09 --- /dev/null +++ b/Examples/test-suite/python/preproc_runme.py @@ -0,0 +1,10 @@ +import preproc + +if preproc.endif != 1: + raise RuntimeError + +if preproc.define != 1: + raise RuntimeError + +if preproc.defined != 1: + raise RuntimeError diff --git a/Source/Preprocessor/cpp.c b/Source/Preprocessor/cpp.c index 5db8efc78..414694059 100644 --- a/Source/Preprocessor/cpp.c +++ b/Source/Preprocessor/cpp.c @@ -27,7 +27,6 @@ static int ignore_missing = 0; static int import_all = 0; /* Follow all includes, but as %import statements */ static int imported_depth = 0; /* Depth of %imported files */ static int single_include = 1; /* Only include each file once */ -static int replace_defined = 1; static Hash *included_files = 0; static List *dependencies = 0; @@ -834,31 +833,33 @@ Preprocessor_replace(DOH *s) /* We found the end of a valid identifier */ Ungetc(c,s); /* See if this is the special "defined" macro */ - if (replace_defined && Cmp(id,"defined") == 0) { - DOH *args; + if (Cmp(id,"defined") == 0) { + DOH *args = 0; /* See whether or not a paranthesis has been used */ skip_whitespace(s,0); c = Getc(s); if (c == '(') { Seek(s,-1,SEEK_CUR); args = find_args(s); - } else { - DOH *arg = 0; + } else if (isidchar(c)) { + DOH *arg = NewString(""); args = NewList(); - arg = NewString(""); - if (isidchar(c)) Putc(c,arg); - while ((c = Getc(s)) != EOF) { + Putc(c,arg); + while (((c = Getc(s)) != EOF)) { if (!isidchar(c)) { Seek(s,-1,SEEK_CUR); break; } Putc(c,arg); } - Append(args,arg); + if (Len(arg)) Append(args,arg); Delete(arg); + } else { + Seek(s,-1,SEEK_CUR); } if ((!args) || (!Len(args))) { - Swig_error(Getfile(id),Getline(id),"No arguments given to defined()\n"); + /* This is not a defined() macro. */ + Printf(ns,"%s",id); state = 0; break; }