1
%%---------------------------------------------------------------------------
2
%% A clone of 'rec_adt' so as to test its combination with 'queue_adt'
3
%%---------------------------------------------------------------------------
4
-module(mixed_opaque_rec_adt).
6
-export([new/0, get_a/1, get_b/1, set_a/2, set_b/2]).
8
-record(rec, {a :: atom(), b = 0 :: integer()}).
10
-opaque rec() :: #rec{}.
13
new() -> #rec{a = gazonk, b = 42}.
15
-spec get_a(rec()) -> atom().
16
get_a(#rec{a = A}) -> A.
18
-spec get_b(rec()) -> integer().
19
get_b(#rec{b = B}) -> B.
21
-spec set_a(rec(), atom()) -> rec().
22
set_a(R, A) -> R#rec{a = A}.
24
-spec set_b(rec(), integer()) -> rec().
25
set_b(R, B) -> R#rec{b = B}.