aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2010-02-17 15:42:42 +0000
committerErlang/OTP <[email protected]>2010-02-17 15:42:42 +0000
commitaf08a7bed65d6ea1f6bb3546aab44096e6910942 (patch)
treee84bd04aca6a07aa8e2914b3996d572ab333f000 /lib
parentf584be53357613c61987e280806483d49f04e36b (diff)
parent9d247b1f12dcec885e361d61a738463dae3237b0 (diff)
downloadotp-af08a7bed65d6ea1f6bb3546aab44096e6910942.tar.gz
otp-af08a7bed65d6ea1f6bb3546aab44096e6910942.tar.bz2
otp-af08a7bed65d6ea1f6bb3546aab44096e6910942.zip
Merge branch 'tj/asn1_macro_prefix' into ccase/r13b04_dev
* tj/asn1_macro_prefix: Add support for prefixing macro names generated by the compiler OTP-8453 tj/asn1_macro_prefix
Diffstat (limited to 'lib')
-rw-r--r--lib/asn1/doc/src/asn1ct.xml22
-rw-r--r--lib/asn1/src/asn1ct_gen.erl11
2 files changed, 28 insertions, 5 deletions
diff --git a/lib/asn1/doc/src/asn1ct.xml b/lib/asn1/doc/src/asn1ct.xml
index 9c04956e86..8a0ae52c39 100644
--- a/lib/asn1/doc/src/asn1ct.xml
+++ b/lib/asn1/doc/src/asn1ct.xml
@@ -4,7 +4,7 @@
<erlref>
<header>
<copyright>
- <year>1997</year><year>2009</year>
+ <year>1997</year><year>2010</year>
<holder>Ericsson AB. All Rights Reserved.</holder>
</copyright>
<legalnotice>
@@ -13,12 +13,12 @@
compliance with the License. You should have received a copy of the
Erlang Public License along with this software. If not, it can be
retrieved online at http://www.erlang.org/.
-
+
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
the License for the specific language governing rights and limitations
under the License.
-
+
</legalnotice>
<title>asn1ct</title>
@@ -52,9 +52,11 @@
<v>Options = [Option| OldOption]</v>
<v>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</v>
+ driver | asn1config | undec_rest | {inline,OutputName} | inline |
+ {macro_name_prefix, Prefix} | {record_name_prefix, Prefix}</v>
<v>OldOption = ber | per</v>
<v>Reason = term()</v>
+ <v>Prefix = string()</v>
</type>
<desc>
<p>Compiles the ASN.1 module <c>Asn1module</c> and generates an
@@ -270,6 +272,18 @@ Binary = binary()
It is as <c>{inline,OutputName}</c>, but the output file gets the
default name of the source <c>.set.asn</c> file.</p>
</item>
+ <tag><c>{macro_name_prefix, Prefix}</c></tag>
+ <item>
+ <p>All macro names generated by the compiler are prefixed with
+ <c>Prefix</c>. This is useful when multiple protocols that contains
+ macros with identical names are included in a single module.</p>
+ </item>
+ <tag><c>{record_name_prefix, Prefix}</c></tag>
+ <item>
+ <p>All record names generated by the compiler are prefixed with
+ <c>Prefix</c>. This is useful when multiple protocols that contains
+ records with identical names are included in a single module.</p>
+ </item>
</taglist>
<p>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 b8440094bc..b9f6c46b53 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.