aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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.