From 0d678283ad81dd0964b977669b07e68260c84b45 Mon Sep 17 00:00:00 2001 From: Olly Betts Date: Sun, 24 Sep 2006 22:10:03 +0000 Subject: [PATCH] Replace "::" with "__" in the module name when using it for a C macro. Fixes bug #1528354. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@9353 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- Source/Modules/ruby.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Source/Modules/ruby.cxx b/Source/Modules/ruby.cxx index a1cb09b3e..f792c8441 100644 --- a/Source/Modules/ruby.cxx +++ b/Source/Modules/ruby.cxx @@ -454,9 +454,13 @@ public: set_module(Char(Getattr(n,"name"))); if (directorsEnabled()) { + /* Build a version of the module name for use in a C macro name. */ + String * module_macro = Copy(module); + Replaceall(module_macro, "::", "__"); + Swig_banner(f_directors_h); - Printf(f_directors_h, "#ifndef SWIG_%s_WRAP_H_\n", module); - Printf(f_directors_h, "#define SWIG_%s_WRAP_H_\n\n", module); + Printf(f_directors_h, "#ifndef SWIG_%s_WRAP_H_\n", module_macro); + Printf(f_directors_h, "#define SWIG_%s_WRAP_H_\n\n", module_macro); Printf(f_directors_h, "namespace Swig {\n"); Printf(f_directors_h, " class Director;\n"); Printf(f_directors_h, "}\n\n"); @@ -466,6 +470,8 @@ public: Printf(f_directors, " * C++ director class methods\n"); Printf(f_directors, " * --------------------------------------------------- */\n\n"); Printf(f_directors, "#include \"%s\"\n\n", Swig_file_filename(outfile_h)); + + Delete(module_macro); } Printf(f_header,"#define SWIG_init Init_%s\n", feature);