enum Numberz { ONE = 1, TWO, THREE, FIVE = 5, SIX, EIGHT = 8 } typedef i64 UserId struct Xtruct { string string_thing = 0, byte byte_thing = 1, i32 i32_thing = 3, i64 i64_thing = 5 } struct Xtruct2 { byte byte_thing, Xtruct struct_thing, i32 i32_thing } struct Insanity { map userMap = 0, list xtructs = 1 } exception Exception { u32 errorCode, string message } exception Xception { u32 errorCode, Xtruct struct_thing } struct Empty {} struct OneField { Empty field } service ThriftTest { void testVoid(), string testString(string thing = 0), byte testByte(byte thing = 0), i32 testI32(i32 thing = 0), i64 testI64(i64 thing = 0), Xtruct testStruct(Xtruct thing = 0), Xtruct2 testNest(Xtruct2 thing = 0), map testMap(map thing = 0), set testSet(set thing = 0), list testList(list thing = 0), Numberz testEnum(Numberz thing = 0), UserId testTypedef(UserId thing = 0), map> testMapMap(i32 hello = 0), /* So you think you've got this all worked, out eh? */ map> testInsanity(Insanity argument = 0), /* Multiple parameters */ Xtruct testMulti(byte arg0, i32 arg1, u64 arg2, map arg3, Numberz arg4, UserId arg5), /* Exception specifier */ Xtruct testException(string arg) throws(Exception err1), /* Multiple exceptions specifier */ Xtruct testMultiException(string arg0, string arg1) throws(Exception err1=1, Xception err2) }