When I've needed to do something like this, and there is a cycle (so I
can't include another file, or declare things in order), I've just
been declaring a stub. It works for me in ruby, and I just tried it in
java and the generated code looked decent (but I didn't try compililng
it).
struct B {}
struct A {
10: List<B> myBList
}
struct B{
10: A myA
}
Does this work in other languages, or do you end up with a situation
where some classes are multiply / incorrectly defined? If so, is it
something you can fix with some sed?
-Ben
On May 26, 2009, at 10:59 PM, Kristinn Örn Sigurðsson wrote:
Hi all.
I'm having a little trouble with dependencies in Thrift. See this
for an
example:
struct TAccount {
1: i32 id,
2: string email,
3: string name,
4: string password,
5: list<TPhone> phones,
6: string address,
7: string postalCode,
8: string city,
9: string country,
10: list<TCritic> critics
}
struct TCritic {
1: i32 id,
2: TAccount author,
3: i32 rating,
4: string text
}
struct TCompany {
1: i32 id,
2: string name,
3: string email,
4: string phone,
5: string address,
6: string postalCode,
7: string city,
8: string country,
9: list<TAccount> employees,
10: list<TCritic> critics
}
This is just a partial copy/paste. Some structs aren't shown here.
This doesn't compile into Thrift files. The problem here is that
TAccount
depends on TCritic and TCritic depends on TAccount. The thing is that
structs can't see other structs that are defined after (below) them.
Is
there a workaround for this?
Thanks in advance.
Regards,
Kristinn.