AbtRecordGenerator fails to provide methods for accessing structures inside the type's own structure

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

AbtRecordGenerator fails to provide methods for accessing structures inside the type's own structure

Richard Sargent
Administrator
AbtRecordGenerator and AbtCompoundType>>#generateSelectorsWithOffset:fromCollection: are deficient.

1) If I have an AbtCompoundType with primitive type fields, the code generator correctly creates getters and setters for them.
2) If the AbtCompoundType contains fields which are also structures, the code generator recursively creates getters and setters for the primitive type fields inside the structure.
3) If the AbtCompoundType contains fields which are also structures, the code generator fails to create a getter method for the structure itself.

Example (pseudo-C):

struct {
    int a;
    struct {
        int b1;
    } b;
    union {
        int c1;
        float c2;
    } c;
    float d;
}

The code generator produces getters and setters for a, b1, c1, c2, and d. It produces nothing for b and c.

I understand it could be difficult, if not entirely impractical, to determine the appropriate subclass of OSPtr to send #address: to for use in such a getter method. While this would be the ideal solution, it would be an acceptable fallback to simply have the getter method return the value of OSPtr address: <x>. In such as case, it would be good if the method category could be used to distinguish these accessors from ones known to be complete and correct.


Has anyone encountered this and worked around it or built a working code generator?



Thanks,
Richard

--
You received this message because you are subscribed to the Google Groups "VA Smalltalk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To post to this group, send email to [hidden email].
Visit this group at http://groups.google.com/group/va-smalltalk.
For more options, visit https://groups.google.com/groups/opt_out.