Handle enums with non-zero null values correctly (fixes the test).
authorFrantišek Dvořák <valtri@civ.zcu.cz>
Tue, 26 Aug 2008 17:40:13 +0000 (17:40 +0000)
committerFrantišek Dvořák <valtri@civ.zcu.cz>
Tue, 26 Aug 2008 17:40:13 +0000 (17:40 +0000)
Fix enum name conflicts in C++ API code.

org.glite.lb.common/interface/Event.h.T
org.glite.lb.common/src/events.c.T

index b6b7285..1491c39 100644 (file)
@@ -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{
index f69ecc3..0d9c69c 100644 (file)
@@ -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\]); i++) 
-               if (strcasecmp(${char}\[i\],name) == 0) return ($enum) i;
+               if (strcasecmp(${char}\[i\],name) == 0) return ($enum) i + ($null);
        return ($enum) EDG_WLL_${tu}UNDEFINED;
 \}
 \n};
@@ -256,8 +258,8 @@ $enum edg_wll_StringTo${c}(const char *name)
  */
 char *edg_wll\_${c}ToString($enum code) 
 \{
-       if ((int)code < 0 || code >= 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};