aboutsummaryrefslogtreecommitdiffstats
path: root/lib/asn1/src/asn1ct.erl
AgeCommit message (Collapse)Author
2017-05-04Update copyright yearRaimo Niskanen
2017-03-14Clean up commentsBjörn Gustavsson
* Remove out-commented code * Fix obvious typos and bad grammar * Adhere to the conventions for when to use "%" and "%%".
2017-03-14Remove the 'debug' optionBjörn Gustavsson
The debug option no longer serves any useful purpose.
2017-02-16Package abstract code in a record for code generationBjörn Gustavsson
For now, do the packaging before call asn1ct_gen:pgen().
2017-02-06Teach the ASN.1 compiler the 'maps' optionBjörn Gustavsson
When the 'maps' option is given, the SEQUENCE and SET types are represented as maps instead of as records. Optional and default values must be not be given as asn1_NOVALUE or asn1_DEFAULT in a map passed to the M:encode/2 function; they must be omitted from the map. Similarly, when decoding missing values will be omitted from the map. No .hrl files will be generated when the 'maps' options is used. That means values in an ASN.1 module must be retrieved by calling the appropriate function in generated module. Since we one day hope to get rid of the options 'compact_bit_string', 'legacy_bit_string', and 'legacy_erlang_types', we will not allow them to be combined with the 'maps' option.
2017-02-03Clean up filtering of optionsBjörn Gustavsson
2017-02-03Refactor code generation optionsBjörn Gustavsson
Most options to the code generation pass are passed through the process dictionary. At the same time, an Erule or Erules argument is passed to most code generation functions. The Erule argument is only an atom indicating the encoding rules ('ber', 'per', or 'uper'). Introduce a new record #gen{} to contain code generation options and parameters. Pass it as the Erule argument (renaming it to Gen in functions that we will have to touch anyway). In this commit, eliminate the use of the variable 'encoding_options' in the process dictionary.
2017-01-13asn1: Remove deprecated functionsBjörn Gustavsson
Remove the entire asn1rt module. All functions in it were deprecated in OTP 17. In asn1ct, remove the deprecated functions asn1ct:encode/3 and asn1ct:decode/3. Also remove asn1ct:encode/2, which has not been formally deprecated but is undocumented.
2016-08-12Support 'make -j' when compiling ASN.1 modulesBjörn Gustavsson
When attempting to build multiple ASN.1 modules in parallel (e.g. by running 'make -j'), the ASN.1 compiler could crash because the names of the .asn1db files clashed. For example, if A.asn1 and B.asn1 both import from C.asn1, the compiler would write a C.asn1db file when compiling A.asn1 and when compiling B.asn1. We can avoid this problem if the compiler only writes the module's own .asn1db file. That is, when compiling A.asn1, the compiler would only write A.asn1db, not C.asn1db. Also, make sure that we make the write atomic by first writing to a temporary file that is then renamed.
2016-03-15update copyright-yearHenrik Nord
2015-06-18Change license text to APLv2Bruce Yinhe
2015-01-12asn1ct, asn1ct_parser2: Refactor the upper levels of error handlingBjörn Gustavsson
Responsibilities for parse error handling were split between asn1ct and asn1ct_parser2 in a confusing way. Let asn1ct_parser2 return structured_error tuples in the same way as the check pass.
2015-01-12Fix object set duplication testBjörn Gustavsson
Wrong fields in the record where checked when sorting, which caused duplicate objects to exist in constructed object sets and later caused an error.
2014-09-01Teach the ASN.1 compiler the parse optionBjörn Gustavsson
2014-02-28Clean up reporting of errors in IMPORTSBjörn Gustavsson
2014-02-21Deprecate asn1 functionsBjörn Gustavsson
Those asn1 functions are no longer needed because they all have better alternatives.
2014-01-31asn1ct: Silence dialyzer warnings for unmatched returnsBjörn Gustavsson
2014-01-24Add legacy_erlang_typesBjörn Gustavsson
2014-01-20Factor out printing of verbose messagesBjörn Gustavsson
2013-09-03Clean up handling of .asn1db filesBjörn Gustavsson
There is (differenct) code for reading .asn1db files both in asn1ct and asn1_db. Consolidate the reading into one routine in asn1db. Another problem is that the encoding rule that the .asn1db file was created for is not in the .asn1db, but only in the generated Erlang module. It is much easier and safer to put the encoding rule in the .asn1db file itself. We will also put the version number of the asn1 application into the file, to ensure that we don't use an old .asn1db file that could potentially be incompatible.
2013-05-31Clean up checking of values for ENUMERATEDsBjörn Gustavsson
Unify the code for checking an enumeration value named in a DEFAULT and in an ENUMERATED value. There is no need to handle those cases differently. That also will also make sure that the following works: E ::= ENUMERATED { x, ..., y } e E ::= x (Extensible ENUMERATEDs were not handled when defining values.) Always generate an error when an unknown enumeration value is given (used in a DEFAULT, a message would be printed, but the compilation would succeed). Also make sure that we always include the line number for the incorrect enumeration. Write a new test case and remove the extremely rudimentary value_bad_enum_test/1 test case.
2013-05-31Introduce a new mechanism for structured error handlingBjörn Gustavsson
2013-05-31asn1ct: Refactor running of compiler passesBjörn Gustavsson
As a preparation for future clean up of the error handling, we will need to take control on how how asn1ct runs the different compiler passes.
2013-05-31asn1ct, asn1ct_gen: Eliminate unused exportsBjörn Gustavsson
Stop export functions that are not called from outside their module. If the functions are not used at all, remove the functions too. The unused exports were found by running: xref:start(s). xref:add_application(s, code:lib_dir(asn1)). io:format("~p\n", [xref:analyze(s, exports_not_used)]).
2013-01-25Update copyright yearsBjörn-Egil Dahlberg
2013-01-23By default, encode BIT STRING to bitstringsBjörn Gustavsson
Add the option 'legacy_bit_string' to decode to the old list format.
2013-01-22Remove the 'inline' and '{inline,OutputFile}' optionsBjörn Gustavsson
2013-01-22Add run-time library templates and use themBjörn Gustavsson
The template modules (asn1rtt_*.erl) are based on the existing run-time modules, but with some simplifications and improvements, for example: The run-time functions for BER encoding took a Constraint argument which was not used. It has been eliminated, along with the unused StringType argument for the encode_restricted_string function. The Range argument for decode_enumerated() has been dropped since it was not used.
2012-12-18Make .abs file consultableBjörn Gustavsson
2012-11-23Remove obsolete back-ends and simplify the optionsBjörn Gustavsson
It is time to clean up the mess of back-ends. Remove all the obsolete back-ends and simplify the options used to select them. New Option Old Equivalent ---------- -------------- ber ber_bin,optimize,nif per per,optimize,nif uper uper_bin The old options will still be recognized and translated to the new options, but will also print a warning. That implies that deprecated features that only are implemented in the old 'ber' back-end will no longer work (e.g. the {Typename,Value} notation). Also make the return type for the generated encode/2 function consistent. It used to be a binary for per and uper, and an iolist for ber. Always make it a binary.
2012-11-22Remove the obsolete and deprecated 'keyed_list' optionBjörn Gustavsson
The 'keyed_list' was only supported for the 'ber' and 'ber_bin' backends and has been undocumented for a long time. Also remove the note in the documentation about the feature.
2012-08-28Remove Dialyzer warningsKenneth Lundin
2012-03-27Correct handling of INTEGER (1..4 | 8 | 10 | 20)Kenneth Lundin
2012-02-28[asn1] Make tables and processes unnamedAdam Lindberg
- Refactor and clean up asn1_db process - Remove unused stop function in asn1ct.erl - Remove infinite loop possibilites in asn1ct_check.erl - test/1,2,3 now run in separate process - Update documentation for new test options
2012-02-28[asn1] Abstract out table access to new moduleAdam Lindberg
All table access is now performed in a separate module. This will allow changes to how ETS is handled by changing only this module. Note that the module exports a very ETS-like interface for now which would have to be maintained even if the data format would change (to a hash map for example).
2012-02-28[asn1] Run asn1 compilation in a separate processAdam Lindberg
2011-09-13Merge branch 'dev' into majorHenrik Nord
Conflicts: lib/asn1/doc/src/asn1ct.xml
2011-09-08asn1ct: add warnings_as_errors optionTuncer Ayaz
2011-08-01Add obsolete warning for driver optionLukas Larsson
2011-08-01Remove all modules relating to drivers and make all functions obsolete.Lukas Larsson
2011-08-01Fix bootstrap problemLukas Larsson
2011-08-01Define vsn if not defined to make flymake happyLukas Larsson
2011-08-01Add support for nif option to optimized PER asn1 compilationLukas Larsson
2011-03-11Update copyright yearsBjörn-Egil Dahlberg
2011-02-17Merge branch 'ks/asn1-dialyzer-fixes' into devNiclas Axelsson
* ks/asn1-dialyzer-fixes: Shut off some dialyzer warnings OTP-9063
2011-02-17Merge branch 'ta/asn1-reporting' into devNiclas Axelsson
* ta/asn1-reporting: asn1ct: Make formatting of errors and warnings consistent OTP-9062
2010-11-18Shut off some dialyzer warningsKostis Sagonas
2010-07-12asn1ct: change unusual whitespace char from 0xA0 to 0x20Tuncer Ayaz
Replace 0xA0 with 0x20. Signed-off-by: Tuncer Ayaz <[email protected]>
2010-05-05asn1ct: Make formatting of errors and warnings consistentTuncer Ayaz
Consistently format warning and error reports. Warning and error options from erlc now also work in asnc1ct. Signed-off-by: Tuncer Ayaz <[email protected]>
2010-04-10Remove gratuitous ok report in asn1ctTuncer Ayaz
asn1ct used to print 'ok' on each compile. Signed-off-by: Tuncer Ayaz <[email protected]>