From 9d247b1f12dcec885e361d61a738463dae3237b0 Mon Sep 17 00:00:00 2001 From: Tomas Johansson Date: Thu, 4 Feb 2010 10:34:01 +0100 Subject: Add support for prefixing macro names generated by the compiler This is useful when multiple protocols that contains macros with identical names are included in a single module. Add the missing record_name_prefix compiler option to the documentation. --- lib/asn1/doc/src/asn1ct.xml | 16 +++++++++++++++- lib/asn1/src/asn1ct_gen.erl | 11 ++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/asn1/doc/src/asn1ct.xml b/lib/asn1/doc/src/asn1ct.xml index 9c04956e86..114578b1b4 100644 --- a/lib/asn1/doc/src/asn1ct.xml +++ b/lib/asn1/doc/src/asn1ct.xml @@ -52,9 +52,11 @@ Options = [Option| OldOption] Option = ber_bin | per_bin | uper_bin | der | compact_bit_string | noobj | {n2n,EnumTypeName} |{outdir,Dir} | {i,IncludeDir} | optimize | - driver | asn1config | undec_rest | {inline,OutputName} | inline + driver | asn1config | undec_rest | {inline,OutputName} | inline | + {macro_name_prefix, Prefix} | {record_name_prefix, Prefix} OldOption = ber | per Reason = term() + Prefix = string()

Compiles the ASN.1 module Asn1module and generates an @@ -270,6 +272,18 @@ Binary = binary() It is as {inline,OutputName}, but the output file gets the default name of the source .set.asn file.

+ {macro_name_prefix, Prefix} + +

All macro names generated by the compiler are prefixed with + Prefix. This is useful when multiple protocols that contains + macros with identical names are included in a single module.

+
+ {record_name_prefix, Prefix} + +

All record names generated by the compiler are prefixed with + Prefix. This is useful when multiple protocols that contains + records with identical names are included in a single module.

+

Any additional option that is applied will be passed to the final step when the generated .erl file is compiled. diff --git a/lib/asn1/src/asn1ct_gen.erl b/lib/asn1/src/asn1ct_gen.erl index fefb92bb34..f0f253be70 100644 --- a/lib/asn1/src/asn1ct_gen.erl +++ b/lib/asn1/src/asn1ct_gen.erl @@ -1357,7 +1357,8 @@ pgen_hrltypes(Erules,Module,[H|T],NumRecords) -> %% Generates a macro for value Value defined in the ASN.1 module gen_macro(Value) when is_record(Value,valuedef) -> - emit({"-define('",Value#valuedef.name,"', ", + Prefix = get_macro_name_prefix(), + emit({"-define('",Prefix,Value#valuedef.name,"', ", {asis,Value#valuedef.value},").",nl}). %% Generate record functions ************** @@ -2064,3 +2065,11 @@ get_record_name_prefix() -> {value,{_,Prefix}} -> Prefix end. + +get_macro_name_prefix() -> + case lists:keysearch(macro_name_prefix,1,get(encoding_options)) of + false -> + ""; + {value,{_,Prefix}} -> + Prefix + end. -- cgit v1.2.1