From: David Reiss Date: Mon, 30 Aug 2010 22:05:25 +0000 (+0000) Subject: erlang: Add a more detailed spec for thrift_protocol:read X-Git-Tag: 0.5.0~129 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=1cb979b3d0a9163adf60dc08b311964af53dfa15;p=common%2Fthrift.git erlang: Add a more detailed spec for thrift_protocol:read git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@990976 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/erl/include/thrift_protocol.hrl b/lib/erl/include/thrift_protocol.hrl index 201badea..f85f4552 100644 --- a/lib/erl/include/thrift_protocol.hrl +++ b/lib/erl/include/thrift_protocol.hrl @@ -57,6 +57,10 @@ | double | string . +-type tprot_cont_tag() :: {list, _Type} + | {map, _KType, _VType} + | {set, _Type} + . -endif. diff --git a/lib/erl/include/thrift_protocol_impl.hrl b/lib/erl/include/thrift_protocol_impl.hrl index fe9d20d3..92f3a003 100644 --- a/lib/erl/include/thrift_protocol_impl.hrl +++ b/lib/erl/include/thrift_protocol_impl.hrl @@ -27,6 +27,7 @@ -spec write(state(), term()) -> ok | {error, _Reason}. +%% NOTE: Keep this in sync with thrift_protocol:read. -spec read (state(), tprot_empty_tag()) -> ok | {error, _Reason}; (state(), tprot_header_tag()) -> tprot_header_val() | {error, _Reason}; diff --git a/lib/erl/src/thrift_protocol.erl b/lib/erl/src/thrift_protocol.erl index 3ccb4eeb..a207bca5 100644 --- a/lib/erl/src/thrift_protocol.erl +++ b/lib/erl/src/thrift_protocol.erl @@ -115,7 +115,14 @@ read(IProto, {struct, Structure}, Tag) RTuple2 = read_struct_loop(IProto, SDict, RTuple1), {ok, RTuple2}. --spec read(#protocol{}, term()) -> term(). + +%% NOTE: Keep this in sync with thrift_protocol_impl:read +-spec read + (#protocol{}, {struct, _Info}) -> {ok, tuple()} | {error, _Reason}; + (#protocol{}, tprot_cont_tag()) -> {ok, term()} | {error, _Reason}; + (#protocol{}, tprot_empty_tag()) -> ok | {error, _Reason}; + (#protocol{}, tprot_header_tag()) -> tprot_header_val() | {error, _Reason}; + (#protocol{}, tprot_data_tag()) -> {ok, term()} | {error, _Reason}. read(IProto, {struct, {Module, StructureName}}) when is_atom(Module), is_atom(StructureName) ->