From 03b75e9a5811d20534c5993d69495d04945e5e01 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Tue, 26 Aug 2008 17:40:13 +0000 Subject: [PATCH] Handle enums with non-zero null values correctly (fixes the test). Fix enum name conflicts in C++ API code. --- org.glite.lb.common/interface/Event.h.T | 6 +++++- org.glite.lb.common/src/events.c.T | 8 +++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/org.glite.lb.common/interface/Event.h.T b/org.glite.lb.common/interface/Event.h.T index b6b7285..1491c39 100644 --- a/org.glite.lb.common/interface/Event.h.T +++ b/org.glite.lb.common/interface/Event.h.T @@ -103,6 +103,7 @@ public: my $ut; my $utf; my $fc; + my $fn; if ($t eq '_common_') { $ff = $f; $ut = ''; @@ -117,10 +118,13 @@ public: $utf = ucfirst $t; $fc = $event->getFieldComment($f); } + $fn = ucfirst $ff->{name}; + my @a = ($fn =~ /_(.)/g); + while (@a) { my $c = uc shift @a; $fn =~ s/_(.)/$c/; } if ($ff->{codes}) { gen qq{ ! /** $fc */ -! enum ${utf}Code \{ +! enum ${utf}${fn}Code \{ }; for (@{$ff->{codes}}) { gen qq{ diff --git a/org.glite.lb.common/src/events.c.T b/org.glite.lb.common/src/events.c.T index f69ecc3..0d9c69c 100644 --- a/org.glite.lb.common/src/events.c.T +++ b/org.glite.lb.common/src/events.c.T @@ -162,6 +162,7 @@ for ($event->getFieldsOrdered) { my $c = "${fn}"; # code my $enum = "enum edg_wll\_$c"; # enum name my $char = "edg_wll\_${fn}Names"; # char name + my $null = $f->{null} ? $f->{null} : 0; # static const char: gen qq{ /** @@ -218,6 +219,7 @@ for my $t (sort { $event->{order}->{$a} <=> $event->{order}->{$b} } my $c = "$t${fn}"; # code my $enum = "enum edg_wll\_$c"; # enum name my $char = "edg_wll\_$t${fn}Names"; # char name + my $null = $f->{null} ? $f->{null} : 0; # static const char: gen qq{ /** @@ -243,7 +245,7 @@ $enum edg_wll_StringTo${c}(const char *name) unsigned int i; for (i=1; i= sizeof($char)/sizeof(${char}\[0\])) return NULL; - return strdup(${char}\[code\]); + if ((int)code - ($null) < 0 || code - ($null) >= sizeof($char)/sizeof(${char}\[0\])) return NULL; + return strdup(${char}\[code - ($null)\]); \} \n\n}; -- 1.8.2.3