axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sérgio Gomes" <sgo...@google.com>
Subject Code generation and enumerations
Date Wed, 23 Apr 2008 13:53:57 GMT
Hi Dimuthu,

I'm developing the patch right now (I'm now able to generate the enum
declaration) and I found that I have two options to proceed:

1 - Add specialized getters/setters for enumerations, while keeping
the base type as a string. They would be named something like
adb_<property>_get_<property>_enum and
adb_<property>_set_<property>_enum. I'd have to do the conversion
between the C enum struct and the stored string within the function
(basically with a big if/else chain). This solution would preserve
backwards compatibility and wouldn't require any changes to the java
code, just XSL changes.

2 - Completely change support for enumerations, by storing them as int
and changing the setters/getters to use the C enum structure instead.
This would break backwards compatibility and require java writer
changes (not exactly sure which files), but would be much more elegant
in terms of generated C code.

Have you got any thoughts on this?

Cheers,
Sérgio

PS - I switched to my work email, that will make things easier for me.

---
On Sun, Apr 13, 2008 at 1:05 PM, Sérgio Gomes <sergiomdgomes@gmail.com> wrote:
> Hi Dimuthu,
>
>  Thanks for getting back to me. I'll give that patch a try next week,
>  I'll let you know.
>
>  Cheers,
>  Sérgio
>
>  ---
>
>
> On Fri, Apr 11, 2008 at 9:21 PM, Dimuthu Gamage <dimuthuc@gmail.com> wrote:
>  > Hi Sérgio,
>  >
>  >  Yea, you are correct on this. We should be able to declare them in an
>  >  enum to provide interger constants in the API. It should be trivial.
>  >  Why not you try that and propose a patch?
>  >
>  >  If you like to try you have to checkout the axis2/java source code
>  >  from https://svn.apache.org/repos/asf/webservices/axis2/trunk/java
>  >
>  >  and you may need to edit following files
>  >  c adb templates from
>  >  modules/adb-codegen/src/org/apache/axis2/schema/template/ in the
>  >  source tree
>  >  c adb writer class from
>  >  modules/adb-codegen/src/org/apache/axis2/schema/writer/CStructWriter.java
>  >  in the source tree
>  >
>  >  Thanks
>  >  Dimuthu
>  >
>  >
>  >
>  >  On Wed, Apr 9, 2008 at 8:23 PM, Sérgio Gomes <sergiomdgomes@gmail.com>
wrote:
>  >  > Hi there,
>  >  >
>  >  >  Yet another possible code generator issue. There's an enumeration in
>  >  >  the WSDL I'm using:
>  >  >
>  >  >  <simpleType name="DayOfWeek" >
>  >  >    <restriction base="xsd:string">
>  >  >       <enumeration value="Monday"/>
>  >  >       <enumeration value="Tuesday"/>
>  >  >       <enumeration value="Wednesday"/>
>  >  >       <enumeration value="Thursday"/>
>  >  >       <enumeration value="Friday"/>
>  >  >       <enumeration value="Saturday"/>
>  >  >       <enumeration value="Sunday"/>
>  >  >    </restriction>
>  >  >  </simpleType>
>  >  >
>  >  >  And the setter that gets generated for it is:
>  >  >
>  >  >  axis2_status_t AXIS2_CALL
>  >  >  adb_DayOfWeek_set_DayOfWeek(
>  >  >    adb_DayOfWeek_t* _DayOfWeek,
>  >  >    const axutil_env_t *env,
>  >  >    const axis2_char_t*  arg_DayOfWeek);
>  >  >
>  >  >  The setter is referencing a structure of the same type, so how can I
>  >  >  create, say, a "Monday" object? Shouldn't the setter be receiving
>  >  >  something like an integer instead, which you could get from a C enum
>  >  >  with the several options?
>  >  >
>  >  >  Cheers,
>  >  >  Sérgio
>  >  >
>  >  >  ---------------------------------------------------------------------
>  >  >  To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>  >  >  For additional commands, e-mail: axis-c-user-help@ws.apache.org
>  >  >
>  >  >
>  >
>  >  ---------------------------------------------------------------------
>  >  To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
>  >  For additional commands, e-mail: axis-c-user-help@ws.apache.org
>  >
>  >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org


Mime
View raw message