Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:26
erlang
2027-megaco-Types-and-spec-for-megaco-eval_digi...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2027-megaco-Types-and-spec-for-megaco-eval_digit_map-1-2.patch of Package erlang
From 8b2d7bb0ec56f63923cad5cda1fee6635e1292cc Mon Sep 17 00:00:00 2001 From: Micael Karlberg <bmk@erlang.org> Date: Tue, 2 Jan 2024 15:12:33 +0100 Subject: [PATCH 17/46] [megaco] Types and spec for megaco:eval_digit_map/1,2 OTP-18920 --- lib/megaco/doc/src/Makefile | 6 +- lib/megaco/doc/src/files.mk | 3 +- lib/megaco/doc/src/megaco.xml | 65 +++++++++++++----- lib/megaco/doc/src/megaco_digit_map.xml | 76 ++++++++++++++++++++++ lib/megaco/doc/src/ref_man.xml | 3 +- lib/megaco/doc/src/specs.xml | 1 + lib/megaco/src/app/megaco.erl | 37 ++++++++++- lib/megaco/src/engine/megaco_digit_map.erl | 12 +++- 8 files changed, 178 insertions(+), 25 deletions(-) create mode 100644 lib/megaco/doc/src/megaco_digit_map.xml diff --git a/lib/megaco/doc/src/Makefile b/lib/megaco/doc/src/Makefile index 23b38e6a63..15c0c97a87 100644 --- a/lib/megaco/doc/src/Makefile +++ b/lib/megaco/doc/src/Makefile @@ -47,6 +47,7 @@ XML_FILES = \ SPECS_FILES = \ $(SPECDIR)/specs_megaco.xml \ $(SPECDIR)/specs_megaco_encoder.xml \ + $(SPECDIR)/specs_megaco_digit_map.xml \ $(SPECDIR)/specs_megaco_sdp.xml \ $(SPECDIR)/specs_megaco_user.xml TOP_SPECS_FILE = specs.xml @@ -113,10 +114,12 @@ $(SPECDIR)/specs_megaco_udp.xml: # escript $(SPECS_EXTRACTOR) $(SPECS_FLAGS) \ # -o$(dir $@) -module megaco_user +$(HTMLDIR)/megaco.html: megaco.xml $(HTMLDIR)/megaco_architecture.html: megaco_architecture.xml $(HTMLDIR)/megaco_codec_meas.html: megaco_codec_meas.xml $(HTMLDIR)/megaco_codec_transform.html: megaco_codec_transform.xml $(HTMLDIR)/megaco_debug.html: megaco_debug.xml +$(HTMLDIR)/megaco_digit_map.html: megaco_digit_map.xml $(HTMLDIR)/megaco_encoder.html: megaco_encoder.xml $(HTMLDIR)/megaco_encode.html: megaco_encode.xml $(HTMLDIR)/megaco_examples.html: megaco_examples.xml @@ -125,10 +128,9 @@ $(HTMLDIR)/megaco_intro.html: megaco_intro.xml $(HTMLDIR)/megaco_mib.html: megaco_mib.xml $(HTMLDIR)/megaco_performance.html: megaco_performance.xml $(HTMLDIR)/megaco_run.html: megaco_run.xml -$(HTMLDIR)/megaco.html: megaco.xml +$(HTMLDIR)/megaco_sdp.html: megaco_sdp.xml $(HTMLDIR)/megaco_tcp.html: megaco_tcp.xml $(HTMLDIR)/megaco_transport_mechanisms.html: megaco_transport_mechanisms.xml $(HTMLDIR)/megaco_transport.html: megaco_transport.xml $(HTMLDIR)/megaco_udp.html: megaco_udp.xml $(HTMLDIR)/megaco_user.html: megaco_user.xml -$(HTMLDIR)/megaco_sdp.html: megaco_sdp.xml diff --git a/lib/megaco/doc/src/files.mk b/lib/megaco/doc/src/files.mk index 597f8d7739..5734cc1711 100644 --- a/lib/megaco/doc/src/files.mk +++ b/lib/megaco/doc/src/files.mk @@ -2,7 +2,7 @@ # %CopyrightBegin% # -# Copyright Ericsson AB 2001-2021. All Rights Reserved. +# Copyright Ericsson AB 2001-2024. 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. @@ -27,6 +27,7 @@ XML_REF3_FILES = \ megaco_codec_mstone1.xml \ megaco_codec_mstone2.xml \ megaco_codec_transform.xml \ + megaco_digit_map.xml \ megaco_edist_compress.xml \ megaco_encoder.xml \ megaco_flex_scanner.xml \ diff --git a/lib/megaco/doc/src/megaco.xml b/lib/megaco/doc/src/megaco.xml index 58e343538f..5c975139e7 100644 --- a/lib/megaco/doc/src/megaco.xml +++ b/lib/megaco/doc/src/megaco.xml @@ -4,7 +4,7 @@ <erlref> <header> <copyright> - <year>2000</year><year>2023</year> + <year>2000</year><year>2024</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -210,6 +210,50 @@ </desc> </datatype> + <datatype> + <name name="digit_map_value"/> + <!-- + <desc> + <p> + TBD! + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="digit_map_value"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="digit_map_kind"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="digit_map_letter"/> + <!-- + <desc> + <p> + <c><![CDATA[$0..$9 | $a..$k]]></c> + </p> + </desc> + --> + </datatype> + <datatype> <name name="property_parm"/> <!-- @@ -2112,24 +2156,9 @@ megaco_incr_timer() = #megaco_incr_timer{} </func> <func> - <name since="">eval_digit_map(DigitMap) -> {ok, MatchResult} | {error, Reason}</name> - <name since="">eval_digit_map(DigitMap, Timers) -> {ok, MatchResult} | {error, Reason}</name> + <name name="eval_digit_map" arity="1" clause_i="1" since=""/> + <name name="eval_digit_map" arity="2" clause_i="1" since=""/> <fsummary>Collect digit map letters according to the digit map</fsummary> - <type> - <v>DigitMap = #'DigitMapValue'{} | parsed_digit_map()</v> - <v>parsed_digit_map() = term()</v> - <v>ParsedDigitMap = term()</v> - <v>Timers = ignore() | reject()</v> - <v>ignore() = ignore | {ignore, digit_map_value()}</v> - <v>reject() = reject | {reject, digit_map_value()} | digit_map_value()</v> - <v>MatchResult = {Kind, Letters} | {Kind, Letters, Extra}</v> - <v>Kind = kind()</v> - <v>kind() = full | unambiguous</v> - <v>Letters = [letter()]</v> - <v>letter() = $0..$9 | $a .. $k</v> - <v>Extra = letter()</v> - <v>Reason = term()</v> - </type> <desc> <p>Collect digit map letters according to the digit map.</p> <p>When evaluating a digit map, a state machine waits for diff --git a/lib/megaco/doc/src/megaco_digit_map.xml b/lib/megaco/doc/src/megaco_digit_map.xml new file mode 100644 index 0000000000..1418dcda06 --- /dev/null +++ b/lib/megaco/doc/src/megaco_digit_map.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE erlref SYSTEM "erlref.dtd"> + +<erlref> + <header> + <copyright> + <year>2024</year><year>2024</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + 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. + + </legalnotice> + + <title>megaco_digit_map</title> + <prepared></prepared> + <responsible></responsible> + <docno></docno> + <approved></approved> + <checked></checked> + <date>2024-01-02</date> + <rev>%VSN%</rev> + <file>megaco_digit_map.xml</file> + </header> + <module since="">megaco_digit_map</module> + <modulesummary>Digit Map utility module.</modulesummary> + <description> + <p>This is a Digit Map utility module (types).</p> + </description> + + <datatypes> + <datatype> + <name name="digit_map_value"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="kind"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="letter"/> + <desc> + <p> + <c><![CDATA[$0..$9 | $a..$k]]></c> + </p> + </desc> + </datatype> + + </datatypes> + +</erlref> + diff --git a/lib/megaco/doc/src/ref_man.xml b/lib/megaco/doc/src/ref_man.xml index 5168e48dbd..070591c9c8 100644 --- a/lib/megaco/doc/src/ref_man.xml +++ b/lib/megaco/doc/src/ref_man.xml @@ -4,7 +4,7 @@ <application xmlns:xi="http://www.w3.org/2001/XInclude"> <header> <copyright> - <year>2000</year><year>2016</year> + <year>2000</year><year>2024</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -34,6 +34,7 @@ applications on top of the Megaco/H.248 protocol. </p> </description> <xi:include href="megaco.xml"/> + <xi:include href="megaco_digit_map.xml"/> <xi:include href="megaco_edist_compress.xml"/> <xi:include href="megaco_encoder.xml"/> <xi:include href="megaco_transport.xml"/> diff --git a/lib/megaco/doc/src/specs.xml b/lib/megaco/doc/src/specs.xml index 3e12934dd7..14393c70aa 100644 --- a/lib/megaco/doc/src/specs.xml +++ b/lib/megaco/doc/src/specs.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" ?> <specs xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="../specs/specs_megaco.xml"/> + <xi:include href="../specs/specs_megaco_digit_map.xml"/> <xi:include href="../specs/specs_megaco_encoder.xml"/> <xi:include href="../specs/specs_megaco_sdp.xml"/> <xi:include href="../specs/specs_megaco_user.xml"/> diff --git a/lib/megaco/src/app/megaco.erl b/lib/megaco/src/app/megaco.erl index 6b2addcf38..640300adab 100644 --- a/lib/megaco/src/app/megaco.erl +++ b/lib/megaco/src/app/megaco.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1999-2023. All Rights Reserved. +%% Copyright Ericsson AB 1999-2024. 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. @@ -110,6 +110,10 @@ transaction_reply/0, protocol_version/0, + digit_map_value/0, + digit_map_kind/0, + digit_map_letter/0, + property_parm/0, property_group/0, property_groups/0, @@ -174,7 +178,11 @@ segment_send | max_pdu_size. --type send_handle() :: term(). +-type send_handle() :: term(). + +-type digit_map_value() :: megaco_digit_map:digit_map_value(). +-type digit_map_kind() :: megaco_digit_map:kind(). +-type digit_map_letter() :: megaco_digit_map:letter(). -type property_parm() :: megaco_sdp:property_parm(). -type property_group() :: megaco_sdp:property_group(). @@ -634,9 +642,34 @@ parse_digit_map(DigitMapBody) -> %% Collect digit map letters according to the digit map %%----------------------------------------------------------------- +-spec eval_digit_map(DigitMap) -> {ok, MatchResult} | {error, Reason} when + DigitMap :: digit_map_value() | ParsedDigitMap, + ParsedDigitMap :: term(), + MatchResult :: {Kind, Letters} | {Kind, Letters, Extra}, + Kind :: digit_map_kind(), + Letters :: [digit_map_letter()], + Extra :: digit_map_letter(), + Reason :: term(). + eval_digit_map(DigitMap) -> megaco_digit_map:eval(DigitMap). +-spec eval_digit_map(DigitMap, Timers) -> + {ok, MatchResult} | {error, Reason} when + DigitMap :: digit_map_value() | ParsedDigitMap, + ParsedDigitMap :: term(), + Timers :: Ignore | Reject, + Ignore :: ignore | + {ignore, digit_map_value()}, + Reject :: reject | + {reject, digit_map_value()} | + digit_map_value(), + MatchResult :: {Kind, Letters} | {Kind, Letters, Extra}, + Kind :: digit_map_kind(), + Letters :: [digit_map_letter()], + Extra :: digit_map_letter(), + Reason :: term(). + eval_digit_map(DigitMap, Timers) -> megaco_digit_map:eval(DigitMap, Timers). diff --git a/lib/megaco/src/engine/megaco_digit_map.erl b/lib/megaco/src/engine/megaco_digit_map.erl index 820cb2179e..45a0fc7501 100644 --- a/lib/megaco/src/engine/megaco_digit_map.erl +++ b/lib/megaco/src/engine/megaco_digit_map.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2000-2022. All Rights Reserved. +%% Copyright Ericsson AB 2000-2024. 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. @@ -60,10 +60,20 @@ -export([parse/1, eval/1, eval/2, report/2, test/2]). % Public -export([test_eval/2]). % Internal +-export_type([ + digit_map_value/0, + kind/0, + letter/0 + ]). + -include_lib("megaco/src/app/megaco_internal.hrl"). -include("megaco_message_internal.hrl"). -include_lib("megaco/src/text/megaco_text_tokens.hrl"). +-type digit_map_value() :: #'DigitMapValue'{}. +-type kind() :: full | unambiguous. +-type letter() :: $0..$9 | $a .. $k. + -record(state_transition, {mode, next, cont}). -record(timers, {mode = state_dependent, -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor