thrift/lib/erl/include/oop.hrl

26 lines
773 B
Erlang
Raw Normal View History

%%% Copyright (c) 2007- Facebook
%%% Distributed under the Thrift Software License
%%%
%%% See accompanying file LICENSE or visit the Thrift site at:
%%% http://developers.facebook.com/thrift/
-define(CLASS(Obj), element(1, Obj)).
-define(DEFINE_ATTR(Attr), attr(This, get, Attr, _Value) -> This#?MODULE.Attr;
attr(This, set, Attr, Value) -> This#?MODULE{Attr=Value}
).
%%% static: use only if you're sure This is class ?MODULE and not a super/subclass
-define(ATTR(Attr), This#?MODULE.Attr).
%%% convenience for implementing inspect/1
%%% e.g. -> "foo=5"
-define(FORMAT_ATTR(Attr),
io_lib:write_atom(Attr) ++ "=" ++ io_lib:print(?ATTR(Attr))
).
-define(ATTR_DUMMY,
attr(dummy, dummy, dummy, dummy) ->
throw(dummy_attr_used)
).