diff --git a/.gitignore b/.gitignore
index 7ba402cf..8a183262 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,9 @@
/BinaryNotes.NET/BinaryNotesTests/bin
/BinaryNotes.NET/BinaryNotesTests/obj
/BinaryNotes.NET/TestResults
+/BinaryNotes.NET/BinaryNotesTests/bncompiler/*
/Dist/target/
nbactions.xml
nb-configuration.xml
+/.history/*
+/.vscode/*
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 00000000..6c072c2a
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,19 @@
+stages:
+ - build
+
+variables:
+ MAVEN_OPTS: ""
+ MAVEN_CLI_OPTS: ""
+
+# Use Maven + OpenJDK 17 image from Docker Hub
+default:
+ image: maven:3.9.6-eclipse-temurin-17
+
+build:
+ stage: build
+ script:
+ - mvn $MAVEN_CLI_OPTS package --file pom.xml
+ artifacts:
+ paths:
+ - $CI_PROJECT_DIR/binarynotes/Dist/target/binarynotes-dist-1.6.zip
+
diff --git a/BNCompiler/pom.xml b/BNCompiler/pom.xml
index bd23b63d..48b3facf 100644
--- a/BNCompiler/pom.xml
+++ b/BNCompiler/pom.xml
@@ -36,11 +36,6 @@
antlr
2.7.7
-
- org.lineargs
- LineArgs
- 1.1.0
-
jakarta.xml.bind
jakarta.xml.bind-api
@@ -52,6 +47,12 @@
4.0.4
runtime
+
+
+ commons-cli
+ commons-cli
+ 1.9.0
+
diff --git a/BNCompiler/src/main/antlr/org/bn/compiler/parser/ASN1.g b/BNCompiler/src/main/antlr/org/bn/compiler/parser/ASN1.g
index 76be35e7..8a6dbf30 100644
--- a/BNCompiler/src/main/antlr/org/bn/compiler/parser/ASN1.g
+++ b/BNCompiler/src/main/antlr/org/bn/compiler/parser/ASN1.g
@@ -601,7 +601,7 @@ embedded_type returns [Object obj]
enum_type returns [Object obj]
{AsnEnum enumtyp = new AsnEnum() ;
AsnNamedNumberList nnlst; obj = null;}
- : ( ENUMERATED_KW (nnlst = namedNumber_list { enumtyp.namedNumberList = nnlst;}) )
+ : ( ENUMERATED_KW (nnlst = namedNumberExtensible_list { enumtyp.namedNumberList = nnlst;}) )
{obj = enumtyp ; enumtyp=null;}
;
@@ -613,8 +613,8 @@ external_type returns [Object obj]
integer_type returns [Object obj]
{AsnInteger intgr = new AsnInteger();
AsnNamedNumberList numlst; AsnConstraint cnstrnt; obj=null;}
- : ( INTEGER_KW (numlst = namedNumber_list {intgr.namedNumberList = numlst;}
- | cnstrnt = constraint {intgr.constraint = cnstrnt;})? )
+ : ( INTEGER_KW (numlst = namedNumber_list {intgr.namedNumberList = numlst;})?
+ (cnstrnt = constraint {intgr.constraint = cnstrnt;})? )
{obj = intgr ; numlst = null ; cnstrnt = null; intgr = null; }
;
@@ -661,7 +661,9 @@ sequenceof_type returns [Object obj]
{AsnSequenceOf seqof = new AsnSequenceOf();
AsnConstraint cns; obj = null; Object obj1 ; String s ;}
: ( SEQUENCE_KW {seqof.isSequenceOf = true;}
- (SIZE_KW {seqof.isSizeConstraint=true;}(cns = constraint {seqof.constraint = cns ;}))? OF_KW
+ ( (SIZE_KW {seqof.isSizeConstraint=true;}(cns = constraint {seqof.constraint = cns ;}))? |
+ (L_PAREN SIZE_KW {seqof.isSizeConstraint=true;}(cns = constraint {seqof.constraint = cns ;}) R_PAREN)? )
+ OF_KW
( obj1 = type
{ if((AsnDefinedType.class).isInstance(obj1)){
seqof.isDefinedType=true;
@@ -859,8 +861,14 @@ typeorvalue returns [Object obj]
elementType_list returns [AsnElementTypeList elelist]
{elelist = new AsnElementTypeList(); AsnElementType eletyp; }
- : (eletyp = elementType {elelist.elements.add(eletyp); }
- (COMMA (eletyp = elementType {elelist.elements.add(eletyp);}))*)
+ : (eletyp = elementType {elelist.addElement(eletyp, false); }
+ (COMMA (eletyp = elementType {elelist.addElement(eletyp, false);}))*
+ (
+ (COMMA ELLIPSIS {elelist.isExtensible=true;}
+ (COMMA (eletyp = elementType {elelist.addElement(eletyp, true);}))* )?
+ (COMMA ELLIPSIS {elelist.isExtensible=true;}
+ (COMMA (eletyp = elementType {elelist.addElement(eletyp, false);}))*)?
+ ) )
;
elementType returns [AsnElementType eletyp]
@@ -882,11 +890,20 @@ Object obj; AsnTag tg; String s;}
}
}
;
-
+
+namedNumberExtensible_list returns [AsnNamedNumberList nnlist]
+{nnlist = new AsnNamedNumberList(true);AsnNamedNumber nnum ; }
+ : ( L_BRACE (nnum= namedNumber {nnlist.addNamedNumber(nnum, false); }) // first element
+ (COMMA (nnum = namedNumber {nnlist.addNamedNumber(nnum, false); }))* // more elements
+ ((COMMA (ELLIPSIS {nnlist.isExtensible=true;}) ) // extension marker
+ (COMMA (nnum = namedNumber {nnlist.addNamedNumber(nnum, true); }))*)? // extended elements
+ R_BRACE )
+ ;
+
namedNumber_list returns [AsnNamedNumberList nnlist]
{nnlist = new AsnNamedNumberList();AsnNamedNumber nnum ; }
- : ( L_BRACE (nnum= namedNumber {nnlist.namedNumbers.add(nnum); })
- (COMMA (nnum = namedNumber {nnlist.namedNumbers.add(nnum); }) )* R_BRACE )
+ : ( L_BRACE (nnum= namedNumber {nnlist.addNamedNumber(nnum, false); })
+ (COMMA (nnum = namedNumber {nnlist.addNamedNumber(nnum, false); }) )* R_BRACE )
;
namedNumber returns [AsnNamedNumber nnum]
@@ -922,7 +939,7 @@ element_set_specs[AsnConstraint cnstrnt]
: (elemspec=element_set_spec {
cnstrnt.elemSetSpec=elemspec; // TODO - need list.add() func
}
- (COMMA ELLIPSIS {cnstrnt.isCommaDotDot=true;})?
+ (COMMA ELLIPSIS {cnstrnt.isExtensible=true;})?
(COMMA elemspec=element_set_spec {cnstrnt.addElemSetSpec=elemspec;cnstrnt.isAdditionalElementSpec=true;})?)
;
diff --git a/BNCompiler/src/main/java/org/bn/compiler/CompilerArgs.java b/BNCompiler/src/main/java/org/bn/compiler/CompilerArgs.java
index db1fe15c..da8f736d 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/CompilerArgs.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/CompilerArgs.java
@@ -15,28 +15,16 @@
*/
package org.bn.compiler;
-import org.lineargs.Option;
-import org.lineargs.constraints.RegexConstraint;
-
public class CompilerArgs {
- @Option(name = "--moduleName", shortName = "-m", description = "Binding module name ('cs' or 'java')")
- @RegexConstraint(mask = ".+")
private String moduleName = null;
- @Option(name = "--outputDir", shortName = "-o", description = "Output directory name", isOptional = true)
- @RegexConstraint(mask = ".+")
private String outputDir = "output/";
- @Option(name = "--fileName", shortName = "-f", description = "Input ASN.1 filename")
- @RegexConstraint(mask = ".+")
- private String inputFileName = null;
+ private String[] inputFileNames = null;
- @Option(name = "--namespace", shortName = "-ns", description = "Generate classes with specified namespace/package name", isOptional = true)
- @RegexConstraint(mask = ".+")
private String namespace = null;
- @Option(name = "--model-only", shortName = "-x", description = "Generate only the ASN.1 model (as XML)", isOptional = true)
private Boolean generateModelOnly = false;
public String getModuleName() {
@@ -55,12 +43,12 @@ public void setOutputDir(String outputDir) {
this.outputDir = outputDir;
}
- public String getInputFileName() {
- return inputFileName;
+ public String[] getInputFileNames() {
+ return inputFileNames;
}
- public void setInputFileName(String inputFileName) {
- this.inputFileName = inputFileName;
+ public void setInputFileName(String[] inputFileNames) {
+ this.inputFileNames = inputFileNames;
}
public String getNamespace() {
diff --git a/BNCompiler/src/main/java/org/bn/compiler/Main.java b/BNCompiler/src/main/java/org/bn/compiler/Main.java
index 8ed8513c..90a67503 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/Main.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/Main.java
@@ -32,13 +32,14 @@
import org.bn.compiler.parser.ASNParser;
import org.bn.compiler.parser.model.ASN1Model;
import org.bn.compiler.parser.model.ASNModule;
-import org.lineargs.LineArgsParser;
+
+import org.apache.commons.cli.*;
public class Main {
private static final String VERSION = "1.6";
- private CompilerArgs arguments = null;
+ private CompilerArgs arguments = new CompilerArgs();
public static void main(String args[]) {
try {
@@ -51,20 +52,84 @@ public static void main(String args[]) {
}
public void start(String[] args) throws Exception {
- LineArgsParser parser = new LineArgsParser();
- if (args.length > 0) {
- arguments = parser.parse(CompilerArgs.class, args);
+ Options options = new Options();
+
+ Option moduleOption = Option.builder("m")
+ .longOpt("moduleName")
+ .hasArg()
+ .desc("Binding module name ('cs' or 'java')")
+ .required()
+ .build();
+ options.addOption(moduleOption);
+ Option outputDirOption = Option.builder("o")
+ .longOpt("outputDir")
+ .hasArg()
+ .desc("Output directory name")
+ .optionalArg(true)
+ .build();
+ options.addOption(outputDirOption);
+ Option namespaceOption = Option.builder("ns")
+ .longOpt("namespace")
+ .hasArg()
+ .desc("Generate classes with specified namespace/package name")
+ .optionalArg(true)
+ .build();
+ options.addOption(namespaceOption);
+ Option generateModelOnlyOption = Option.builder("x")
+ .longOpt("model-only")
+ .desc("Generate only the ASN.1 model (as XML)")
+ .optionalArg(true)
+ .build();
+ options.addOption(generateModelOnlyOption);
+ Option helpOption = Option.builder("h")
+ .longOpt("help")
+ .desc("Show help message")
+ .build();
+ options.addOption(helpOption);
+
+ CommandLineParser parser = new DefaultParser();
+ HelpFormatter formatter = new HelpFormatter();
+ String executable = "bncompiler-" + VERSION + ".jar";
+
+ try {
+ CommandLine cmd = parser.parse(options, args);
+ // Show help and exit if --help is used
+ if (cmd.hasOption("h")) {
+ printHelp(formatter, options, executable);
+ return;
+ }
+
+ arguments.setModuleName( cmd.getOptionValue("m") );
+ arguments.setOutputDir( cmd.getOptionValue("o") );
+ arguments.setNamespace( cmd.getOptionValue("ns") );
+ arguments.setGenerateModelOnly( cmd.hasOption("x") );
+ arguments.setInputFileName( cmd.getArgs() ); // Remaining arguments
+
+ if (arguments.getInputFileNames() == null || arguments.getInputFileNames().length == 0) {
+ throw new ParseException("No input files specified.");
+ }
+
Module module = new Module(arguments.getModuleName(), arguments.getOutputDir());
startForModule(module);
- } else {
- parser.printHelp(CompilerArgs.class, System.out);
+ } catch (ParseException e) {
+ System.err.println("Error: " + e.getMessage());
+ printHelp(formatter, options, executable);
+ System.exit(1);
}
}
+ private static void printHelp(HelpFormatter formatter, Options options, String executable) {
+ String usage = executable + " --moduleName --outputDir -ns [file2] ...";
+ String header = "\nParses a list of files for a specified animal type.\n\nOptions:";
+ String footer = "\nExample:\n " + executable + "--moduleName cs --outputDir output_ns -ns test_asn test.asn\n\n"
+ + " " + executable + " --moduleName java --outputDir output_java -ns test_asn test.asn\n";
+ formatter.printHelp(usage, header, options, footer, false);
+ }
+
private void startForModule(Module module) throws TransformerException, JAXBException, IOException, ANTLRException {
if (!arguments.getGenerateModelOnly()) {
System.out.println("Current directory: " + new File(".").getCanonicalPath());
- System.out.println("Compiling file: " + arguments.getInputFileName());
+ System.out.println("Compiling file(s): " + String.join(", ", arguments.getInputFileNames()));
ByteArrayOutputStream outputXml = new ByteArrayOutputStream(65535);
createModel(outputXml, module);
@@ -81,7 +146,12 @@ private void createModel(OutputStream outputXml, Module module) throws JAXBExcep
if (arguments.getNamespace() != null) {
model.moduleNS = arguments.getNamespace();
} else {
- model.moduleNS = model.module.moduleIdentifier.name.toLowerCase();
+ for (ASNModule m : model.modules) {
+ if (m.moduleIdentifier != null && m.moduleIdentifier.name != null) {
+ model.moduleNS = m.moduleIdentifier.name.toLowerCase();
+ break;
+ }
+ }
}
}
@@ -92,15 +162,19 @@ private void createModel(OutputStream outputXml, Module module) throws JAXBExcep
}
private ASN1Model createModelFromStream() throws FileNotFoundException, ANTLRException {
- InputStream stream = new FileInputStream(arguments.getInputFileName());
- ASNLexer lexer = new ASNLexer(stream);
- ASNParser parser = new ASNParser(lexer);
-
- ASNModule module = new ASNModule();
- parser.module_definition(module);
-
ASN1Model model = new ASN1Model();
- model.module = module;
+ model.modules = new java.util.ArrayList<>();
+ for (String inputFile : arguments.getInputFileNames()) {
+ InputStream stream = new FileInputStream(inputFile);
+ ASNLexer lexer = new ASNLexer(stream);
+ ASNParser parser = new ASNParser(lexer);
+
+ ASNModule module = new ASNModule();
+ parser.module_definition(module);
+
+ model.modules.add(module);
+ }
+
return model;
}
}
diff --git a/BNCompiler/src/main/java/org/bn/compiler/parser/model/ASN1Model.java b/BNCompiler/src/main/java/org/bn/compiler/parser/model/ASN1Model.java
index 38851014..fb9d06ea 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/parser/model/ASN1Model.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/parser/model/ASN1Model.java
@@ -6,5 +6,5 @@
@XmlRootElement public class ASN1Model implements Serializable {
public String outputDirectory;
public String moduleNS;
- public ASNModule module;
+ public java.util.ArrayList modules = new java.util.ArrayList();
}
diff --git a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnConstraint.java b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnConstraint.java
index 791944a6..6ec8c494 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnConstraint.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnConstraint.java
@@ -7,7 +7,7 @@ public class AsnConstraint {
public ElementSetSpec elemSetSpec;
public boolean isAdditionalElementSpec;
public boolean isColonValue;
- public boolean isCommaDotDot;
+ public boolean isExtensible;
public boolean isDefinedValue;
public boolean isElementSetSpecs;
public boolean isExceptionSpec;
diff --git a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementType.java b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementType.java
index a3305f87..11f66523 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementType.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementType.java
@@ -6,6 +6,7 @@ public class AsnElementType {
public boolean isDefault;
public boolean isDefinedType; // Element type is defined Type
public boolean isOptional;
+ public boolean isExtended;
public boolean isTag;
public boolean isTagDefault;
public String name; // type
diff --git a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementTypeList.java b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementTypeList.java
index 5ea07198..01d9fc6c 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementTypeList.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnElementTypeList.java
@@ -5,11 +5,17 @@
public class AsnElementTypeList {
public ArrayList elements;
+ public boolean isExtensible;
public AsnElementTypeList() {
elements = new ArrayList<>();
}
+ public void addElement(AsnElementType element, boolean extendedElement) {
+ element.isExtended = extendedElement;
+ elements.add(element);
+ }
+
@Override
public String toString() {
return "";
diff --git a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumber.java b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumber.java
index 7b13bb7d..2d628796 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumber.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumber.java
@@ -1,5 +1,7 @@
package org.bn.compiler.parser.model;
+import java.math.BigInteger;
+
public class AsnNamedNumber {
public AsnDefinedValue definedValue;
@@ -7,6 +9,17 @@ public class AsnNamedNumber {
public String name;
public AsnSignedNumber signedNumber;
+ public BigInteger value() {
+ if (signedNumber == null) {
+ return null;
+ }
+ if (signedNumber.positive) {
+ return signedNumber.num;
+ } else {
+ return signedNumber.num.negate();
+ }
+ }
+
public AsnNamedNumber() {
name = "";
}
diff --git a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumberList.java b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumberList.java
index 1350e034..e5eb3b26 100644
--- a/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumberList.java
+++ b/BNCompiler/src/main/java/org/bn/compiler/parser/model/AsnNamedNumberList.java
@@ -1,13 +1,49 @@
package org.bn.compiler.parser.model;
import java.util.ArrayList;
+import java.math.BigInteger;
public class AsnNamedNumberList {
public ArrayList namedNumbers;
+ public boolean isExtensible;
+ public boolean sortOnAddition = false;
+ public int numRootElements = 0;
public AsnNamedNumberList() {
namedNumbers = new ArrayList<>();
+ numRootElements = 0;
+ }
+
+ public AsnNamedNumberList(boolean sortOnAddition) {
+ namedNumbers = new ArrayList<>();
+ this.sortOnAddition = sortOnAddition;
+ }
+
+ // sort by value when adding a new named number
+ public void addNamedNumber(AsnNamedNumber namedNumber, boolean extendedElement) {
+
+ if (!extendedElement) {
+ numRootElements++;
+ namedNumbers.add(namedNumber);
+ if (sortOnAddition) {
+ namedNumbers.sort((a, b) -> a.value().compareTo(b.value()));
+ }
+ } else {
+ if (sortOnAddition) {
+ // find the maximum value in the namedNumbers list by value
+ BigInteger maxValue = namedNumbers.stream()
+ .map(AsnNamedNumber::value)
+ .max(BigInteger::compareTo)
+ .orElse(BigInteger.valueOf(Integer.MIN_VALUE));
+
+ if (namedNumber.value().compareTo(maxValue) > 0) {
+ namedNumbers.add(namedNumber);
+ } else {
+ throw new IllegalArgumentException("The new named number's value must be greater than all existing values in the list.");
+ }
+ }
+ }
}
/** Returns the total number of elements in the list */
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/boxedBooleanType.xsl b/BNCompiler/src/main/resources/modules/cs/includes/boxedBooleanType.xsl
index a95965f2..6f2d68a7 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/boxedBooleanType.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/boxedBooleanType.xsl
@@ -36,7 +36,7 @@
[ASN1BoxedType ( Name = "") ]
public class : IASN1PreparedElement {
- private bool val = null;
+ private bool val;
[ASN1Boolean ( Name = "") ]
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/boxedIntegerType.xsl b/BNCompiler/src/main/resources/modules/cs/includes/boxedIntegerType.xsl
index 1784686f..08485e71 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/boxedIntegerType.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/boxedIntegerType.xsl
@@ -36,9 +36,13 @@
[ASN1PreparedElement]
[ASN1BoxedType ( Name = "" )]
public class : IASN1PreparedElement {
-
+
+
+
+ public static readonly = new();
+
private val;
-
+
[ASN1Integer( Name = "" )]
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/choice.xsl b/BNCompiler/src/main/resources/modules/cs/includes/choice.xsl
index 7d3e9dac..18de0cb3 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/choice.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/choice.xsl
@@ -38,7 +38,7 @@
[ASN1PreparedElement]
- [ASN1Choice ( Name = "") ]
+ [ASN1Choice ( Name = "", IsExtensible = truefalse) ]
public class : IASN1PreparedElement {
true
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/choiceDecl.xsl b/BNCompiler/src/main/resources/modules/cs/includes/choiceDecl.xsl
index e3e21433..832f56c9 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/choiceDecl.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/choiceDecl.xsl
@@ -30,20 +30,20 @@
- [ASN1PreparedElement]
- [ASN1Choice ( Name = "" )]
+ [ASN1PreparedElement]
+ [ASN1Choice ( Name = "", IsExtensible = truefalse )]
public class : IASN1PreparedElement {
- true
-
+ true
+
- public void initWithDefaults()
- {
- }
+ public void initWithDefaults()
+ {
+ }
- private static IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(typeof());
+ private static IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(typeof());
public IASN1PreparedElementData PreparedData {
- get { return preparedData; }
- }
+ get { return preparedData; }
+ }
}
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/componentDefaults.xsl b/BNCompiler/src/main/resources/modules/cs/includes/componentDefaults.xsl
index 516d5da0..17245640 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/componentDefaults.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/componentDefaults.xsl
@@ -36,7 +36,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/componentTypeName.xsl b/BNCompiler/src/main/resources/modules/cs/includes/componentTypeName.xsl
index fc6add91..36f8f752 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/componentTypeName.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/componentTypeName.xsl
@@ -27,14 +27,14 @@
-
+
-
+
true
@@ -47,7 +47,7 @@
-
+
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/doDeterminateEndValue.xsl b/BNCompiler/src/main/resources/modules/cs/includes/doDeterminateEndValue.xsl
index ccc00baa..2d727079 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/doDeterminateEndValue.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/doDeterminateEndValue.xsl
@@ -31,7 +31,7 @@
-
+
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/elementDecl.xsl b/BNCompiler/src/main/resources/modules/cs/includes/elementDecl.xsl
index 2cd28d90..2a8d38c5 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/elementDecl.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/elementDecl.xsl
@@ -26,6 +26,6 @@
- [ASN1Element ( Name = "", IsOptional = true false , HasTag = true, Tag = false , IsImplicitTag = false , , HasDefaultValue = true false ) ]
+ [ASN1Element ( Name = "", IsOptional = true false , IsExtended = true false , HasTag = true, Tag = false , IsImplicitTag = false , , HasDefaultValue = true false ) ]
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/elementDefaultValue.xsl b/BNCompiler/src/main/resources/modules/cs/includes/elementDefaultValue.xsl
index 43586d7e..ee72b899 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/elementDefaultValue.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/elementDefaultValue.xsl
@@ -40,10 +40,10 @@
false
new ();
- param_.Value = .EnumType.
+ param_.Value = .EnumType.
-
+
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/enum.xsl b/BNCompiler/src/main/resources/modules/cs/includes/enum.xsl
index 3c407dba..edf44314 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/enum.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/enum.xsl
@@ -37,7 +37,7 @@
[ASN1PreparedElement]
- [ASN1Enum ( Name = "")]
+ [ASN1Enum ( Name = "", IsExtensible = truefalse, NumRootElements = )]
public class : IASN1PreparedElement {
public enum EnumType {
@@ -49,19 +49,19 @@
{
get { return val; }
set { val = value; }
- }
+ }
- public void initWithDefaults()
- {
- }
+ public void initWithDefaults()
+ {
+ }
- private static IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(typeof());
+ private static IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(typeof());
public IASN1PreparedElementData PreparedData {
- get { return preparedData; }
- }
+ get { return preparedData; }
+ }
+
-
}
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/enumItem.xsl b/BNCompiler/src/main/resources/modules/cs/includes/enumItem.xsl
index 027ffe3c..7838015e 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/enumItem.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/enumItem.xsl
@@ -27,6 +27,6 @@
[ASN1EnumItem ( Name = "", HasTag = , Tag = )]
- ,
+ ,
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/sequence.xsl b/BNCompiler/src/main/resources/modules/cs/includes/sequence.xsl
index f0e8b26e..0e498663 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/sequence.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/sequence.xsl
@@ -40,24 +40,23 @@
[ASN1PreparedElement]
- [ASN1Sequence ( Name = "", IsSet = truefalse )]
+ [ASN1Sequence ( Name = "", IsExtensible = truefalse, IsSet = truefalse)]
public class : IASN1PreparedElement {
-
-
+
+
public void initWithDefaults() {
-
-
-
- }
+
+
+
+ }
- private static IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(typeof());
+ private static IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(typeof());
public IASN1PreparedElementData PreparedData {
- get { return preparedData; }
- }
+ get { return preparedData; }
+ }
-
}
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/sequenceOfDecl.xsl b/BNCompiler/src/main/resources/modules/cs/includes/sequenceOfDecl.xsl
index d90eb936..8102fa8b 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/sequenceOfDecl.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/sequenceOfDecl.xsl
@@ -26,17 +26,17 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-[ASN1SequenceOf( Name = "", IsSetOf = truefalse )]
+[ASN1SequenceOf( Name = "", IsExtensible = truefalse, IsSetOf = truefalse )]
diff --git a/BNCompiler/src/main/resources/modules/cs/includes/valueRangeConstraint.xsl b/BNCompiler/src/main/resources/modules/cs/includes/valueRangeConstraint.xsl
index 93ce3c3f..61d8e4d8 100644
--- a/BNCompiler/src/main/resources/modules/cs/includes/valueRangeConstraint.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/includes/valueRangeConstraint.xsl
@@ -29,14 +29,7 @@
- [ASN1ValueRangeConstraint (
-
- Min = L,
-
-
- Max = L
-
- ) ]
+ [ASN1ValueRangeConstraint ( Min = L, Max = L, IsExtensible = truefalse) ]
diff --git a/BNCompiler/src/main/resources/modules/cs/main.xsl b/BNCompiler/src/main/resources/modules/cs/main.xsl
index fba5d374..822147ff 100644
--- a/BNCompiler/src/main/resources/modules/cs/main.xsl
+++ b/BNCompiler/src/main/resources/modules/cs/main.xsl
@@ -51,77 +51,77 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/BNCompiler/src/main/resources/modules/java/includes/componentDefaults.xsl b/BNCompiler/src/main/resources/modules/java/includes/componentDefaults.xsl
index 516d5da0..17245640 100644
--- a/BNCompiler/src/main/resources/modules/java/includes/componentDefaults.xsl
+++ b/BNCompiler/src/main/resources/modules/java/includes/componentDefaults.xsl
@@ -36,7 +36,7 @@
-
+
@@ -50,7 +50,7 @@
-
+
diff --git a/BNCompiler/src/main/resources/modules/java/includes/componentTypeName.xsl b/BNCompiler/src/main/resources/modules/java/includes/componentTypeName.xsl
index 9460e219..5f807173 100644
--- a/BNCompiler/src/main/resources/modules/java/includes/componentTypeName.xsl
+++ b/BNCompiler/src/main/resources/modules/java/includes/componentTypeName.xsl
@@ -27,14 +27,14 @@
-
+
-
+
@@ -47,7 +47,7 @@
-
+
diff --git a/BNCompiler/src/main/resources/modules/java/includes/doDeterminateEndValue.xsl b/BNCompiler/src/main/resources/modules/java/includes/doDeterminateEndValue.xsl
index ccc00baa..2d727079 100644
--- a/BNCompiler/src/main/resources/modules/java/includes/doDeterminateEndValue.xsl
+++ b/BNCompiler/src/main/resources/modules/java/includes/doDeterminateEndValue.xsl
@@ -31,7 +31,7 @@
-
+
diff --git a/BNCompiler/src/main/resources/modules/java/includes/elementDefaultValue.xsl b/BNCompiler/src/main/resources/modules/java/includes/elementDefaultValue.xsl
index 65d0d208..89d2a707 100644
--- a/BNCompiler/src/main/resources/modules/java/includes/elementDefaultValue.xsl
+++ b/BNCompiler/src/main/resources/modules/java/includes/elementDefaultValue.xsl
@@ -43,7 +43,7 @@
param_.setValue(.EnumType.)
-
+
diff --git a/BNCompiler/src/main/resources/modules/java/main.xsl b/BNCompiler/src/main/resources/modules/java/main.xsl
index 1f4948c0..d43dc30a 100644
--- a/BNCompiler/src/main/resources/modules/java/main.xsl
+++ b/BNCompiler/src/main/resources/modules/java/main.xsl
@@ -51,82 +51,82 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/BNCompiler/src/main/scripts/examples/example-ldapv3-compile.cmd b/BNCompiler/src/main/scripts/examples/example-ldapv3-compile.cmd
index 7222cedc..134062af 100644
--- a/BNCompiler/src/main/scripts/examples/example-ldapv3-compile.cmd
+++ b/BNCompiler/src/main/scripts/examples/example-ldapv3-compile.cmd
@@ -1,2 +1,2 @@
-call ../bncompiler.cmd -m java -o output/ldapv3 -ns ldapv3 -f ldapv3.asn
+call ../bncompiler.cmd -m java -o output/ldapv3 -ns ldapv3 ldapv3.asn
javac -cp ../../../../JavaLibrary/target/binarynotes-1.6.jar output/ldapv3/*.java
diff --git a/BNCompiler/src/main/scripts/examples/example-test-compile.cmd b/BNCompiler/src/main/scripts/examples/example-test-compile.cmd
index 201d5410..192a39e7 100644
--- a/BNCompiler/src/main/scripts/examples/example-test-compile.cmd
+++ b/BNCompiler/src/main/scripts/examples/example-test-compile.cmd
@@ -1,2 +1,2 @@
-call ../bncompiler.cmd -m java -o output/test -ns org.bn.coders.test_asn -f test.asn
+call ../bncompiler.cmd -m java -o output/test -ns org.bn.coders.test_asn test.asn
javac -cp ../../../../JavaLibrary/target/binarynotes-1.6.jar output/test/*.java
diff --git a/BNCompiler/src/main/scripts/examples/example-test-compile.sh b/BNCompiler/src/main/scripts/examples/example-test-compile.sh
index 922ddad9..f8efa480 100644
--- a/BNCompiler/src/main/scripts/examples/example-test-compile.sh
+++ b/BNCompiler/src/main/scripts/examples/example-test-compile.sh
@@ -1,3 +1,3 @@
#!/bin/sh
-../bncompiler.sh -m java -o output/test -ns org.bn.coders.test_asn -f test.asn
+../bncompiler.sh -m java -o output/test -ns org.bn.coders.test_asn test.asn
diff --git a/BNCompiler/src/test/java/org/bn/compiler/MainTest.java b/BNCompiler/src/test/java/org/bn/compiler/MainTest.java
index 035b08ab..25f0b0e3 100644
--- a/BNCompiler/src/test/java/org/bn/compiler/MainTest.java
+++ b/BNCompiler/src/test/java/org/bn/compiler/MainTest.java
@@ -29,8 +29,8 @@ public void testJava() throws Exception {
new Main().start(new String[] {
"--moduleName", "java",
"--outputDir", "testworkdir" + File.separator + "output",
- "--fileName", "src" + File.separator + "test" + File.separator + "resources" + File.separator + "test.asn",
- "-ns", "test_asn"
+ "-ns", "test_asn",
+ "src" + File.separator + "test" + File.separator + "resources" + File.separator + "test.asn",
});
}
@@ -39,8 +39,8 @@ public void testCS() throws Exception {
new Main().start(new String[] {
"--moduleName", "cs",
"--outputDir", "testworkdir" + File.separator + "output-cs",
- "--fileName", "src" + File.separator + "test" + File.separator + "resources" + File.separator + "test.asn",
- "-ns", "test_asn"
+ "-ns", "test_asn",
+ "src" + File.separator + "test" + File.separator + "resources" + File.separator + "test.asn",
});
}
}
\ No newline at end of file
diff --git a/BNCompiler/src/test/java/org/bn/compiler/parser/ASNParserTest.java b/BNCompiler/src/test/java/org/bn/compiler/parser/ASNParserTest.java
index 11262c08..676bb7fb 100644
--- a/BNCompiler/src/test/java/org/bn/compiler/parser/ASNParserTest.java
+++ b/BNCompiler/src/test/java/org/bn/compiler/parser/ASNParserTest.java
@@ -1,68 +1,68 @@
-/*
- Copyright 2006-2011 Abdulla Abdurakhmanov (abdulla@latestbit.com)
-
- 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.
- */
-package org.bn.compiler.parser;
-
-import java.io.File;
-import java.io.InputStream;
-import jakarta.xml.bind.JAXBContext;
-import jakarta.xml.bind.Marshaller;
-import org.bn.compiler.parser.model.ASN1Model;
-import org.bn.compiler.parser.model.ASNModule;
-import static org.junit.jupiter.api.Assertions.*;
-import org.junit.jupiter.api.Test;
-
-public class ASNParserTest {
-
- private ASN1Model createFromStream() throws Exception {
- InputStream stream = getClass().getResourceAsStream("/test.asn");
- ASNLexer lexer = new ASNLexer(stream);
- ASNParser parser = new ASNParser(lexer);
- ASNModule module = new ASNModule();
-
- parser.module_definition(module);
-
- ASN1Model model = new ASN1Model();
- model.module = module;
- return model;
- }
-
- @Test
- public void testJaxb() throws Exception {
- ASN1Model model = createFromStream();
- model.outputDirectory = "testworkdir" + File.separator + "output";
- model.moduleNS = "test_asn";
-
- Marshaller marshaller = JAXBContext.newInstance("org.bn.compiler.parser.model").createMarshaller();
- marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
- marshaller.marshal(model, System.out);
- //marshaller.marshal(model, new FileOutputStream("temp.xml"));
- }
-
- /**
- * @see ASNParser#module_definition(ASNModule)
- */
- @Test
- public void testModule_definition() throws Exception {
- ASN1Model model = createFromStream();
-
- assertEquals("TEST_ASN", model.module.moduleIdentifier.name);
- assertEquals(20, model.module.asnTypes.sequenceSets.size());
- assertEquals(2, model.module.asnTypes.enums.size());
- assertEquals(8, model.module.asnTypes.characterStrings.size());
- assertEquals(1, model.module.asnTypes.octetStrings.size());
- assertEquals(8, model.module.asnTypes.sequenceSetsOf.size());
- }
-}
+/*
+ Copyright 2006-2011 Abdulla Abdurakhmanov (abdulla@latestbit.com)
+
+ 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.
+ */
+package org.bn.compiler.parser;
+
+import java.io.File;
+import java.io.InputStream;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.Marshaller;
+import org.bn.compiler.parser.model.ASN1Model;
+import org.bn.compiler.parser.model.ASNModule;
+import static org.junit.jupiter.api.Assertions.*;
+import org.junit.jupiter.api.Test;
+
+public class ASNParserTest {
+
+ private ASN1Model createFromStream() throws Exception {
+ InputStream stream = getClass().getResourceAsStream("/test.asn");
+ ASNLexer lexer = new ASNLexer(stream);
+ ASNParser parser = new ASNParser(lexer);
+ ASNModule module = new ASNModule();
+
+ parser.module_definition(module);
+
+ ASN1Model model = new ASN1Model();
+ model.modules.add(module);
+ return model;
+ }
+
+ @Test
+ public void testJaxb() throws Exception {
+ ASN1Model model = createFromStream();
+ model.outputDirectory = "testworkdir" + File.separator + "output";
+ model.moduleNS = "test_asn";
+
+ Marshaller marshaller = JAXBContext.newInstance("org.bn.compiler.parser.model").createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+ marshaller.marshal(model, System.out);
+ //marshaller.marshal(model, new FileOutputStream("temp.xml"));
+ }
+
+ /**
+ * @see ASNParser#module_definition(ASNModule)
+ */
+ @Test
+ public void testModule_definition() throws Exception {
+ ASN1Model model = createFromStream();
+ ASNModule module = model.modules.get(0);
+ assertEquals("TEST_ASN", module.moduleIdentifier.name);
+ assertEquals(23, module.asnTypes.sequenceSets.size());
+ assertEquals(4, module.asnTypes.enums.size());
+ assertEquals(8, module.asnTypes.characterStrings.size());
+ assertEquals(1, module.asnTypes.octetStrings.size());
+ assertEquals(10, module.asnTypes.sequenceSetsOf.size());
+ }
+}
diff --git a/BNCompiler/src/test/resources/ITS_CAM_v1.3.2.asn b/BNCompiler/src/test/resources/ITS_CAM_v1.3.2.asn
new file mode 100644
index 00000000..6e2530c4
--- /dev/null
+++ b/BNCompiler/src/test/resources/ITS_CAM_v1.3.2.asn
@@ -0,0 +1,1076 @@
+----
+----
+CAM-PDU-Descriptions {itu-t(0) identified-organization(4) etsi(0) itsDomain(5)
+ wg1(1) en(302637) cam(2) version(1)}
+DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+ IMPORTS
+ ItsPduHeader, CauseCode, ReferencePosition, AccelerationControl,
+ Curvature, CurvatureCalculationMode, Heading, LanePosition,
+ EmergencyPriority, EmbarkationStatus, Speed, DriveDirection,
+ LongitudinalAcceleration, LateralAcceleration,
+ VerticalAcceleration, StationType, ExteriorLights,
+ DangerousGoodsBasic, SpecialTransportType, LightBarSirenInUse,
+ VehicleRole, VehicleLength, VehicleWidth, PathHistory,
+ RoadworksSubCauseCode, ClosedLanes, TrafficRule, SpeedLimit,
+ SteeringWheelAngle, PerformanceClass, YawRate,
+ ProtectedCommunicationZone, PtActivation, Latitude, Longitude,
+ ProtectedCommunicationZonesRSU, CenDsrcTollingZone
+ FROM ITS-Container {itu-t(0) identified-organization(4) etsi(0)
+ itsDomain(5) wg1(1) ts(102894) cdd(2) version(1)};
+
+ CAM ::= SEQUENCE {
+ header ItsPduHeader,
+ cam CoopAwareness
+ }
+
+ CoopAwareness ::= SEQUENCE {
+ generationDeltaTime GenerationDeltaTime,
+ camParameters CamParameters
+ }
+
+ CamParameters ::= SEQUENCE {
+ basicContainer BasicContainer,
+ highFrequencyContainer HighFrequencyContainer,
+ lowFrequencyContainer LowFrequencyContainer OPTIONAL,
+ specialVehicleContainer SpecialVehicleContainer OPTIONAL,
+ ...
+ }
+
+ HighFrequencyContainer ::= CHOICE {
+ basicVehicleContainerHighFrequency BasicVehicleContainerHighFrequency,
+ rsuContainerHighFrequency RSUContainerHighFrequency,
+ ...
+ }
+
+ LowFrequencyContainer ::= CHOICE {
+ basicVehicleContainerLowFrequency BasicVehicleContainerLowFrequency,
+ ...
+ }
+
+ SpecialVehicleContainer ::= CHOICE {
+ publicTransportContainer PublicTransportContainer,
+ specialTransportContainer SpecialTransportContainer,
+ dangerousGoodsContainer DangerousGoodsContainer,
+ roadWorksContainerBasic RoadWorksContainerBasic,
+ rescueContainer RescueContainer,
+ emergencyContainer EmergencyContainer,
+ safetyCarContainer SafetyCarContainer,
+ ...
+ }
+
+ BasicContainer ::= SEQUENCE {
+ stationType StationType,
+ referencePosition ReferencePosition,
+ ...
+ }
+
+ BasicVehicleContainerHighFrequency ::= SEQUENCE {
+ heading Heading,
+ speed Speed,
+ driveDirection DriveDirection,
+ vehicleLength VehicleLength,
+ vehicleWidth VehicleWidth,
+ longitudinalAcceleration LongitudinalAcceleration,
+ curvature Curvature,
+ curvatureCalculationMode CurvatureCalculationMode,
+ yawRate YawRate,
+ accelerationControl AccelerationControl OPTIONAL,
+ lanePosition LanePosition OPTIONAL,
+ steeringWheelAngle SteeringWheelAngle OPTIONAL,
+ lateralAcceleration LateralAcceleration OPTIONAL,
+ verticalAcceleration VerticalAcceleration OPTIONAL,
+ performanceClass PerformanceClass OPTIONAL,
+ cenDsrcTollingZone CenDsrcTollingZone OPTIONAL
+ }
+
+ BasicVehicleContainerLowFrequency ::= SEQUENCE {
+ vehicleRole VehicleRole,
+ exteriorLights ExteriorLights,
+ pathHistory PathHistory
+ }
+
+ PublicTransportContainer ::= SEQUENCE {
+ embarkationStatus EmbarkationStatus,
+ ptActivation PtActivation OPTIONAL
+ }
+
+ SpecialTransportContainer ::= SEQUENCE {
+ specialTransportType SpecialTransportType,
+ lightBarSirenInUse LightBarSirenInUse
+ }
+
+ DangerousGoodsContainer ::= SEQUENCE {
+ dangerousGoodsBasic DangerousGoodsBasic
+ }
+
+ RoadWorksContainerBasic ::= SEQUENCE {
+ roadworksSubCauseCode RoadworksSubCauseCode OPTIONAL,
+ lightBarSirenInUse LightBarSirenInUse,
+ closedLanes ClosedLanes OPTIONAL
+ }
+
+ RescueContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse
+ }
+
+ EmergencyContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse,
+ incidentIndication CauseCode OPTIONAL,
+ emergencyPriority EmergencyPriority OPTIONAL
+ }
+
+ SafetyCarContainer ::= SEQUENCE {
+ lightBarSirenInUse LightBarSirenInUse,
+ incidentIndication CauseCode OPTIONAL,
+ trafficRule TrafficRule OPTIONAL,
+ speedLimit SpeedLimit OPTIONAL
+ }
+
+ RSUContainerHighFrequency ::= SEQUENCE {
+ protectedCommunicationZonesRSU ProtectedCommunicationZonesRSU OPTIONAL,
+ ...
+ }
+
+ GenerationDeltaTime ::= INTEGER {
+ oneMilliSec(1)
+ } (0..65535)
+
+ ItsPduHeader ::= SEQUENCE {
+ protocolVersion INTEGER {
+ currentVersion(1)
+ } (0..255),
+ messageID INTEGER {
+ denm(1),
+ cam(2),
+ poi(3),
+ spat(4),
+ map(5),
+ ivi(6),
+ ev-rsr(7)
+ } (0..255),
+ stationID StationID
+ }
+
+ StationID ::= INTEGER (0..4294967295)
+
+ ReferencePosition ::= SEQUENCE {
+ latitude Latitude,
+ longitude Longitude,
+ positionConfidenceEllipse PosConfidenceEllipse,
+ altitude Altitude
+ }
+
+ DeltaReferencePosition ::= SEQUENCE {
+ deltaLatitude DeltaLatitude,
+ deltaLongitude DeltaLongitude,
+ deltaAltitude DeltaAltitude
+ }
+
+ Longitude ::= INTEGER {
+ oneMicrodegreeEast(10),
+ oneMicrodegreeWest(-10),
+ unavailable(1800000001)
+ } (-1800000000..1800000001)
+
+ Latitude ::= INTEGER {
+ oneMicrodegreeNorth(10),
+ oneMicrodegreeSouth(-10),
+ unavailable(900000001)
+ } (-900000000..900000001)
+
+ Altitude ::= SEQUENCE {
+ altitudeValue AltitudeValue,
+ altitudeConfidence AltitudeConfidence
+ }
+
+ AltitudeValue ::= INTEGER {
+ referenceEllipsoidSurface(0),
+ oneCentimeter(1),
+ unavailable(800001)
+ } (-100000..800001)
+
+ AltitudeConfidence ::= ENUMERATED {
+ alt-000-01(0),
+ alt-000-02(1),
+ alt-000-05(2),
+ alt-000-10(3),
+ alt-000-20(4),
+ alt-000-50(5),
+ alt-001-00(6),
+ alt-002-00(7),
+ alt-005-00(8),
+ alt-010-00(9),
+ alt-020-00(10),
+ alt-050-00(11),
+ alt-100-00(12),
+ alt-200-00(13),
+ outOfRange(14),
+ unavailable(15)
+ }
+
+ DeltaLongitude ::= INTEGER {
+ oneMicrodegreeEast(10),
+ oneMicrodegreeWest(-10),
+ unavailable(131072)
+ } (-131071..131072)
+
+ DeltaLatitude ::= INTEGER {
+ oneMicrodegreeNorth(10),
+ oneMicrodegreeSouth(-10),
+ unavailable(131072)
+ } (-131071..131072)
+
+ DeltaAltitude ::= INTEGER {
+ oneCentimeterUp(1),
+ oneCentimeterDown(-1),
+ unavailable(12800)
+ } (-12700..12800)
+
+ PosConfidenceEllipse ::= SEQUENCE {
+ semiMajorConfidence SemiAxisLength,
+ semiMinorConfidence SemiAxisLength,
+ semiMajorOrientation HeadingValue
+ }
+
+ PathPoint ::= SEQUENCE {
+ pathPosition DeltaReferencePosition,
+ pathDeltaTime PathDeltaTime OPTIONAL
+ }
+
+ PathDeltaTime ::= INTEGER {
+ tenMilliSecondsInPast(1)
+ } (1..65535, ...)
+
+ PtActivation ::= SEQUENCE {
+ ptActivationType PtActivationType,
+ ptActivationData PtActivationData
+ }
+
+ PtActivationType ::= INTEGER {
+ undefinedCodingType(0),
+ r09-16CodingType(1),
+ vdv-50149CodingType(2)
+ } (0..255)
+
+ PtActivationData ::= OCTET STRING (SIZE (1..20))
+
+ AccelerationControl ::= BIT STRING {
+ brakePedalEngaged(0),
+ gasPedalEngaged(1),
+ emergencyBrakeEngaged(2),
+ collisionWarningEngaged(3),
+ accEngaged(4),
+ cruiseControlEngaged(5),
+ speedLimiterEngaged(6)
+ } (SIZE (7))
+
+ SemiAxisLength ::= INTEGER {
+ oneCentimeter(1),
+ outOfRange(4094),
+ unavailable(4095)
+ } (0..4095)
+
+ CauseCode ::= SEQUENCE {
+ causeCodeT CauseCodeType,
+ subCauseCode SubCauseCodeType
+ }
+
+ CauseCodeType ::= INTEGER {
+ reserved(0),
+ trafficCondition(1),
+ accident(2),
+ roadworks(3),
+ adverseWeatherCondition-Adhesion(6),
+ hazardousLocation-SurfaceCondition(9),
+ hazardousLocation-ObstacleOnTheRoad(10),
+ hazardousLocation-AnimalOnTheRoad(11),
+ humanPresenceOnTheRoad(12),
+ wrongWayDriving(14),
+ rescueAndRecoveryWorkInProgress(15),
+ adverseWeatherCondition-ExtremeWeatherCondition(17),
+ adverseWeatherCondition-Visibility(18),
+ adverseWeatherCondition-Precipitation(19),
+ slowVehicle(26),
+ dangerousEndOfQueue(27),
+ vehicleBreakdown(91),
+ postCrash(92),
+ humanProblem(93),
+ stationaryVehicle(94),
+ emergencyVehicleApproaching(95),
+ hazardousLocation-DangerousCurve(96),
+ collisionRisk(97),
+ signalViolation(98),
+ dangerousSituation(99)
+ } (0..255)
+
+ SubCauseCodeType ::= INTEGER (0..255)
+
+ TrafficConditionSubCauseCode ::= INTEGER {
+ unavailable(0),
+ increasedVolumeOfTraffic(1),
+ trafficJamSlowlyIncreasing(2),
+ trafficJamIncreasing(3),
+ trafficJamStronglyIncreasing(4),
+ trafficStationary(5),
+ trafficJamSlightlyDecreasing(6),
+ trafficJamDecreasing(7),
+ trafficJamStronglyDecreasing(8)
+ } (0..255)
+
+ AccidentSubCauseCode ::= INTEGER {
+ unavailable(0),
+ multiVehicleAccident(1),
+ heavyAccident(2),
+ accidentInvolvingLorry(3),
+ accidentInvolvingBus(4),
+ accidentInvolvingHazardousMaterials(5),
+ accidentOnOppositeLane(6),
+ unsecuredAccident(7),
+ assistanceRequested(8)
+ } (0..255)
+
+ RoadworksSubCauseCode ::= INTEGER {
+ unavailable(0),
+ majorRoadworks(1),
+ roadMarkingWork(2),
+ slowMovingRoadMaintenance(3),
+ shortTermStationaryRoadworks(4),
+ streetCleaning(5),
+ winterService(6)
+ } (0..255)
+
+ HumanPresenceOnTheRoadSubCauseCode ::= INTEGER {
+ unavailable(0),
+ childrenOnRoadway(1),
+ cyclistOnRoadway(2),
+ motorcyclistOnRoadway(3)
+ } (0..255)
+
+ WrongWayDrivingSubCauseCode ::= INTEGER {
+ unavailable(0),
+ wrongLane(1),
+ wrongDirection(2)
+ } (0..255)
+
+ AdverseWeatherCondition-ExtremeWeatherConditionSubCauseCode ::= INTEGER {
+ unavailable(0),
+ strongWinds(1),
+ damagingHail(2),
+ hurricane(3),
+ thunderstorm(4),
+ tornado(5),
+ blizzard(6)
+ } (0..255)
+
+ AdverseWeatherCondition-AdhesionSubCauseCode ::= INTEGER {
+ unavailable(0),
+ heavyFrostOnRoad(1),
+ fuelOnRoad(2),
+ mudOnRoad(3),
+ snowOnRoad(4),
+ iceOnRoad(5),
+ blackIceOnRoad(6),
+ oilOnRoad(7),
+ looseChippings(8),
+ instantBlackIce(9),
+ roadsSalted(10)
+ } (0..255)
+
+ AdverseWeatherCondition-VisibilitySubCauseCode ::= INTEGER {
+ unavailable(0),
+ fog(1),
+ smoke(2),
+ heavySnowfall(3),
+ heavyRain(4),
+ heavyHail(5),
+ lowSunGlare(6),
+ sandstorms(7),
+ swarmsOfInsects(8)
+ } (0..255)
+
+ AdverseWeatherCondition-PrecipitationSubCauseCode ::= INTEGER {
+ unavailable(0),
+ heavyRain(1),
+ heavySnowfall(2),
+ softHail(3)
+ } (0..255)
+
+ SlowVehicleSubCauseCode ::= INTEGER {
+ unavailable(0),
+ maintenanceVehicle(1),
+ vehiclesSlowingToLookAtAccident(2),
+ abnormalLoad(3),
+ abnormalWideLoad(4),
+ convoy(5),
+ snowplough(6),
+ deicing(7),
+ saltingVehicles(8)
+ } (0..255)
+
+ StationaryVehicleSubCauseCode ::= INTEGER {
+ unavailable(0),
+ humanProblem(1),
+ vehicleBreakdown(2),
+ postCrash(3),
+ publicTransportStop(4),
+ carryingDangerousGoods(5)
+ } (0..255)
+
+ HumanProblemSubCauseCode ::= INTEGER {
+ unavailable(0),
+ glycemiaProblem(1),
+ heartProblem(2)
+ } (0..255)
+
+ EmergencyVehicleApproachingSubCauseCode ::= INTEGER {
+ unavailable(0),
+ emergencyVehicleApproaching(1),
+ prioritizedVehicleApproaching(2)
+ } (0..255)
+
+ HazardousLocation-DangerousCurveSubCauseCode ::= INTEGER {
+ unavailable(0),
+ dangerousLeftTurnCurve(1),
+ dangerousRightTurnCurve(2),
+ multipleCurvesStartingWithUnknownTurningDirection(3),
+ multipleCurvesStartingWithLeftTurn(4),
+ multipleCurvesStartingWithRightTurn(5)
+ } (0..255)
+
+ HazardousLocation-SurfaceConditionSubCauseCode ::= INTEGER {
+ unavailable(0),
+ rockfalls(1),
+ earthquakeDamage(2),
+ sewerCollapse(3),
+ subsidence(4),
+ snowDrifts(5),
+ stormDamage(6),
+ burstPipe(7),
+ volcanoEruption(8),
+ fallingIce(9)
+ } (0..255)
+
+ HazardousLocation-ObstacleOnTheRoadSubCauseCode ::= INTEGER {
+ unavailable(0),
+ shedLoad(1),
+ partsOfVehicles(2),
+ partsOfTyres(3),
+ bigObjects(4),
+ fallenTrees(5),
+ hubCaps(6),
+ waitingVehicles(7)
+ } (0..255)
+
+ HazardousLocation-AnimalOnTheRoadSubCauseCode ::= INTEGER {
+ unavailable(0),
+ wildAnimals(1),
+ herdOfAnimals(2),
+ smallAnimals(3),
+ largeAnimals(4)
+ } (0..255)
+
+ CollisionRiskSubCauseCode ::= INTEGER {
+ unavailable(0),
+ longitudinalCollisionRisk(1),
+ crossingCollisionRisk(2),
+ lateralCollisionRisk(3),
+ vulnerableRoadUser(4)
+ } (0..255)
+
+ SignalViolationSubCauseCode ::= INTEGER {
+ unavailable(0),
+ stopSignViolation(1),
+ trafficLightViolation(2),
+ turningRegulationViolation(3)
+ } (0..255)
+
+ RescueAndRecoveryWorkInProgressSubCauseCode ::= INTEGER {
+ unavailable(0),
+ emergencyVehicles(1),
+ rescueHelicopterLanding(2),
+ policeActivityOngoing(3),
+ medicalEmergencyOngoing(4),
+ childAbductionInProgress(5)
+ } (0..255)
+
+ DangerousEndOfQueueSubCauseCode ::= INTEGER {
+ unavailable(0),
+ suddenEndOfQueue(1),
+ queueOverHill(2),
+ queueAroundBend(3),
+ queueInTunnel(4)
+ } (0..255)
+
+ DangerousSituationSubCauseCode ::= INTEGER {
+ unavailable(0),
+ emergencyElectronicBrakeEngaged(1),
+ preCrashSystemEngaged(2),
+ espEngaged(3),
+ absEngaged(4),
+ aebEngaged(5),
+ brakeWarningEngaged(6),
+ collisionRiskWarningEngaged(7)
+ } (0..255)
+
+ VehicleBreakdownSubCauseCode ::= INTEGER {
+ unavailable(0),
+ lackOfFuel(1),
+ lackOfBatteryPower(2),
+ engineProblem(3),
+ transmissionProblem(4),
+ engineCoolingProblem(5),
+ brakingSystemProblem(6),
+ steeringProblem(7),
+ tyrePuncture(8)
+ } (0..255)
+
+ PostCrashSubCauseCode ::= INTEGER {
+ unavailable(0),
+ accidentWithoutECallTriggered(1),
+ accidentWithECallManuallyTriggered(2),
+ accidentWithECallAutomaticallyTriggered(3),
+ accidentWithECallTriggeredWithoutAccessToCellularNetwork(4)
+ } (0..255)
+
+ Curvature ::= SEQUENCE {
+ curvatureValue CurvatureValue,
+ curvatureConfidence CurvatureConfidence
+ }
+
+ CurvatureValue ::= INTEGER {
+ straight(0),
+ reciprocalOf1MeterRadiusToRight(-30000),
+ reciprocalOf1MeterRadiusToLeft(30000),
+ unavailable(30001)
+ } (-30000..30001)
+
+ CurvatureConfidence ::= ENUMERATED {
+ onePerMeter-0-00002(0),
+ onePerMeter-0-0001(1),
+ onePerMeter-0-0005(2),
+ onePerMeter-0-002(3),
+ onePerMeter-0-01(4),
+ onePerMeter-0-1(5),
+ outOfRange(6),
+ unavailable(7)
+ }
+
+ CurvatureCalculationMode ::= ENUMERATED {
+ yawRateUsed(0),
+ yawRateNotUsed(1),
+ unavailable(2),
+ ...
+ }
+
+ Heading ::= SEQUENCE {
+ headingValue HeadingValue,
+ headingConfidence HeadingConfidence
+ }
+
+ HeadingValue ::= INTEGER {
+ wgs84North(0),
+ wgs84East(900),
+ wgs84South(1800),
+ wgs84West(2700),
+ unavailable(3601)
+ } (0..3601)
+
+ HeadingConfidence ::= INTEGER {
+ equalOrWithinZeroPointOneDegree(1),
+ equalOrWithinOneDegree(10),
+ outOfRange(126),
+ unavailable(127)
+ } (1..127)
+
+ LanePosition ::= INTEGER {
+ offTheRoad(-1),
+ hardShoulder(0),
+ outermostDrivingLane(1),
+ secondLaneFromOutside(2)
+ } (-1..14)
+
+ ClosedLanes ::= SEQUENCE {
+ hardShoulderStatus HardShoulderStatus OPTIONAL,
+ drivingLaneStatus DrivingLaneStatus,
+ ...
+ }
+
+ HardShoulderStatus ::= ENUMERATED {
+ availableForStopping(0),
+ closed(1),
+ availableForDriving(2)
+ }
+
+ DrivingLaneStatus ::= BIT STRING {
+ outermostLaneClosed(1),
+ secondLaneFromOutsideClosed(2)
+ } (SIZE (1..14))
+
+ PerformanceClass ::= INTEGER {
+ unavailable(0),
+ performanceClassA(1),
+ performanceClassB(2)
+ } (0..7)
+
+ SpeedValue ::= INTEGER {
+ standstill(0),
+ oneCentimeterPerSec(1),
+ unavailable(16383)
+ } (0..16383)
+
+ SpeedConfidence ::= INTEGER {
+ equalOrWithinOneCentimeterPerSec(1),
+ equalOrWithinOneMeterPerSec(100),
+ outOfRange(126),
+ unavailable(127)
+ } (1..127)
+
+ VehicleMass ::= INTEGER {
+ hundredKg(1),
+ unavailable(1024)
+ } (1..1024)
+
+ Speed ::= SEQUENCE {
+ speedValue SpeedValue,
+ speedConfidence SpeedConfidence
+ }
+
+ DriveDirection ::= ENUMERATED {
+ forward(0),
+ backward(1),
+ unavailable(2)
+ }
+
+ EmbarkationStatus ::= BOOLEAN
+
+ LongitudinalAcceleration ::= SEQUENCE {
+ longitudinalAccelerationValue LongitudinalAccelerationValue,
+ longitudinalAccelerationConfidence AccelerationConfidence
+ }
+
+ LongitudinalAccelerationValue ::= INTEGER {
+ pointOneMeterPerSecSquaredForward(1),
+ pointOneMeterPerSecSquaredBackward(-1),
+ unavailable(161)
+ } (-160..161)
+
+ AccelerationConfidence ::= INTEGER {
+ pointOneMeterPerSecSquared(1),
+ outOfRange(101),
+ unavailable(102)
+ } (0..102)
+
+ LateralAcceleration ::= SEQUENCE {
+ lateralAccelerationValue LateralAccelerationValue,
+ lateralAccelerationConfidence AccelerationConfidence
+ }
+
+ LateralAccelerationValue ::= INTEGER {
+ pointOneMeterPerSecSquaredToRight(-1),
+ pointOneMeterPerSecSquaredToLeft(1),
+ unavailable(161)
+ } (-160..161)
+
+ VerticalAcceleration ::= SEQUENCE {
+ verticalAccelerationValue VerticalAccelerationValue,
+ verticalAccelerationConfidence AccelerationConfidence
+ }
+
+ VerticalAccelerationValue ::= INTEGER {
+ pointOneMeterPerSecSquaredUp(1),
+ pointOneMeterPerSecSquaredDown(-1),
+ unavailable(161)
+ } (-160..161)
+
+ StationType ::= INTEGER {
+ unknown(0),
+ pedestrian(1),
+ cyclist(2),
+ moped(3),
+ motorcycle(4),
+ passengerCar(5),
+ bus(6),
+ lightTruck(7),
+ heavyTruck(8),
+ trailer(9),
+ specialVehicles(10),
+ tram(11),
+ roadSideUnit(15)
+ } (0..255)
+
+ ExteriorLights ::= BIT STRING {
+ lowBeamHeadlightsOn(0),
+ highBeamHeadlightsOn(1),
+ leftTurnSignalOn(2),
+ rightTurnSignalOn(3),
+ daytimeRunningLightsOn(4),
+ reverseLightOn(5),
+ fogLightOn(6),
+ parkingLightsOn(7)
+ } (SIZE (8))
+
+ DangerousGoodsBasic ::= ENUMERATED {
+ explosives1(0),
+ explosives2(1),
+ explosives3(2),
+ explosives4(3),
+ explosives5(4),
+ explosives6(5),
+ flammableGases(6),
+ nonFlammableGases(7),
+ toxicGases(8),
+ flammableLiquids(9),
+ flammableSolids(10),
+ substancesLiableToSpontaneousCombustion(11),
+ substancesEmittingFlammableGasesUponContactWithWater(12),
+ oxidizingSubstances(13),
+ organicPeroxides(14),
+ toxicSubstances(15),
+ infectiousSubstances(16),
+ radioactiveMaterial(17),
+ corrosiveSubstances(18),
+ miscellaneousDangerousSubstances(19)
+ }
+
+ DangerousGoodsExtended ::= SEQUENCE {
+ dangerousGoodsType DangerousGoodsBasic,
+ unNumber INTEGER (0..9999),
+ elevatedTemperature BOOLEAN,
+ tunnelsRestricted BOOLEAN,
+ limitedQuantity BOOLEAN,
+ emergencyActionCode IA5String (SIZE (1..24)) OPTIONAL,
+ phoneNumber IA5String (SIZE (1..24)) OPTIONAL,
+ companyName UTF8String (SIZE (1..24)) OPTIONAL
+ }
+
+ SpecialTransportType ::= BIT STRING {
+ heavyLoad(0),
+ excessWidth(1),
+ excessLength(2),
+ excessHeight(3)
+ } (SIZE (4))
+
+ LightBarSirenInUse ::= BIT STRING {
+ lightBarActivated(0),
+ sirenActivated(1)
+ } (SIZE (2))
+
+ HeightLonCarr ::= INTEGER {
+ oneCentimeter(1),
+ unavailable(100)
+ } (1..100)
+
+ PosLonCarr ::= INTEGER {
+ oneCentimeter(1),
+ unavailable(127)
+ } (1..127)
+
+ PosPillar ::= INTEGER {
+ tenCentimeters(1),
+ unavailable(30)
+ } (1..30)
+
+ PosCentMass ::= INTEGER {
+ tenCentimeters(1),
+ unavailable(63)
+ } (1..63)
+
+ RequestResponseIndication ::= ENUMERATED {
+ request(0),
+ response(1)
+ }
+
+ SpeedLimit ::= INTEGER {
+ oneKmPerHour(1)
+ } (1..255)
+
+ StationarySince ::= ENUMERATED {
+ lessThan1Minute(0),
+ lessThan2Minutes(1),
+ lessThan15Minutes(2),
+ equalOrGreater15Minutes(3)
+ }
+
+ Temperature ::= INTEGER {
+ equalOrSmallerThanMinus60Deg(-60),
+ oneDegreeCelsius(1),
+ equalOrGreaterThan67Deg(67)
+ } (-60..67)
+
+ TrafficRule ::= ENUMERATED {
+ noPassing(0),
+ noPassingForTrucks(1),
+ passToRight(2),
+ passToLeft(3),
+ ...
+ }
+
+ WheelBaseVehicle ::= INTEGER {
+ tenCentimeters(1),
+ unavailable(127)
+ } (1..127)
+
+ TurningRadius ::= INTEGER {
+ point4Meters(1),
+ unavailable(255)
+ } (1..255)
+
+ PosFrontAx ::= INTEGER {
+ tenCentimeters(1),
+ unavailable(20)
+ } (1..20)
+
+ PositionOfOccupants ::= BIT STRING {
+ row1LeftOccupied(0),
+ row1RightOccupied(1),
+ row1MidOccupied(2),
+ row1NotDetectable(3),
+ row1NotPresent(4),
+ row2LeftOccupied(5),
+ row2RightOccupied(6),
+ row2MidOccupied(7),
+ row2NotDetectable(8),
+ row2NotPresent(9),
+ row3LeftOccupied(10),
+ row3RightOccupied(11),
+ row3MidOccupied(12),
+ row3NotDetectable(13),
+ row3NotPresent(14),
+ row4LeftOccupied(15),
+ row4RightOccupied(16),
+ row4MidOccupied(17),
+ row4NotDetectable(18),
+ row4NotPresent(19)
+ } (SIZE (20))
+
+ PositioningSolutionType ::= ENUMERATED {
+ noPositioningSolution(0),
+ sGNSS(1),
+ dGNSS(2),
+ sGNSSplusDR(3),
+ dGNSSplusDR(4),
+ dR(5),
+ ...
+ }
+
+ VehicleIdentification ::= SEQUENCE {
+ wMInumber WMInumber OPTIONAL,
+ vDS VDS OPTIONAL,
+ ...
+ }
+
+ WMInumber ::= IA5String (SIZE (1..3))
+
+ VDS ::= IA5String (SIZE (6))
+
+ EnergyStorageType ::= BIT STRING {
+ hydrogenStorage(0),
+ electricEnergyStorage(1),
+ liquidPropaneGas(2),
+ compressedNaturalGas(3),
+ diesel(4),
+ gasoline(5),
+ ammonia(6)
+ } (SIZE (7))
+
+ VehicleLength ::= SEQUENCE {
+ vehicleLengthValue VehicleLengthValue,
+ vehicleLengthConfidenceIndication VehicleLengthConfidenceIndication
+ }
+
+ VehicleLengthValue ::= INTEGER {
+ tenCentimeters(1),
+ outOfRange(1022),
+ unavailable(1023)
+ } (1..1023)
+
+ VehicleLengthConfidenceIndication ::= ENUMERATED {
+ noTrailerPresent(0),
+ trailerPresentWithKnownLength(1),
+ trailerPresentWithUnknownLength(2),
+ trailerPresenceIsUnknown(3),
+ unavailable(4)
+ }
+
+ VehicleWidth ::= INTEGER {
+ tenCentimeters(1),
+ outOfRange(61),
+ unavailable(62)
+ } (1..62)
+
+ PathHistory ::= SEQUENCE SIZE (0..40) OF PathPoint
+
+ EmergencyPriority ::= BIT STRING {
+ requestForRightOfWay(0),
+ requestForFreeCrossingAtATrafficLight(1)
+ } (SIZE (2))
+
+ InformationQuality ::= INTEGER {
+ unavailable(0),
+ lowest(1),
+ highest(7)
+ } (0..7)
+
+ RoadType ::= ENUMERATED {
+ urban-NoStructuralSeparationToOppositeLanes(0),
+ urban-WithStructuralSeparationToOppositeLanes(1),
+ nonUrban-NoStructuralSeparationToOppositeLanes(2),
+ nonUrban-WithStructuralSeparationToOppositeLanes(3)
+ }
+
+ SteeringWheelAngle ::= SEQUENCE {
+ steeringWheelAngleValue SteeringWheelAngleValue,
+ steeringWheelAngleConfidence SteeringWheelAngleConfidence
+ }
+
+ SteeringWheelAngleValue ::= INTEGER {
+ straight(0),
+ onePointFiveDegreesToRight(-1),
+ onePointFiveDegreesToLeft(1),
+ unavailable(512)
+ } (-511..512)
+
+ SteeringWheelAngleConfidence ::= INTEGER {
+ equalOrWithinOnePointFiveDegree(1),
+ outOfRange(126),
+ unavailable(127)
+ } (1..127)
+
+ TimestampIts ::= INTEGER {
+ utcStartOf2004(0),
+ oneMillisecAfterUTCStartOf2004(1)
+ } (0..4398046511103)
+
+ VehicleRole ::= ENUMERATED {
+ default(0),
+ publicTransport(1),
+ specialTransport(2),
+ dangerousGoods(3),
+ roadWork(4),
+ rescue(5),
+ emergency(6),
+ safetyCar(7),
+ agriculture(8),
+ commercial(9),
+ military(10),
+ roadOperator(11),
+ taxi(12),
+ reserved1(13),
+ reserved2(14),
+ reserved3(15)
+ }
+
+ YawRate ::= SEQUENCE {
+ yawRateValue YawRateValue,
+ yawRateConfidence YawRateConfidence
+ }
+
+ YawRateValue ::= INTEGER {
+ straight(0),
+ degSec-000-01ToRight(-1),
+ degSec-000-01ToLeft(1),
+ unavailable(32767)
+ } (-32766..32767)
+
+ YawRateConfidence ::= ENUMERATED {
+ degSec-000-01(0),
+ degSec-000-05(1),
+ degSec-000-10(2),
+ degSec-001-00(3),
+ degSec-005-00(4),
+ degSec-010-00(5),
+ degSec-100-00(6),
+ outOfRange(7),
+ unavailable(8)
+ }
+
+ ProtectedZoneType ::= ENUMERATED {
+ cenDsrcTolling(0),
+ ...
+ }
+
+ RelevanceDistance ::= ENUMERATED {
+ lessThan50m(0),
+ lessThan100m(1),
+ lessThan200m(2),
+ lessThan500m(3),
+ lessThan1000m(4),
+ lessThan5km(5),
+ lessThan10km(6),
+ over10km(7)
+ }
+
+ RelevanceTrafficDirection ::= ENUMERATED {
+ allTrafficDirections(0),
+ upstreamTraffic(1),
+ downstreamTraffic(2),
+ oppositeTraffic(3)
+ }
+
+ TransmissionInterval ::= INTEGER {
+ oneMilliSecond(1),
+ tenSeconds(10000)
+ } (1..10000)
+
+ ValidityDuration ::= INTEGER {
+ timeOfDetection(0),
+ oneSecondAfterDetection(1)
+ } (0..86400)
+
+ ActionID ::= SEQUENCE {
+ originatingStationID StationID,
+ sequenceNumber SequenceNumber
+ }
+
+ ItineraryPath ::= SEQUENCE SIZE (1..40) OF ReferencePosition
+
+ ProtectedCommunicationZone ::= SEQUENCE {
+ protectedZoneType ProtectedZoneType,
+ expiryTime TimestampIts OPTIONAL,
+ protectedZoneLatitude Latitude,
+ protectedZoneLongitude Longitude,
+ protectedZoneRadius ProtectedZoneRadius OPTIONAL,
+ protectedZoneID ProtectedZoneID OPTIONAL
+ }
+
+ Traces ::= SEQUENCE SIZE (1..7) OF PathHistory
+
+ NumberOfOccupants ::= INTEGER {
+ oneOccupant(1),
+ unavailable(127)
+ } (0..127)
+
+ SequenceNumber ::= INTEGER (0..65535)
+
+ PositionOfPillars ::= SEQUENCE SIZE (1..3, ...) OF PosPillar
+
+ RestrictedTypes ::= SEQUENCE SIZE (1..3, ...) OF StationType
+
+ EventHistory ::= SEQUENCE SIZE (1..23) OF EventPoint
+
+ EventPoint ::= SEQUENCE {
+ eventPosition DeltaReferencePosition,
+ eventDeltaTime PathDeltaTime OPTIONAL,
+ informationQuality InformationQuality
+ }
+
+ ProtectedCommunicationZonesRSU ::= SEQUENCE SIZE (1..16) OF
+ ProtectedCommunicationZone
+
+ CenDsrcTollingZone ::= SEQUENCE {
+ protectedZoneLatitude Latitude,
+ protectedZoneLongitude Longitude,
+ cenDsrcTollingZoneID CenDsrcTollingZoneID OPTIONAL
+ }
+
+ ProtectedZoneRadius ::= INTEGER {
+ oneMeter(1)
+ } (1..255, ...)
+
+ ProtectedZoneID ::= INTEGER (0..134217727)
+
+ CenDsrcTollingZoneID ::= ProtectedZoneID
+
+END
diff --git a/BNCompiler/src/test/resources/test.asn b/BNCompiler/src/test/resources/test.asn
index c67f2624..86b51dc3 100644
--- a/BNCompiler/src/test/resources/test.asn
+++ b/BNCompiler/src/test/resources/test.asn
@@ -6,6 +6,11 @@ EXPORTS TestOCT,TestPRN,TestIA5,TestI32,TestI16,TestI8,ContentType,ValueWithPara
TestIR ::= INTEGER (1 .. 5)
TestI8 ::= INTEGER (0 .. 255)
+ TestI8named ::= INTEGER {
+ a(1),
+ b(2),
+ d(5)
+ } (0 .. 253)
TestI14 ::= INTEGER (0 .. 16384)
TestI16 ::= INTEGER (0 .. 65535)
TestI32 ::= INTEGER (0 .. 4294967295)
@@ -139,6 +144,12 @@ EXPORTS TestOCT,TestPRN,TestIA5,TestI32,TestI16,TestI8,ContentType,ValueWithPara
application_smil (500) -- SMIL
}
+ MixedEnumType ::= ENUMERATED {
+ high (101),
+ low (3),
+ mid (8)
+ }
+
ContentSchema ::= ENUMERATED {
multipart_any (110),
multipart_mixed (111),
@@ -292,16 +303,20 @@ EXPORTS TestOCT,TestPRN,TestIA5,TestI32,TestI16,TestI8,ContentType,ValueWithPara
field1 [0] INTEGER,
field2 [1] OCTET STRING OPTIONAL,
field3 [2] UTF8String DEFAULT field3Default,
- field4 [3] INTEGER
+ field4 [3] INTEGER,
+ field5 INTEGER {
+ c(16),
+ e(31)
+ } (-4..251)
}
TestTParent ::= TestParent
TestChild3 ::= SEQUENCE {
COMPONENTS OF TestTParent,
- field5 [4] UTF8String,
+ field6 [4] UTF8String,
COMPONENTS OF SEQUENCE {
- field6 [5] INTEGER DEFAULT 0
+ field7 [5] INTEGER DEFAULT 0
}
}
@@ -330,6 +345,8 @@ EXPORTS TestOCT,TestPRN,TestIA5,TestI32,TestI16,TestI8,ContentType,ValueWithPara
field3 [2] INTEGER
}
+ TestSeqSize ::= SEQUENCE (SIZE(0..40)) OF INTEGER
+
FQDN ::= VisibleString(
FROM ( "a".."z" | "A".."Z" |"0".."9"| ".-" )
@@ -383,4 +400,42 @@ EXPORTS TestOCT,TestPRN,TestIA5,TestI32,TestI16,TestI8,ContentType,ValueWithPara
Set7 ::= [APPLICATION 90] IMPLICIT SET {
set6 Set6
}
+
+ ProtectedZoneType ::= ENUMERATED {
+ permanentCenDsrcTolling(0),
+ ...,
+ temporaryCenDsrcTolling(1)
+ }
+
+ ExtendedEnumSeq ::= SEQUENCE {
+ prot ProtectedZoneType,
+ tail INTEGER (0..255)
+ }
+
+ DataSeqExtensible ::= SEQUENCE {
+ simpleInt [0] INTEGER (0 .. 255),
+ simpleBool [1] BOOLEAN,
+ optBool [2] BOOLEAN OPTIONAL,
+ ...,
+ extendedInt1 [3] INTEGER (0..63) OPTIONAL,
+ extendedInt2 [4] INTEGER (0..100000)
+ }
+
+ ChoiceType ::= CHOICE {
+ field10 [0] INTEGER,
+ field20 [1] OCTET STRING,
+ ...,
+ field30 [2] UTF8String,
+ field40 [3] INTEGER
+ }
+
+ ExtendedChoiceSeq ::= SEQUENCE {
+ choi ChoiceType,
+ tail INTEGER (0..255)
+ }
+
+ SubInteger ::= INTEGER (0..63)
+
+ ExtensibleSize ::= SEQUENCE (SIZE(1..3,...)) OF SubInteger
+ ExtensibleInteger ::= INTEGER(0..63,...)
END
diff --git a/BNCompiler/temp.xml b/BNCompiler/temp.xml
new file mode 100644
index 00000000..b0343282
--- /dev/null
+++ b/BNCompiler/temp.xml
@@ -0,0 +1,7602 @@
+
+
+ testworkdir\output
+ test_asn
+
+
+
+ BIT STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ TestBitStr
+
+
+ BIT STRING
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 1
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 16
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+false
+false
+false
+false
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestBitStrBnd
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ TestPRN
+ PrintableString
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ TestIA5
+ IA5String
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ ITUType1
+ VisibleString
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ TestUnicodeStr
+ UTF8String
+
+
+ CHARACTER STRING
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 12
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+false
+false
+false
+false
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ TestUnicodeStrBnd
+ UTF8String
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ TestGT
+ GeneralizedTime
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ TestUTC
+ UTCTime
+
+
+ CHARACTER STRING
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 1
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+false
+false
+false
+false
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ FQDN
+ VisibleString
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ plain
+
+
+0
+
+
+
+ TestPRN
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ unicode
+
+
+1
+
+
+
+ TestOCT
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ binary
+
+
+2
+
+
+
+ TestOCT
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ simpleType
+
+
+3
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ simpleOctType
+
+
+4
+
+
+
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ booleanType
+
+
+5
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ intType
+
+
+6
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ intBndType
+
+
+7
+
+
+
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+ false
+
+ Data
+ true
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ bugBoolean
+
+
+0
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ bugInteger
+
+
+1
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+ false
+
+ BugPrimitive
+ true
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ bugPrimitive
+
+
+0
+
+
+
+ BugPrimitive
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ bugEnum
+
+
+1
+
+
+
+ BugEnum
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ bugSequence
+
+
+2
+
+
+
+ BugSequenceType
+
+ false
+
+ BugValueType
+ true
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ testa
+
+
+33
+
+
+
+ TestLongTag2Choice
+
+ false
+
+ TestLongTag2
+ true
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field10
+
+
+0
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field20
+
+
+1
+
+
+
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field30
+
+
+2
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTF8String
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field40
+
+
+3
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+ false
+
+ TestParent2
+ true
+
+
+
+
+ true
+ false
+ true
+ false
+ false
+ false
+ false
+ TestTParent2
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field5
+
+
+4
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTF8String
+
+
+
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field6
+
+
+ 7
+
+
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ UTF8String
+
+
+false
+
+
+ true
+
+
+ false
+
+ TestChild2
+ true
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field10
+
+
+0
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field20
+
+
+1
+
+
+
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ true
+ true
+ false
+ field30
+
+
+2
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTF8String
+
+
+
+ false
+ false
+ false
+ false
+ true
+ true
+ false
+ field40
+
+
+3
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+ true
+
+ ChoiceType
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ TestTParent
+ TestParent
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ TestTParent2
+ TestParent2
+
+
+ ContentType
+
+
+ true
+ text_any
+
+ 100
+ true
+
+
+
+ true
+ text_html
+
+ 101
+ true
+
+
+
+ true
+ text_plain
+
+ 102
+ true
+
+
+
+ true
+ audio_x_midi
+
+ 306
+ true
+
+
+
+ true
+ video_any
+
+ 400
+ true
+
+
+
+ true
+ video_mpeg
+
+ 401
+ true
+
+
+
+ true
+ video_avi
+
+ 402
+ true
+
+
+
+ true
+ video_quicktime
+
+ 403
+ true
+
+
+
+ true
+ video_x_msvideo
+
+ 404
+ true
+
+
+
+ true
+ application_smil
+
+ 500
+ true
+
+
+ false
+ true
+ 10
+
+
+ true
+
+
+ MixedEnumType
+
+
+ true
+ low
+
+ 3
+ true
+
+
+
+ true
+ mid
+
+ 8
+ true
+
+
+
+ true
+ high
+
+ 101
+ true
+
+
+ false
+ true
+ 3
+
+
+ true
+
+
+ ContentSchema
+
+
+ true
+ multipart_any
+
+ 110
+ true
+
+
+
+ true
+ multipart_mixed
+
+ 111
+ true
+
+
+
+ true
+ multipart_form_data
+
+ 112
+ true
+
+
+
+ true
+ multipart_byteranges
+
+ 113
+ true
+
+
+
+ true
+ multipart_alternative
+
+ 114
+ true
+
+
+
+ true
+ multipart_related
+
+ 175
+ true
+
+
+ false
+ true
+ 6
+
+
+ true
+
+
+ ProtectedZoneType
+
+
+ true
+ permanentCenDsrcTolling
+
+ 0
+ true
+
+
+
+ true
+ temporaryCenDsrcTolling
+
+ 1
+ true
+
+
+ true
+ true
+ 1
+
+
+ true
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 1
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 5
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestIR
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestI8
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 253
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestI8named
+
+
+ true
+ a
+
+ 1
+ true
+
+
+
+ true
+ b
+
+ 2
+ true
+
+
+
+ true
+ d
+
+ 5
+ true
+
+
+ false
+ false
+ 3
+
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 16384
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestI14
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 65535
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestI16
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 4294967295
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestI32
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ TestI
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 128
+ false
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 128
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestNI
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 2048
+ false
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 2048
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestNI2
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ BugEnum
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 1
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 2247483648
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ TestLong
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 63
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ SubInteger
+
+
+ INTEGER
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 63
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ true
+ false
+ true
+ false
+ false
+
+ ExtensibleInteger
+
+
+ NullSequence
+ true
+
+
+ OBJECT IDENTIFIER
+ TestOID
+
+
+ OCTET STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ TestOCT
+
+
+ REAL
+ TestReal
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ plain
+
+
+0
+
+
+
+ TestPRN
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ unicode
+
+
+1
+
+
+
+ TestOCT
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ binary
+
+
+2
+
+
+
+ TestOCT
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ simpleType
+
+
+3
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ simpleOctType
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ booleanType
+
+
+5
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ intType
+
+
+6
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ intBndType
+
+
+7
+
+
+
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ stringArray
+
+
+8
+
+
+
+
+ false
+ true
+ false
+
+
+
+CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+false
+
+PrintableString
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ dataArray
+
+
+9
+
+
+
+
+ true
+ true
+ false
+
+ Data
+
+
+
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ extension
+
+ ANY
+
+ false
+
+
+
+ false
+
+ true
+ DataSeq
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ plain
+
+
+0
+
+
+
+ TestPRN
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ unicode
+
+
+1
+
+
+
+ TestOCT
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ binary
+
+
+2
+
+
+
+ TestOCT
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ simpleType
+
+
+3
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ simpleOctType
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ booleanType
+
+
+5
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ intType
+
+
+6
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ intBndType
+
+
+7
+
+
+
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ stringArray
+
+
+8
+
+
+
+
+ false
+ true
+ false
+
+
+
+CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+false
+
+PrintableString
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ dataArray
+
+
+9
+
+
+
+
+ true
+ true
+ false
+
+ Data
+
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ plain2
+
+
+10
+
+
+
+ TestPRN
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ unicode2
+
+
+18
+
+
+
+ TestOCT
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ binary2
+
+
+11
+
+
+
+ TestOCT
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ simpleType2
+
+
+12
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ simpleOctType2
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ booleanType2
+
+
+13
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ intType2
+
+
+19
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ intBndType2
+
+
+14
+
+
+
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ stringArray2
+
+
+15
+
+
+
+
+ false
+ true
+ false
+
+
+
+CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+false
+
+PrintableString
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ dataArray2
+
+
+16
+
+
+
+
+ true
+ true
+ false
+
+ Data
+
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ plain3
+
+
+17
+
+
+
+ TestPRN
+
+ false
+
+ true
+ DataSeqMO
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ type1
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ VisibleString
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ true
+ type2
+
+
+3
+
+ APPLICATION
+
+ ITUType1
+ IMPLICIT
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ type3
+
+
+2
+
+
+
+ ITUType2
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ true
+ type4
+
+
+7
+
+ APPLICATION
+
+ ITUType3
+ IMPLICIT
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ true
+ type5
+
+
+2
+
+
+
+ ITUType2
+ IMPLICIT
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ type6
+
+
+7
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ VisibleString
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ type7
+
+
+8
+
+
+
+ ITUType6
+
+ false
+
+ true
+ ITUSequence
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ test
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ nullVal
+
+
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ test2
+
+
+1
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+ false
+
+ true
+ SequenceWithNull
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ value
+
+
+0
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ params
+
+
+1
+
+
+
+
+ true
+ true
+ false
+
+ PlainParamsMap
+
+
+ false
+
+ true
+ ValueWithParams
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ param_name
+
+
+1
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ param_value
+
+
+2
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+ false
+
+ true
+ PlainParamsMap
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ name
+
+
+0
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ values
+
+
+1
+
+
+
+
+ true
+ true
+ false
+
+ ValueWithParams
+
+
+ false
+
+ true
+ ContentPartHeader
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ item
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ enval
+ ContentSchema
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ taggedEnval
+
+
+1
+
+
+
+ ContentSchema
+
+ false
+
+ true
+ SequenceWithEnum
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ name
+
+
+1
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ value
+
+
+2
+
+
+
+ TestRecursiveDefinetion
+
+ false
+
+ true
+ TestRecursiveDefinetion
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ nodefault
+
+
+0
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ withDefault
+
+
+1
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+ "dd"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ withIntDef
+
+
+2
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+120
+true
+
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ withSeqDef
+
+
+3
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ name
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ email
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ PrintableString
+
+
+false
+
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+true
+
+ name
+
+ "Name"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ email
+
+ "Email"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+
+ false
+ true
+ true
+ false
+ false
+ true
+ false
+ withOctDef
+
+
+4
+
+
+
+ TestOCT
+
+
+'01101100'B
+true
+false
+
+
+false
+false
+
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ withOctDef2
+
+
+5
+
+
+
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+'FFEEAA'H
+false
+true
+
+
+false
+false
+
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ withSeqOf
+
+
+6
+
+
+
+
+ false
+ true
+ false
+
+
+
+CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+false
+
+PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+
+
+ "aa"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+ "dd"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ withSeqOf2
+
+
+7
+
+
+
+
+ true
+ true
+ false
+
+ TestPRN
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+
+
+ "cc"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+ "ee"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ true
+ true
+ false
+ false
+ true
+ false
+ withSeqOf3
+
+
+8
+
+
+
+ StringArray
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+
+
+ "fff"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+ "ggg"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ withEnumDef
+
+
+9
+
+
+
+
+
+
+
+ true
+ one
+
+ 1
+ true
+
+
+
+ true
+ two
+
+ 2
+ true
+
+
+
+ true
+ three
+
+ 3
+ true
+
+
+false
+true
+3
+
+
+ true
+
+
+
+false
+two
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+ false
+
+ true
+ SequenceWithDefault
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ nodefault
+
+
+2
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ nodefault2
+
+
+1
+
+
+
+ TestPRN
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ default3
+
+
+3
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+ "DDDdd"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+ false
+
+ false
+ SetWithDefault
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ seq
+
+
+0
+
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ it1
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+false
+
+ true
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ ch
+
+
+1
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ it1
+
+
+ 0
+
+
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ it2
+
+
+ 1
+
+
+
+
+ OCTET STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+false
+
+
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ seqf
+
+
+2
+
+
+
+
+ false
+ true
+ false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ it1
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+ false
+
+true
+
+
+
+
+ false
+
+ true
+ TestSequenceWithNonames
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ attrSimple
+
+
+0
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ attrStr
+
+
+1
+
+
+
+
+ CHARACTER STRING
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+
+ 1
+ true
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+
+ 4
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ attrStr2
+
+
+2
+
+
+
+ TestPRN
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ attrArr
+
+
+3
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 1
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 5
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ true
+ true
+
+
+
+CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+false
+
+PrintableString
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ attrBitStr
+
+
+4
+
+
+
+
+ BIT STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ attrBitStrDef
+
+
+5
+
+
+
+
+ BIT STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+'011'B
+true
+false
+
+
+false
+false
+
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ attrBitStrBnd
+
+
+6
+
+
+
+
+ BIT STRING
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+
+ 1
+ true
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+
+ 36
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+
+ false
+ false
+ true
+ true
+ false
+ true
+ false
+ attrBoxBitStr
+
+
+7
+
+
+
+ TestBitStrBnd
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ attrStrict
+
+
+8
+
+
+
+
+ OCTET STRING
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+
+ 4
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+ false
+
+ true
+ TestSequenceV12
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ booleanField
+
+
+0
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ integerField
+
+
+0
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+ false
+
+ true
+ BugSequenceType
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field1
+
+
+0
+
+
+
+
+ REAL
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ fieldI
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ field2
+ TestReal
+
+
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ field3
+
+ REAL
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field4
+
+
+1
+
+
+
+
+ REAL
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ field5
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ GeneralizedTime
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ field6
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTCTime
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ field7
+ TestLong
+
+ false
+
+ true
+ TestSeqV13
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field1
+
+
+0
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field2
+
+
+1
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTF8String
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field3
+
+
+2
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTF8String
+
+
+ false
+
+ true
+ TestSimpleSequence
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ testb
+
+
+0
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+ false
+
+ true
+ TestLongTag2Choice
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field1
+
+
+0
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ field2
+
+
+1
+
+
+
+
+ OCTET STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ field3
+
+
+2
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTF8String
+
+
+
+false
+field3Default
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field4
+
+
+3
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ field5
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 4
+ false
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 251
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+ true
+ c
+
+ 16
+ true
+
+
+
+ true
+ e
+
+ 31
+ true
+
+
+false
+false
+2
+
+
+
+ false
+
+ true
+ TestParent
+
+
+
+
+ true
+ false
+ true
+ false
+ false
+ false
+ false
+ TestTParent
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field6
+
+
+4
+
+
+
+
+ CHARACTER STRING
+
+false
+false
+false
+false
+false
+false
+false
+
+ false
+
+ UTF8String
+
+
+
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+ false
+ true
+ false
+ false
+ false
+ true
+ false
+ field7
+
+
+ 5
+
+
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+false
+
+ true
+
+
+
+ false
+
+ true
+ TestChild3
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field1
+
+
+0
+
+
+
+
+ OBJECT IDENTIFIER
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ field2
+
+
+1
+
+
+
+
+ OBJECT IDENTIFIER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ field3
+
+
+2
+
+
+
+
+ INTEGER
+
+false
+false
+false
+false
+false
+false
+false
+
+
+
+
+ false
+
+ true
+ TestSeqOID
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ prot
+ ProtectedZoneType
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ tail
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+ false
+
+ true
+ ExtendedEnumSeq
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ simpleInt
+
+
+0
+
+
+
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ simpleBool
+
+
+1
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ optBool
+
+
+2
+
+
+
+
+ BOOLEAN
+
+
+
+
+ false
+ false
+ false
+ true
+ true
+ true
+ false
+ extendedInt1
+
+
+3
+
+
+
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 63
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+
+ false
+ false
+ false
+ false
+ true
+ true
+ false
+ extendedInt2
+
+
+4
+
+
+
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 100000
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+ true
+
+ true
+ DataSeqExtensible
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ choi
+ ChoiceType
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ tail
+
+ INTEGER
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 255
+ true
+
+
+
+ false
+ false
+
+ false
+
+false
+false
+false
+false
+true
+false
+false
+
+
+
+
+ false
+
+ true
+ ExtendedChoiceSeq
+
+
+ true
+ true
+ false
+ DataArray
+ Data
+
+
+ true
+ true
+ false
+ DataSeqArray
+ DataSeq
+
+
+ false
+ true
+ false
+ StringArray
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ PrintableString
+
+
+
+ false
+ true
+ false
+ UTF8StringArray
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ UTF8String
+
+
+
+ false
+ true
+ false
+ OctetStringArray
+
+
+ OCTET STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ true
+ true
+ false
+ ContentPartHeaders
+ ContentPartHeader
+
+
+ true
+ false
+ false
+ SetOfTest
+ Data
+
+
+ true
+ true
+ false
+ BugList
+ BugValueType
+
+
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 0
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 40
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ false
+ false
+ true
+ false
+ false
+
+ false
+ true
+ true
+ TestSeqSize
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+false
+true
+false
+false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 1
+ true
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+
+ 3
+ true
+
+
+
+ false
+ false
+
+ false
+
+ false
+ false
+ true
+ false
+ true
+ false
+ false
+
+ true
+ true
+ true
+ ExtensibleSize
+ SubInteger
+
+
+ true
+ ITUType2
+
+
+ 3
+
+ APPLICATION
+
+ IMPLICIT
+ ITUType1
+
+
+ true
+ ITUType3
+
+
+ 2
+
+
+
+
+ ITUType2
+
+
+ true
+ ITUType4
+
+
+ 7
+
+ APPLICATION
+
+ IMPLICIT
+ ITUType3
+
+
+ true
+ ITUType5
+
+
+ 2
+
+
+
+ IMPLICIT
+ ITUType2
+
+
+ false
+ ITUType6
+
+
+ 9
+
+
+
+
+
+
+ CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+
+ VisibleString
+
+
+
+ false
+ TaggedNullSequence
+
+
+ 1
+
+
+
+
+
+
+
+ true
+
+
+
+ false
+ TaggedSequence
+
+
+ 8
+
+ APPLICATION
+
+
+
+
+
+
+ false
+ false
+ false
+ true
+ false
+ true
+ false
+ type1
+
+
+ 7
+
+
+
+
+CHARACTER STRING
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+false
+
+VisibleString
+
+
+ false
+
+ true
+
+
+
+
+ false
+ TaggedSeqInSeq
+
+
+ 4
+
+ APPLICATION
+
+
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ true
+ false
+ field
+
+
+ 0
+
+
+
+ PlainParamsMap
+
+ false
+
+ true
+
+
+
+
+ false
+ TestLongTag
+
+
+ 15123
+
+ APPLICATION
+
+
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ Test128Tag
+
+
+ 128
+
+ APPLICATION
+
+
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ Minor
+
+
+ 105
+
+ APPLICATION
+
+ IMPLICIT
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ Major
+
+
+ 106
+
+ APPLICATION
+
+ IMPLICIT
+
+
+ INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+
+ false
+ Version
+
+
+ 74
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ true
+ true
+ false
+ false
+ false
+ minor
+ Minor
+
+
+ false
+ false
+ true
+ true
+ false
+ false
+ false
+ major
+ Major
+
+ false
+
+ false
+
+
+
+
+ false
+ LstVersion
+
+
+ 75
+
+ APPLICATION
+
+ IMPLICIT
+
+
+ true
+ false
+ false
+
+ Version
+
+
+
+ false
+ Config
+
+
+ 76
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ lstVersion
+ LstVersion
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ major_config
+ Major
+
+ false
+
+ true
+
+
+
+
+ false
+ Config2
+
+
+ 79
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ lstVersion
+ LstVersion
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ major_config
+ Major
+
+ false
+
+ true
+
+
+
+
+ false
+ TestTaggedSetInSet
+
+
+ 77
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ config1
+ Config
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ config2
+ Config2
+
+ false
+
+ false
+
+
+
+
+ false
+ Set1
+
+
+ 55
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ set1ID
+
+INTEGER
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+
+
+
+ false
+
+ false
+
+
+
+
+ false
+ Set2
+
+
+ 128
+
+ APPLICATION
+
+ IMPLICIT
+
+
+ true
+ false
+ false
+
+ Set1
+
+
+
+ false
+ Set3
+
+
+ 124
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ set2
+ Set2
+
+ false
+
+ false
+
+
+
+
+ false
+ Set4
+
+
+ 61
+
+ APPLICATION
+
+ IMPLICIT
+
+
+ true
+ false
+ false
+
+ Set3
+
+
+
+ false
+ Set5
+
+
+ 127
+
+ APPLICATION
+
+ IMPLICIT
+
+
+ true
+ false
+ false
+
+ Set3
+
+
+
+ false
+ Set6
+
+
+ 56
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ set4
+ Set4
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ set5
+ Set5
+
+ false
+
+ false
+
+
+
+
+ false
+ Set7
+
+
+ 90
+
+ APPLICATION
+
+ IMPLICIT
+
+
+
+
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ set6
+ Set6
+
+ false
+
+ false
+
+
+
+
+
+ "Sssdsd"
+ false
+ false
+ true
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ field3Default
+ CHARACTER STRING
+
+ TestOCT
+ TestPRN
+ TestIA5
+ TestI32
+ TestI16
+ TestI8
+ ContentType
+ ValueWithParams
+ PlainParamsMap
+ ContentPartHeaders
+ ContentPartHeader
+ ContentSchema
+ Data
+ DataArray
+ true
+ false
+ false
+
+
+ false
+
+ TEST_ASN
+
+ true
+ IMPLICIT
+
+
diff --git a/BinaryNotes.NET/BinaryNotes.sln b/BinaryNotes.NET/BinaryNotes.sln
index 51213c2c..99b114c2 100644
--- a/BinaryNotes.NET/BinaryNotes.sln
+++ b/BinaryNotes.NET/BinaryNotes.sln
@@ -1,9 +1,14 @@

Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2012
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinaryNotes", "BinaryNotes\BinaryNotes.csproj", "{7BB91554-CA9A-4F6E-91CB-E34410F215A7}"
+# Visual Studio Version 17
+VisualStudioVersion = 17.12.35707.178
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinaryNotes", "BinaryNotes\BinaryNotes.csproj", "{C837127F-8A68-4261-ACE6-BC7E4B9D3B80}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinaryNotesTests", "BinaryNotesTests\BinaryNotesTests.csproj", "{8776B434-A39C-445E-B989-CCC9E09F9E73}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinaryNotesTests", "BinaryNotesTests\BinaryNotesTests.csproj", "{124F6E46-207D-4D9E-9EDB-EEC964A81796}"
+ ProjectSection(ProjectDependencies) = postProject
+ {C837127F-8A68-4261-ACE6-BC7E4B9D3B80} = {C837127F-8A68-4261-ACE6-BC7E4B9D3B80}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -11,14 +16,14 @@ Global
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {7BB91554-CA9A-4F6E-91CB-E34410F215A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {7BB91554-CA9A-4F6E-91CB-E34410F215A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {7BB91554-CA9A-4F6E-91CB-E34410F215A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {7BB91554-CA9A-4F6E-91CB-E34410F215A7}.Release|Any CPU.Build.0 = Release|Any CPU
- {8776B434-A39C-445E-B989-CCC9E09F9E73}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {8776B434-A39C-445E-B989-CCC9E09F9E73}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {8776B434-A39C-445E-B989-CCC9E09F9E73}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {8776B434-A39C-445E-B989-CCC9E09F9E73}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C837127F-8A68-4261-ACE6-BC7E4B9D3B80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C837127F-8A68-4261-ACE6-BC7E4B9D3B80}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C837127F-8A68-4261-ACE6-BC7E4B9D3B80}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C837127F-8A68-4261-ACE6-BC7E4B9D3B80}.Release|Any CPU.Build.0 = Release|Any CPU
+ {124F6E46-207D-4D9E-9EDB-EEC964A81796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {124F6E46-207D-4D9E-9EDB-EEC964A81796}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {124F6E46-207D-4D9E-9EDB-EEC964A81796}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {124F6E46-207D-4D9E-9EDB-EEC964A81796}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/BinaryNotes.NET/BinaryNotes/BinaryNotes.csproj b/BinaryNotes.NET/BinaryNotes/BinaryNotes.csproj
index 5a7dc3fc..cdc91ea9 100644
--- a/BinaryNotes.NET/BinaryNotes/BinaryNotes.csproj
+++ b/BinaryNotes.NET/BinaryNotes/BinaryNotes.csproj
@@ -1,258 +1,9 @@
-
-
+
+
- Local
- 2.0
- Debug
- AnyCPU
-
-
-
-
- BinaryNotes
-
-
- JScript
- Grid
- IE50
- false
- Library
- BinaryNotes
- false
- OnBuildSuccess
-
-
-
-
- {7BB91554-CA9A-4F6E-91CB-E34410F215A7}
- v4.0
-
-
- 2.0
- publish\
- true
- Disk
- false
- Foreground
- 7
- Days
- false
- false
- true
- 0
- 1.0.0.%2a
- false
- false
- true
- Client
+ net9.0
+ enable
+ enable
-
- bin\debug\
- false
- 285212672
- false
-
-
- TRACE;DEBUG
-
-
- true
- 4096
- false
-
-
- false
- false
- false
- 4
- full
- prompt
- AllRules.ruleset
-
-
- bin\release\
- false
- 285212672
- false
-
-
-
-
- bin\release\BinaryNotes.xml
- true
- 4096
- false
-
-
- false
- false
- false
- 4
- full
- prompt
- true
- AllRules.ruleset
-
-
-
-
-
-
-
- Code
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
- Code
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
- False
- .NET Framework 3.5 SP1 Client Profile
- false
-
-
- False
- .NET Framework 3.5 SP1
- true
-
-
- False
- Windows Installer 3.1
- true
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
diff --git a/BinaryNotes.NET/BinaryNotes/Properties/AssemblyInfo.cs b/BinaryNotes.NET/BinaryNotes/Properties/AssemblyInfo.cs
deleted file mode 100644
index 1540341d..00000000
--- a/BinaryNotes.NET/BinaryNotes/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System.Reflection;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("BinaryNotes ASN.1 Library")]
-[assembly: AssemblyDescription("ASN.1 encoding/decoding library, supporting the BER, DER and PER encodings.")]
-[assembly: AssemblyCompany("Abdulla G. Abdurakhmanov, Pavel Drasil")]
-[assembly: AssemblyProduct("BinaryNotes")]
-[assembly: AssemblyCopyright("© 2006-2015 Abdulla G. Abdurakhmanov, Pavel Drasil")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Revision
-// Build Number
-//
-// You can specify all the values or you can default the Revision and Build Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.6.0")]
-[assembly: AssemblyFileVersion("1.6.0")]
-
-// In order to sign your assembly you must specify a key to use. Refer to the
-// Microsoft .NET Framework documentation for more information on assembly signing.
-//
-// Use the attributes below to control which key is used for signing.
-//
-// Notes:
-// (*) If no key is specified, the assembly is not signed.
-// (*) KeyName refers to a key that has been installed in the Crypto Service
-// Provider (CSP) on your machine. KeyFile refers to a file which contains
-// a key.
-// (*) If the KeyFile and the KeyName values are both specified, the
-// following processing occurs:
-// (1) If the KeyName can be found in the CSP, that key is used.
-// (2) If the KeyName does not exist and the KeyFile does exist, the key
-// in the KeyFile is installed into the CSP and used.
-// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
-// When specifying the KeyFile, the location of the KeyFile should be
-// relative to the project output directory which is
-// %Project Directory%\obj\. For example, if your KeyFile is
-// located in the project directory, you would specify the AssemblyKeyFile
-// attribute as [assembly: AssemblyKeyFile("..\..\mykey.snk")]
-// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
-// documentation for more information on this.
-//
-
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyDelaySign(false)]
-[assembly: AssemblyKeyFile("")]
-[assembly: AssemblyKeyName("")]
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Choice.cs b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Choice.cs
index 333ab25c..2a19c82b 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Choice.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Choice.cs
@@ -29,5 +29,12 @@ public string Name
set { name = value; }
}
+ private bool isExtensible = false;
+
+ public bool IsExtensible
+ {
+ get { return isExtensible; }
+ set { isExtensible = value; }
+ }
}
}
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Element.cs b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Element.cs
index c9d14801..720ae265 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Element.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Element.cs
@@ -37,6 +37,15 @@ public bool IsOptional
get { return isOptional; }
set { isOptional = value; }
}
+
+ private bool isExtended = false;
+
+ public bool IsExtended
+ {
+ get { return isExtended; }
+ set { isExtended = value; }
+ }
+
bool hasTag = false;
public bool HasTag
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Enum.cs b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Enum.cs
index 38ee612a..c0ed7917 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Enum.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Enum.cs
@@ -29,5 +29,20 @@ public string Name
set { name = value; }
}
+ private bool isExtensible = false;
+
+ public bool IsExtensible
+ {
+ get { return isExtensible; }
+ set { isExtensible = value; }
+ }
+
+ private int numRootElements;
+
+ public int NumRootElements
+ {
+ get { return numRootElements; }
+ set { numRootElements = value; }
+ }
}
}
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Sequence.cs b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Sequence.cs
index 1551e09b..91091d2f 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Sequence.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1Sequence.cs
@@ -36,5 +36,12 @@ public bool IsSet
set { isSet = value; }
}
+ private bool isExtensible = false;
+
+ public bool IsExtensible
+ {
+ get { return isExtensible; }
+ set { isExtensible = value; }
+ }
}
}
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1SequenceOf.cs b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1SequenceOf.cs
index 83a1c75d..ba69353a 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1SequenceOf.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/ASN1SequenceOf.cs
@@ -36,6 +36,12 @@ public bool IsSetOf
set { isSetOf = value; }
}
+ private bool isExtensible = false;
+ public bool IsExtensible
+ {
+ get { return isExtensible; }
+ set { isExtensible = value; }
+ }
}
}
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/constraints/ASN1ValueRangeConstraint.cs b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/constraints/ASN1ValueRangeConstraint.cs
index 7bf381e7..fef28064 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/attributes/constraints/ASN1ValueRangeConstraint.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/attributes/constraints/ASN1ValueRangeConstraint.cs
@@ -21,6 +21,7 @@ namespace org.bn.attributes.constraints
public class ASN1ValueRangeConstraint : Attribute
{
private long min, max;
+ private bool isExtensible = false;
public long Max
{
@@ -33,5 +34,11 @@ public long Min
get { return min; }
set { min = value; }
}
+
+ public bool IsExtensible
+ {
+ get { return isExtensible; }
+ set { isExtensible = value; }
+ }
}
}
\ No newline at end of file
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/coders/CoderUtils.cs b/BinaryNotes.NET/BinaryNotes/org/bn/coders/CoderUtils.cs
index 1e50e5bb..d6ca53c4 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/coders/CoderUtils.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/coders/CoderUtils.cs
@@ -18,6 +18,7 @@ limitations under the License.
using org.bn.attributes;
using org.bn.attributes.constraints;
using org.bn.metadata;
+using org.bn.metadata.constraints;
using org.bn.types;
using System;
using System.Collections;
@@ -262,7 +263,7 @@ public static void checkConstraints(long val, ElementInfo elementInfo)
if (elementInfo.isAttributePresent())
{
ASN1ValueRangeConstraint constraint = elementInfo.getAttribute();
- if (val > constraint.Max || val < constraint.Min)
+ if ((new ASN1ValueRangeConstraintMetadata(constraint)).checkValue(val))
throw new Exception("Length of '" + elementInfo.AnnotatedClass.ToString() + "' out of bound");
}
else
@@ -347,6 +348,22 @@ public static bool isDefaultField(ICustomAttributeProvider field, ElementInfo el
}
}
+ public static bool isExtendedField(ICustomAttributeProvider field, ElementInfo elementInfo)
+ {
+ if (elementInfo.hasPreparedInfo())
+ {
+ return elementInfo.hasPreparedASN1ElementInfo() && elementInfo.PreparedASN1ElementInfo.IsExtended;
+ }
+ else if (isAttributePresent(field))
+ {
+ return getAttribute(field).IsExtended;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
public static bool isOptional(ElementInfo elementInfo)
{
bool result = false;
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/coders/Encoder.cs b/BinaryNotes.NET/BinaryNotes/org/bn/coders/Encoder.cs
index ea661abc..de83821b 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/coders/Encoder.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/coders/Encoder.cs
@@ -251,16 +251,22 @@ public virtual bool invokeSelectedMethodForField(PropertyInfo field, object obj,
return (bool)method.Invoke(obj, null);
}
}
-
- public virtual int encodeSequence(object obj, System.IO.Stream stream, ElementInfo elementInfo)
+
+ public virtual int encodeSequence(object obj, System.IO.Stream stream, ElementInfo elementInfo)
+ {
+ return encodeSequenceLimited(obj, stream, elementInfo, false);
+ }
+
+ public virtual int encodeSequenceLimited(object obj, System.IO.Stream stream, ElementInfo elementInfo, bool extended)
{
int resultSize = 0;
PropertyInfo[] fields = elementInfo.getProperties(obj.GetType());
int fieldIdx = 0;
foreach (PropertyInfo field in fields)
{
- resultSize += encodeSequenceField(obj, fieldIdx++, field, stream, elementInfo);
- }
+ resultSize += encodeSequenceField(obj, fieldIdx, field, stream, elementInfo);
+ fieldIdx++;
+ }
return resultSize;
}
@@ -356,7 +362,7 @@ public virtual int encodeEnum(object obj, System.IO.Stream stream, ElementInfo e
PropertyInfo field = obj.GetType().GetProperty("Value");
object result = invokeGetterMethodForField(field, obj, null);
Type enumClass = null;
-
+
foreach(MemberInfo member in obj.GetType().GetMembers())
{
if (member is System.Type)
@@ -377,8 +383,8 @@ public virtual int encodeEnum(object obj, System.IO.Stream stream, ElementInfo e
}
break;
}
- }
- }
+ }
+ }
resultSize += encodeEnumItem(result, enumClass, stream, elementInfo);
return resultSize;
}
diff --git a/BinaryNotes.NET/BinaryNotes/org/bn/coders/per/PERAlignedDecoder.cs b/BinaryNotes.NET/BinaryNotes/org/bn/coders/per/PERAlignedDecoder.cs
index f367bc24..3378b4d2 100644
--- a/BinaryNotes.NET/BinaryNotes/org/bn/coders/per/PERAlignedDecoder.cs
+++ b/BinaryNotes.NET/BinaryNotes/org/bn/coders/per/PERAlignedDecoder.cs
@@ -20,13 +20,11 @@ limitations under the License.
using org.bn.metadata.constraints;
using org.bn.types;
using org.bn.utils;
-using System;
-using System.Collections.Generic;
using System.Reflection;
namespace org.bn.coders.per
{
- public class PERAlignedDecoder:Decoder
+ public class PERAlignedDecoder:Decoder
{
public override T decode(System.IO.Stream stream)
{
@@ -74,9 +72,19 @@ protected virtual long decodeIntegerValueAsBytes(int intLen, System.IO.Stream st
/// ITU-T X.691. 10.9. General rules for encoding a length determinant
///
///
- protected virtual int decodeConstraintLengthDeterminant(int min, int max, BitArrayInputStream stream)
+ protected virtual int decodeConstraintLengthDeterminant(ASN1ValueRangeConstraintMetadata constraint, BitArrayInputStream stream)
{
- if (max <= 0xFFFF)
+
+ int min = (int)constraint.Min;
+ int max = (int)constraint.Max;
+ bool isExtended = false;
+
+ if (constraint.IsExtensible)
+ {
+ isExtended = stream.readBit() == 1;
+ }
+
+ if (((max-min) <= 0xFFFF) && !isExtended)
{
// 10.9. NOTE 2 – (Tutorial) In the case of the ALIGNED variant
// if the length count is bounded above by an upper bound that is
@@ -163,7 +171,7 @@ protected virtual long decodeConstraintNumber(long min, long max, BitArrayInputS
}
else
{
- /*
+ /*
* 4. Where the range is greater than 64K, the range is ignored
* and the value encodes into an octet-aligned bit-field
* which is the minimum number of octets for the value.
@@ -173,7 +181,14 @@ protected virtual long decodeConstraintNumber(long min, long max, BitArrayInputS
* of the encoding is independent of the value being encoded,
* and is not explicitly encoded.
*/
- int intLen = decodeConstraintLengthDeterminant(1, CoderUtils.getPositiveIntegerLength(valueRange), stream);
+ ASN1ValueRangeConstraint valueRangeConstraint = new()
+ {
+ Min = 1,
+ Max = CoderUtils.getPositiveIntegerLength(valueRange),
+ IsExtensible = false
+ };
+
+ int intLen = decodeConstraintLengthDeterminant(new ASN1ValueRangeConstraintMetadata(valueRangeConstraint), stream);
skipAlignedBits(stream);
result = (int)decodeIntegerValueAsBytes(intLen, stream);
result += min;
@@ -264,8 +279,7 @@ protected virtual int decodeLength(ElementInfo elementInfo, System.IO.Stream str
IASN1ConstraintMetadata constraint = elementInfo.PreparedInfo.Constraint;
if(constraint is ASN1ValueRangeConstraintMetadata) {
result = decodeConstraintLengthDeterminant(
- (int)((ASN1ValueRangeConstraintMetadata)constraint).Min,
- (int)((ASN1ValueRangeConstraintMetadata)constraint).Max,
+ (ASN1ValueRangeConstraintMetadata)constraint,
bitStream
);
}
@@ -281,7 +295,7 @@ protected virtual int decodeLength(ElementInfo elementInfo, System.IO.Stream str
if (elementInfo.isAttributePresent())
{
ASN1ValueRangeConstraint constraint = elementInfo.getAttribute();
- result = decodeConstraintLengthDeterminant((int)constraint.Min, (int)constraint.Max, bitStream);
+ result = decodeConstraintLengthDeterminant(new ASN1ValueRangeConstraintMetadata(constraint), bitStream);
}
else
if (elementInfo.isAttributePresent())
@@ -295,32 +309,112 @@ protected virtual int decodeLength(ElementInfo elementInfo, System.IO.Stream str
return result;
}
+ public class ASN1ChoiseFieldParsingInfo
+ {
+ public int PreambleLen = 0;
+ public bool IsExtensible = false;
+ public List RootFields = new List();
+ public List ExtendedFields = new List();
+ }
+
+ protected virtual ASN1ChoiseFieldParsingInfo getChoiseParsingInfo(Type objectClass, ElementInfo elementInfo)
+ {
+ ElementInfo info = new ElementInfo();
+ int fieldIdx = 0;
+
+ var parsingInfo = new ASN1ChoiseFieldParsingInfo();
+
+ var fields = elementInfo.getProperties(objectClass);
+
+ var choiceMeta = (ASN1ChoiceMetadata)(((ASN1PreparedElementData)elementInfo.PreparedInfo).TypeMetadata);
+ if (choiceMeta != null)
+ {
+ parsingInfo.IsExtensible = choiceMeta.IsExtensible;
+ }
+
+ foreach (PropertyInfo field in fields)
+ {
+ if (elementInfo.hasPreparedInfo())
+ info.PreparedInfo = elementInfo.PreparedInfo.getPropertyMetadata(fieldIdx);
+
+ bool isExtendeField = CoderUtils.isExtendedField(field, info);
+
+ if (isExtendeField)
+ {
+ parsingInfo.ExtendedFields.Add(fieldIdx);
+ }
+ else
+ {
+ parsingInfo.RootFields.Add(fieldIdx);
+ }
+ fieldIdx++;
+ }
+
+ return parsingInfo;
+ }
+
public override DecodedObject