The project settings window is where details such as encoding rules, target language, and code features to generate are modified.
The "Output" tab contains options for selecting a target language, encoding rules, output directory. In order to compile a schema, a target language must be selected under "Application Language Type". For C++ and Java, more specific targets are available, as well.
"Additional Translations" contains several options for generating transformed versions of the input schema, such as HTML or pretty-printed.
"Encoding Rules" allows for one or more encoding rule set to be selected for generated code.
"Input Options" affect how strict the compiler is when parsing the ASN.1 schema. Enabling these options can cause unpredictable behavior in generated code, but they may be useful under certain circumstances.
Depending on the target language selected, additional options are shown.
For C or C++ target languages, "C/C++ Output Options" controls how generated code is distributed across source files.
For C#, "C# Code Organization" controls how generated code is distributed across source files and how files are organized into directories.
For Java, "Java Code Organization" allows generated code to be organized into directories based on the ASN.1 module for which they were generated. Alternatively, generated files will be placed directly into the output directory.
The "Function Generation" tab provides settings for what functionality to include in generated code. Options under "Generated Function Types" provide granular control of what functions to generate. The printing functions allow for various printing schemes to be generated, such as print-to-string and print-to-standard-output, and how the printed data should be formatted.
"Sample Program Generation" allows simple encoding and decoding programs, which demonstrate using the generated code, to be generated. The sample writer program can optionally encode randomly-generated test data.
Depending on the target language selected, additional options may be shown here.
For C and C++, additional functions for memory management and macros for dealing with named bits in BIT STRINGs can be generated.
For Java, get and set methods can be generated for members of generated classes.
The "Constraints and Debugging" tab holds settings related to constraint handling, event handling, and logging in generated code. Under "Constraints", various types of constraint checks can be added or removed from generated code.
In "Debugging and Event Handling", settings for adding debug tracing and event hooks are available. In addition to enabling event callbacks, generation of type structures can also be disabled, in which case generated decode functionality will simply call user-created event handlers and not perform its own decoding operation.
Under the "Code Modifications" tab are a number of options for generating simplified code. In "Space Optimizations", these mainly regard the removal of unwanted or unneeded functionality and shortening names of generated types.
"Other Options" provide several miscellaneous settings, including the option of generating code for types that have been imported into the current schema.
Depending on the target language selected, additional options are shown at the bottom of the tab.
In the case of C or C++ as the target language, code modifications include several settings for adjusting how ASN.1 types are mapped to native C/C++ types.
For C#, modifications allow for manipulating the namespace into which code is generated.
Similarly for Java, the package name for generated code can be changed.
When a target language other than "None" is selected, an additional "Build Options" tab contains language environment-specific settings for generating makefiles and build scripts.
For C and C++, a makefile can be generated in either Windows or GNU format. For Windows, a Visual Studio project can also be generated. Under "Build Libraries", which will generate the build script to build a library rather than an executable, the desired variety of library can be selected.
Similarly for C#, a makefile or Visual Studio project can be created, optionally including a *.mk file listing the files generated.
Java can also provide a *.mk generated file list, as well as Ant build script and a batch or shell script.