================================================================
tag v58r1
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Wed Sep 22 hh:mm:ss 2021 +0200

           Release Notes for tag v58r1
           ---------------------------
                    September 2021


    - Variable Elements in SML instructions implemented
    
     There are elements in the SML instructions i.e. 'object names',
     'object set names' and 'state names' which until now
     have been simple names (e.g. LHCb_LHC). These names can now be,
     in principle, picked up from the value of an action parameter.
     So for example one can say:
	  
         do 'action-name' 'object-name'   or
         do 'action-name' $(par-name)          where par-name is the name of
                                               one of the action parameters
    
     Note for developers: These are now represented by a new class 'VarElement'
                          rather than 'Name'.


    - The Object Name in Indirect Values implemented as Variable Element.
	
      IndiValue processing has been already fully implemented
      in release v57r1.  As a reminder, the places where one
      encounters IndiValues are listed here:
	  
       ----------------------------	
        CALL instruction
          call 'function-name' (..., PAR=indiValue, ...)
	
        DO instruction
          do 'action-name' (..., PAR=indiValue, ...) 'object-name'
		
        REPORT instruction
          report (WARNING, .... + indiValue + ....)
		
        SET instruction
          set PAR = indiValue1 + indiValue2
		
        Simple Condition Typ 4
          ( indiValue1 == indiValue2 )
		
        IndiValue can be :
        - STRING          eg "ABCD"
        - INT             eg 77
        - FLOAT           eg 89.7
        - NAME            
             in this case it is either: 
                - the name of a local parameter (either action or object).
                  When action and object have parameter of the same name,
                  action parameter has priority.
                                 or
               - 'reserved name' _DOMAIN_, or _OBJECT_, or _STATE_ or _ACTION_

        - COMPNAME        'obj-name'.'item'        eq LHC.PHYSICS
             in this case 
                'obj-name' is a name of an object declared in the domain
                (can be THIS)
                                 and
                'item' is either 
                     the name of one of the 'obj-name's parameters or
                     _STATE_  or _ACTION_. In this case the current value of
                     indiValue would be evaluated to the current state (action)
                     of 'obj-name'.
         -------------------------
		
         In this release 'obj-name' in COMPNAME form is made Variable Element,
         i.e can have form $(action-par-name).
		
         Note for developers: Indirect Values are now represented by a new
                              class 'IndiValue' making the code more transparent
                              especially in view of this latest development.

================================================================
tag v57r2
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Mon Mar 15 14:53:ss 2021 +0200

           Relese Notes for tag v57r2
           ---------------------------
                    15 March 2021

  - Substantial re-design of handlinng parameters in Object and Action
    declarations and in DO and CALL instructions :
	
        New class 'ParmsBase' was designed in commonSource. It holds parameters
        data and all methods that handle them.

        The existing classes 'Parms' in translator and stateManager had
        been developed independently of each other what has resulted in
        confused code. These now inherit from 'ParmBase' and the remaining
        methods in each are only relevant to the specifics of translator or
        stateManager respectively.

================================================================
tag v57r1
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Sat Dec 19 hh:mm:ss 2020 +0200

           Relese Notes for tag v57r1
           ---------------------------
                    19 Dec 2020

  - Indirect Value (indiValue) processing fully implemented in all the relevant
    places i.e. :
	
    CALL instruction
          call 'function-name' (..., PAR=indiValue, ...)
	
    DO instruction
          do 'action-name' (..., PAR=indiValue, ...) 'object-name'
		
    REPORT instruction
          report (WARNING, .... + indiValue + ....)
		
    SET instruction
          set PAR = indiValue1 + indiValue2
		
    Simple Condition Typ 4
          ( indiValue1 == indiValue2 )
		
	IndiValue can be :
        - STRING          eg "ABCD"
        - INT             eg 77
        - FLOAT           eg 89.7
        - NAME            
             in this case it is either: 
                - the name of a local parameter (either action or object).
                  When action and object have parameter of the same name,
                  action parameter has priority.
                                 or
               - 'reserved name' _DOMAIN_, or _OBJECT_, or _STATE_ or _ACTION_

        - COMPNAME        'obj-name'.'item'        eq LHC.PHYSICS
             in this case 
                'obj-name' is a name of an object declared in the domain
                (can be THIS)
                                 and
                'item' is either 
                     the name of one of the 'obj-name's parameters or
                     _STATE_  or _ACTION_. In this case the current value of
                     indiValue would be evaluated to the current state (action)
                     of 'obj-name'.

 - substantial changes to class 'Parms' in both Translator and State Manager

================================================================
tag v56r1
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Mon Oct 5 16:12:28 2020 +0200

           Relese Notes for tag v56r1
           ---------------------------

 - implemented 'Functions'.
   These are actions that are declared after the declaration of object
   parameters(if any).
   Function declaration is identical to that of action except the word
   ACTION is replaced by FUNCTION in the SML code. This is purely for reminding
   a user that this is a differnt kind of action. Internaly it does not make
   any difference.
   These actions can be then invoked from 'normal actions of the object when
   these are executed.

 - implemented new 'CALL' instruction. ( call 'function-name'(parameters) )
   this serves for the invocation of Functions.

 - Rationalising the use of return status from 'execute' method of 'Action'
   class in State Manager by introducing a new enum type 'ActionReturnStatus_t'

 - diagnostic printing improved in many classes.

=================================================================
tag v55r1
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Thu Jul 23 13:06:57 2020 +0200

           Relese Notes for tag v55r1
           ---------------------------

   - Subobjects completely removed in the whole SMI++

   - 'whatAreYou()' method in all the relevant classes in 'stateManager'
                    revised or implemented.
		  This provides almost inverse translation of internal data structure
		  back into SML code.
          To achieve this completely, it needs to do proper job for 'Condition'
          class. At the moment this is not printed from internal data.

=================================================================
tag v54r2
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Thu May 28 11:33:09 2020 +0200

 LDFLAGS added to make files


=================================================================
tag v54r1
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Wed May 13 11:58:50 2020 +0200

  Release Notes for tag  v54r1
  ----------------------------

  - implemented DESTROY_OBJECT instruction

  - reviewed and if necessary implemented C++ Destructors in all classes
    in 'commonSource' and 'stateManager'

  - some bug fixes

=================================================================
tag v53r1
Tagger: Bohumil Franek <Bohumil.Franek@stfc.ac.uk>
Date:   Fri Nov 22 17:02:47 2019 +0100

Release Notes for tag  v53r1

   - implemented acceptance of 'no instructions in Instruction Lists'.
     This then allows 'empty' IF instruction blocks such as :
         if (....) then
    	 else
    	   ....
    	 endif

        classes affected: 'IfUnit', 'Instruction', 'IfIns', 'InsList' in
	           translator and 'InsList' in stateManager

    -  designed Argument Replacement in instructions and some other constructs.
             For use in FOR instruction and in future Functions.

    - IF instruction enabled for use in FOR instruction

          This implied modifications to handling of:
          a) Simple condition type 1

          b) Simple condition type 4

    - REPORT instruction enabled to be used in FOR instruction

    - SET instruction enabled to be used in FOR instruction

    - some bug fixes

