%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2010-2015. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. %% You may obtain a copy of the License at %% %% http://www.apache.org/licenses/LICENSE-2.0 %% %% Unless required by applicable law or agreed to in writing, software %% distributed under the License is distributed on an "AS IS" BASIS, %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %% See the License for the specific language governing permissions and %% limitations under the License. %% %% %CopyrightEnd% %% %% %% Macros used when building abstract code. %% %% Generated functions that could have no generated clauses will have %% a trailing ?BADARG clause that should never execute as called %% by diameter. -define(BADARG(N), {?clause, [?VAR('_') || _ <- lists:seq(1,N)], [], [?APPLY(erlang, error, [?ATOM(badarg)])]}). -define(ANNO(L), erl_anno:new(L)). %% Form tag with line number. -define(F(T), T, ?ANNO(?LINE)). %% Yes, that's right. The replacement is to the first unmatched ')'. -define(attribute, ?F(attribute)). -define(clause, ?F(clause)). -define(function, ?F(function)). -define(call, ?F(call)). -define(cons, ?F(cons)). -define('fun', ?F('fun')). -define(generate, ?F(generate)). -define(lc, ?F(lc)). -define(match, ?F(match)). -define(remote, ?F(remote)). -define(record, ?F(record)). -define(record_field, ?F(record_field)). -define(record_index, ?F(record_index)). -define(tuple, ?F(tuple)). -define(ATOM(T), {atom, ?ANNO(?LINE), T}). -define(INTEGER(N), {integer, ?ANNO(?LINE), N}). -define(VAR(V), {var, ?ANNO(?LINE), V}). -define(NIL, {nil, ?ANNO(?LINE)}). -define(CALL(F,A), {?call, ?ATOM(F), A}). -define(APPLY(M,F,A), {?call, {?remote, ?ATOM(M), ?ATOM(F)}, A}). -define(FIELDS(Fs), [{?record_field, ?ATOM(F), V} || {F,V} <- Fs]). %% Literal term. -define(TERM(T), erl_parse:abstract(T, [ {line, ?LINE}, {encoding, fun diameter_codegen:is_printable_ascii/1}])).