You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@thrift.apache.org by Martin Ritchie <ri...@apache.org> on 2010/11/19 04:25:07 UTC
Struct definition : self-referencing structs and struct inheritance.
Hi I'm investigating the possibility of using Thrift however, I
currently have the need for two things that I don't think Thrift
currently supports: self referencing structs and struct inheritance.
The type of data I'm trying to serialise is a tree so Type A contains
a list of A.
However A also has a tree of sub-types A->B->C, A->D etc.
Ideally I'd like to represent this in thrift as something like:
struct A
{
1: i32 id,
2: list<A> children
}
struct B extends A
{
1:i32 extraField
}
Apologies if this has previously been discussed. Is this something
that was ruled out? Is anyone interested and/or working on this
already?
Regards
Martin
--
Martin Ritchie
Re: Struct definition : self-referencing structs and struct inheritance.
Posted by Bryan Duxbury <br...@rapleaf.com>.
The short answer is that many people would like this feature, but we've
decided against it due to the resulting complexity in some languages like
C++.
To approximate the first struct, your best bet is to move the children thing
up a level:
struct A {
1: i32 id
}
struct AWithChildren {
1: A a;
2: list<A> children;
}
And instead of inheritance, you can always fall back on composition.
-Bryan
On Thu, Nov 18, 2010 at 7:25 PM, Martin Ritchie <ri...@apache.org> wrote:
> Hi I'm investigating the possibility of using Thrift however, I
> currently have the need for two things that I don't think Thrift
> currently supports: self referencing structs and struct inheritance.
>
> The type of data I'm trying to serialise is a tree so Type A contains
> a list of A.
> However A also has a tree of sub-types A->B->C, A->D etc.
>
> Ideally I'd like to represent this in thrift as something like:
>
> struct A
> {
> 1: i32 id,
> 2: list<A> children
> }
>
> struct B extends A
> {
> 1:i32 extraField
> }
>
> Apologies if this has previously been discussed. Is this something
> that was ruled out? Is anyone interested and/or working on this
> already?
>
> Regards
>
> Martin
>
> --
> Martin Ritchie
>