Skip to Navigation | Skip to Content

Ref_impl_Eiffel mailing list archives

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[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