| %%% 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) | 
 | ). |