[ref_impl_eiffel] [875] Make occurrences, cardinality and existence opti
Revision: 875
Author: thomas.beale
Date: 2009-07-15 20:59:27 +0100 (Wed, 15 Jul 2009)
Log Message:
-----------
Make occurrences, cardinality and existence optional. Changes to enable
this:
- convert the compiler to using the RM schema during the first-pass
parse phase, which allows it to figure out if an attribute is a
container or not, since now there may be no cardinality constraint on
it.
- numerous uses of occurrences, cardinality and existence had to be
protected by Void checks and some modified semantics to do with
'conformance' etc.
- had to add the ability to search for a class definition in the Basic
Meta-model (BMM) on the basis of attribute path (which is what you find
in source-form specialised archetypes)
- a few bugs in the BMM were also fixed as a result.
- various cleaning up of the logic in teh cADL parser.
- removed the GUI option to turn RM checking on and off, since now it
is mandatory.
In this build, the compiler runs through all CKM archetypes with no
crashes and appears to be producing the correct results (no proper
checks of this done however).
TO DO:
- probably add an attribute ARCHEYTPE_CONSTRAINT.is_flat and set it on
all nodes in flat archetypes; this will enable clearer semantics to be
expressed, since now all the C_XXX classes function for both flat and
differential archetype representation.
- the differential mode tree visualisation is not particularly
accurate, since in general it can't know anything about occurrences,
existence, cardinality unless such constraints happen to be explicitly
set; only the flat view shows these constraints properly, compressed
from the RM all the way through any specialisation lineage.
Modified Paths:
--------------
BRANCHES/specialisation/apps/adl_workbench/src/controls/gui_node_map_control.e
BRANCHES/specialisation/apps/adl_workbench/src/main/constants_imp.e
BRANCHES/specialisation/apps/adl_workbench/src/main/icon_dialog_imp.e
BRANCHES/specialisation/apps/adl_workbench/src/main/main_window.e
BRANCHES/specialisation/apps/adl_workbench/src/main/main_window_imp.e
BRANCHES/specialisation/apps/adl_workbench/src/main/option_dialog.e
BRANCHES/specialisation/apps/adl_workbench/src/main/option_dialog_imp.e
BRANCHES/specialisation/apps/adl_workbench/src/main/repository_dialog_imp.e
BRANCHES/specialisation/apps/adl_workbench/src/main/shared_ui_resources.e
BRANCHES/specialisation/apps/adl_workbench/src/main/system_interface.xml
BRANCHES/specialisation/components/adl_parser/src/syntax/cadl/parser/cadl_scanner.l
BRANCHES/specialisation/components/adl_parser/src/syntax/cadl/parser/cadl_tokens.e
BRANCHES/specialisation/components/adl_parser/src/syntax/cadl/parser/cadl_validator.e
BRANCHES/specialisation/components/adl_parser/src/syntax/cadl/parser/cadl_validator.html
BRANCHES/specialisation/components/adl_parser/src/syntax/cadl/parser/cadl_validator.y
BRANCHES/specialisation/components/adl_parser/src/syntax/cadl/serialiser/cadl_syntax_serialiser.e
BRANCHES/specialisation/components/archetype_repository/src/directory/arch_directory.e
BRANCHES/specialisation/components/archetype_repository/src/directory/arch_rep_archetype.e
BRANCHES/specialisation/components/reference_model_checker/src/model_access.e
BRANCHES/specialisation/components/reference_model_checker/src/shared_reference_model_access.e
BRANCHES/specialisation/libraries/common_libs/src/basic/multiplicity_interval.e
BRANCHES/specialisation/libraries/common_libs/src/basic_meta_model/bmm_class_definition.e
BRANCHES/specialisation/libraries/common_libs/src/basic_meta_model/bmm_container_type_reference.e
BRANCHES/specialisation/libraries/common_libs/src/basic_meta_model/bmm_model.e
BRANCHES/specialisation/libraries/common_libs/src/structures/data_tree/dt_object_converter.e
BRANCHES/specialisation/libraries/common_libs/src/structures/object_graph/path/og_path.e
BRANCHES/specialisation/libraries/common_libs/src/structures/syntax/dadl/parser/dadl2_validator.e
BRANCHES/specialisation/libraries/common_libs/src/structures/syntax/dadl/parser/dadl2_validator.y
BRANCHES/specialisation/libraries/common_libs/src/structures/syntax/dadl/parser/dadl_scanner.l
BRANCHES/specialisation/libraries/common_libs/src/structures/syntax/dadl/parser/dadl_tokens.e
BRANCHES/specialisation/libraries/common_libs/src/utility/error_reporting/in_memory_message_db.e
BRANCHES/specialisation/libraries/common_libs/tests/test_bmm.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/archetype_validator.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/comparator/archetype_flattener.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/archetype_internal_ref.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/archetype_slot.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/c_attribute.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/c_complex_object.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/c_defined_object.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/c_factory.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/c_object.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/c_primitive_object.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/c_visitor.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/constraint_model/constraint_ref.e
BRANCHES/specialisation/libraries/openehr/src/am/archetype/differential_archetype.e
BRANCHES/specialisation/libraries/openehr/src/am/openehr_profile/data_types/quantity/c_dv_ordinal.e
BRANCHES/specialisation/libraries/openehr/src/am/openehr_profile/data_types/quantity/c_dv_quantity.e
BRANCHES/specialisation/libraries/openehr/src/am/openehr_profile/data_types/text/c_code_phrase.e