26 May 1999 - The files in this directory were copied from ..\source and also from ..\..\utilities (VMS) - They were then renamed as follows: ren *.cc *.cxx; ren *.hh *.hxx - references to .hh inside all files changed to .hxx 23 June 1999 two new files action.cxx & action.hxx 24 June 1999 The files which were originaly copied from the directory utilities were moved into a new directory utilities/sourceForDevStudio 29 June 1999 main.cxx this should now work correctly separating the individual source units and instantiating relevant classes Folder v0.1 is a snapshot of the software ............................................................................................. 30 June 1999 1) Constructor for SMIObject SMIObjectSet and State had 1 parameter (the first line) removed. This is because the first line is input-in later as the rest. This affects: main.cxx, smiobject.cxx, smiobject.hxx smiobjectset.* 2) smiobject.hxx, .cxx new method collect() which has similar function as the main program and is simply collecting code for parameters and states...collection of code for attributes is not implemented yet and also recognising subobject line. 3) Folder v0.2 is a snapshot at this point ............................................................................. 1-2 July 1999 1) New Class SMLUnit which is going to be the base class for most of the other classes in the program. It represents a logical chunk of SML code such as SMIObject, state etc. new files smlunit.cxx, smlunit.hxx 2) SMIObject class now becomes subclass of SMLUnit. It fully inherits acceptLine method and SMLCode private data files affected : smiobject.cxx & .hxx 3) SMIObjectSet class ... same thing; Files affected smiobjectset.cxx & .hxx 4) main.cxx now also registeres the SML units in allUnits Registrar. It means that for example I do not have to print out classes and SMIObjectSets separately Folder v0.3 is a snapshot at this point ........................................................................... 3-6 July 1999 1) New class for attributes attributes.cxx and attributes.hxx 2) State class and Parameters class become subclass of SMLUnit Files affected state.hxx, state.cxx, parameters.hxx, parameters.cxx 3) Some tydiing up in main.cxx....all SML units are collected in 1 registrar which enables looping over all of them at ones 4) New features added to SMLUnit class files smlunit.hxx smlunit.cxx 5) SMIobject now using attributes and parameters classes Folder v0.4 is a snapshot at this point ............................................................................................ 21 September 1999 1) smlunit.cxx ... adding endl to a printout 2) smiobjectset.hxx * .cxx took out method out() so that the one in the base class is used 3) simple tydiing done in main.cxx ............................................................................................ 22 September 1999 1) finalised State class private data state.hxx 2) smlunit.hxx & cxx new protected method translateUnits() 2) smiobject.cxx ... tydied up and added call to translateUnits() ............................................................................. 23 September 1999 1) new class When ... new files when.cxx & hxx 2) action class (action.cxx &hxx) tydied up ...primarily made subclass of SMLUnit 3) method translate implemented in state.cxx 4) smiobject.cxx little tydiing ............................................................................ 24 September 1999 1) smlunit.cxx & hxx .. method out now has an argument, beiing an offset. This is probably making _level redundant. 2) main.cxx calls out with an offset ............................................................................. Folder v0.5 is a snapshot ............................................................................. 27 September 1999 1) smlunit.hxx & smlunit.cxx a) slight improvement to the method out. This now takes as an input offset. b) as the result of a), _level private data is not needed any more. c) additional private data Name _name. This is usefull for some units such as objects for diagnostic printing. i.e. one can use the base class method. 2) Consequence of 1) are small changes (basicaly simplification) in action.cxx, action.hxx attributes.cxx, attributes.hxx, parameters.cxx, parameters.hxx, smiobject.cxx, smiobject.hxx, smiobjectset.cxx, smiobjectset.hxx, state.cxx, state.hxx and when.cxx ............................................................................. 28 September 1999 1) New class Instruction instruction.cxx and instruction.hxx 2) New class InsList inslist.cxx and inslist.hxx 3) action.cxx and action.hxx impemented method translate in action class using the new class InsList .............................................................................. Folder v0.6 is a snapshot .............................................................................. 29 September 1999 1) action.cxx begining of the instruction block is recognised by 1st instruction 2) inslist.cxx implemented very rudimentary translate method 3) instruction.hxx because of simplification translate method is not purely virtual ............................................................................................. 30 September 1999 1) New classes (inheriting from the instruction class) : doins.hxx, doins.cxx, termins.hxx, termins.cxx, setins.hxx, setins.cxx ifins.hxx, ifins.cxx 2) method translate implemented in IfIns class (ifins.cxx) N.B. At the moment only if instructions not containing another if are considered and also if without else if or else. Generalisation should not be too dificult. Folder v0.7 is a snapshot .............................................................................. 1 October 1999 1) smiobjectset.cxx constructor prints a info line 2) info print "translate not implemented yet" was removed from attributes.cxx, parameters.cxx, doins.cxx, termins.cxx, setins.cxx and when.cxx .............................................................................. 3 October 1999 1) *** There is a bug in reading from a file. The last line is not read in a comment was put in main.cxx 2) smiobject.cxx info print about translating taken out and info printing about creating the instance put in 3) action.cxx dtto 4) state.cxx dtto 5) inslist.cxx the main change is, that it can handle nested ifs .............................................................................. 4 October 1999 1) new files ifunit.cxx and ifunit.hxx for the new class IfUnit 2) ifins.hxx and ifins.cxx significantly redesigned. If instruction now simply consists of IfUnits At this point we can handle if ifelse and nested to any level Folder v0.8 is a snapshot ............................................................................. 5 October 1999 1) new files condition.hxx and condition.cxx for the new class Condition 2) when.hxx and when.cxx When class is now using Condition class: a) new private members Condition and actionName b) translate method implemented picking up the condition and action name c) out method implemented....must be since this is a primitive SMLUnit .............................................................................. 2 November 1999 1) New class called AttributeBlock --> new files attributeblock.hxx & cxx this looks identical to Attribute class but has different name reflecting more what it is 2) smiobject.cxx & hxx changed to use the new class. .............................................................................. 3 November 1999 1) Implemented method translate() and out() in class AttributeBlock...changes in attributeblock.hxx & cxx 2) minor mod to out() in when.cxx .............................................................................. 9 November 1999 1) New class called ParameterBlock --> new files parameterblock.hxx & cxx This represents the chunk of code containing the object parameters. 2) smiobject.cxx & hxx changed to use the new class .............................................................................. 15-16 November 1999 1) method translate implemented in ParameterBlock. It parses the block and stores it in Parms _parameters 2) parms.hxx&cxx method out now takes offset ============================================================================== Folder v0.9 is a snapshot at this time ============================================================================== 23 November 1999 1) New class called ActionHeadBlock --> new files actionheadblock.cxx & hxx This represents the chunk of code containing action name, parameters and action attributes 2) action.hxx & cxx changed to use the new class 3) method translate implemented in ActionHeadBlock... only parameters at the moment ------------------------------------------------------------------------------ 24 November 1999 Since parsing of parameters in ActionHeadBlock and ParametersBlock is identical, a new method 'parseParmDeclaration' was put into the base class SMLUnit and this is then used in the translate method of the two above classes. changes in: smlunit.cxx & hxx, actionheadblock.cxx and parameterblock.cxx .............................................................................. 26 November 1999 method parseParmDeclaration renamed to parseParameters and distinction is made by an extra argument This implied changes to actionheadblock.cxx, smlunit.hxx and parameterblock.cxx. Also made some changes to smiobjectset.cxx but forget to document them ============================================================================== Folder v1.0 is a snapshot ============================================================================== 14 January 2000 Small bug fixed in method parseParameters of class SMLUnit ------------------------------------------------------------------------------ 6-8 February 2000 termins.cxx termins.hxx modified ..... translate method implemented ------------------------------------------------------------------------------ 14 February 2000 doins.cxx .... translate method implemented ------------------------------------------------------------------------------ 15-16 February 2000 - setins.cxx & hxx ... translate method implemented - small mods to doins.cxx - Began to implement parsing of condition: changes to when.cxx and to smlunit.cxx and smlunit.hxx ------------------------------------------------------------------------------ 20-22 February 2000 Partial implementing of parsing of condition. This involved changes to: when.cxx, condition.hxx&cxx, smlunit.cxx&hxx (this was undoing some changes i.e. parsing of condition is done by the condition class itself) and a new class SmpCond in smpcond.cxx&hxx ------------------------------------------------------------------------------ ============================================================================== Folder v1.1 is a snapshot ============================================================================== 23-26 February 2000 - New classes : Stack, StackItem and BoolOperation --> new files: stack.hxx&cxx, stackitem.hxx&cxx, booloperation.hxx&cxx - modifications to when.cxx, condition.hxx&cxx and smpcond.cxx I think that the condition parsing is more or less finished! ============================================================================== Folder v1.2 in repository is a snapshot ============================================================================== 27 February 2000 Identifier for Simple condition and BoolOperation necessary for backward compatibility is now held inside the objects. Mods to: stack.hxx&cxx , stackitem.hxx&cxx , condition.cxx&hxx , booloperation.cxx&hxx smpcond.cxx&hxx ------------------------------------------------------------------------------ 28 February 2000 Class SmpCond and BoolOperation inherit from a common class BoolItem. This implies changes to: smpcond.hxx booloperation.hxx and new files boolitem.hxx&cxx Class StackItem now has instead 2 pointers just one to a BoolItem ------------------------------------------------------------------------------ 29 Feb - 4 Mar 2000 Polishing parsing conditions. It now definitely works. There quite a few changes to: smpcond.cxx&hxx, condition.cxx&hxx, boolitem.hxx, booloperation.cxx&hxx stack.cxx&hxx, stackitem.cxx&hxx ----------------------------------------------------------------------------- 29 - 30 Apr 1) Private data _attributes and _parameters removed from SMIObject (and IsOfClass) because this data already exists in the respective blocks. Instead, new methods to retrieve them provided changes to : attributeblock.hxx & cxx, isofclassobject.hxx & cxx, parameterblock.hxx & cxx, smiobject.hxx & cxx 2) condition.cxx adjustments to getHeader method in order to achieve that the comment condition line output to sobj file is the same as that output by the fortran translator.(using the new subroutine from utilities) ------------------------------------------------------------------------------ 30 Apr - 2 May condition.cxx adjustments to getHeader method in order to achieve that the comment condition line output to sobj file is the same as that output by the fortran translator. ------------------------------------------------------------------------------ 2 - 4 May 2000 smiobject.cxx uses the new method objectKeywordLine in SMLLine class condition.cxx small adjustments to getHeader method in order to achieve that the comment condition line output to sobj file is the same as that output by the fortran translator. ------------------------------------------------------------------------------ 4 - 5 May 2000 main.cxx the collection loop substantialy changed to make it similar to the collection loop in SMIObject translate method...the patern has clearly emerged. smiobject.cxx method translate. The collection loop made similar to that of the main program ------------------------------------------------------------------------------ 5 - 7 May 2000 smiobject.cxx method outSobj gets the information it needs directly from the protected data of AttributeBlock and ParameterBlock class as it is now a friend (see below) parameterblock.hxx SMIObject, Action & DoIns classes made 'friend' attributeblock.hxx SMIObject, State & Action classes made 'friend' ------------------------------------------------------------------------------ 15-16 June 2000 state.cxx method translate() re-written to follow the same pattern as that used in the main program and SMIObject class method outSobj gets the information it needs directly from the protected data of AttributeBlock isofclassobject.cxx method outSobj...same as above attributeblock.hxx&cxx IsOfClassObject class made friend. Redundant methods: numOfAttributes, attribute and pAttributes removed ------------------------------------------------------------------------------ 16-17 June 2000 actionheadblock.hxx Class Action made friend so that is can access the private data directly. action.cxx&hxx the method translate substantially re-hacked to make it look like main, smiobject and state ----------------------------------------------------------------------------- 18 June 2000 action.cxx little tydiing ----------------------------------------------------------------------------- outSobj method in condition.cxx , ifunit.cxx and inslist.cxx adjusted so that the output files do not differ even in blank! One only has to trim the ones produced by the fortran translator. ------------------------------------------------------------------------------ 4 July 2000 inslist.cxx method translate substantialy re-hacked to make it look like the others ------------------------------------------------------------------------------ 15 July 2000 ifins.cxx method translate substantialy re-hacked to make it look like the others ------------------------------------------------------------------------------ 6 August 2000 The output of units switched of in main program. Also various debug prints removed, so that there is now zero output to stdout. Files changed: main.cxx, action.cxx, condition.cxx, isofclassobject.cxx and smiobject.cxx ------------------------------------------------------------------------------ First test on VMS !! 7 August 2000 smpcond.cxx switched of a forgotten debug print. After this it worked on VMS ------------------------------------------------------------------------------ 8 August 2000 ifins.cxx put in a forgotten error print ------------------------------------------------------------------------------ 10 August 2000 1) Removed usage of because a lot of compilers do not recognise it and using the old c-type casting. files affected: action.cxx, condition.cxx, ifins.cxx, inslist.cxx, main.cxx, smiobject.cxx smlunit.cxx and state.cxx 2) changed DoIns.hxx to doins.hxx in doins.cxx changed TermIns.hxx to termins.hxx in termins.cxx unix did not like that, being the case sensitive 3) removed method outSobj from SMLUnit class. As the consequence, I had to put casting in the main program before calling outSobj. Not very nice investigate ******** ----------------------------------------------------------------------------- 11 August 2000 replaced call to strcasecmp by my_strcasecmp in termins.cxx --------------------------------------------------------------------------------------- 12 August 2000 booloperations.cxx an input parameter declared explicitly int. Caught by GNU compiler ----> copied to super disk condition.cxx a small bug fixed in getNextItem...must not forget trimming things when needed. processcommandline.cxx switching on reading the options for non window platforms ============================================================================== at this point ( aprox 16:00), the software was copied to CERN afs, compiled and linked on hpplus and lxplus. All Delphi SML code was translated and the results compared They are all identical with exception of trailling blanks ! This is pretty good and justifies another copy to superdisk ============================================================================== 27 August 2000 processcommandline.cxx rehacked...getting rid of getopt and therefore making it more portable. new file cxxtranslatorversion.hxx holding the current version number which is then used by processcommandline and is printed when -v option is specified. --------------------------- Version 1.0 -------------------------------------------- 28 August 2000 ifunit.cxx method translate substantialy re-hacked to make it look like the others also some tydiing done in ifunit.hxx, ifunitheadblock.cxx&hxx. Primarily class IfUnit made friend of IfUnitHeadBlock so it can access its members directly ------------------------- Version 1.0.1 ----------------------------------- 2 September 2000 - parameterblock.hxx&cxx; actionheadblock.cxx&hxx; some obsolete (and ugly) methods removed - attributeblock.hxx ? - attributes.hxx&cxx parameters.hxx&cxx commented out. Have to find a way how to remove them from the project before deleting them ****** ------------------------------ Version 1.0.2 --------------------------------- 18 January 2001 Various unix utilities complain, that the following files do not have newline at the end of the file: action.cxx, attributes.cxx, attributes.hxx, parameters.cxx, parameters.hxx and smlunit.hxx Looking at the files, they indeed do not have! One just must not forget to have return key as the last character. Obviously the PC software does not mind this. I obviously have to worry only about action.cxx and smlunit.hxx since the other 4 are obsolete. ------------------------------------------------------------------------------ 4 March 2001 - Bug (rather an ommission) fixed in booloperation.cxx. It was not correctly outputing 'not' operation - also the changes of 18 jan 2001 implemented -------------------------------- Version 1.0.3 ------------------------------ 8-May-2001 This file, which used to be called README.txt on PC renamed to History ------------------------------------------------------------------------------ 17-May-2001 -processcommandline.cxx added #include ------------------------------------------------------------------------------- 31-May-2001 - parms.cxx numEntries declared as int - cxxtranslatorversion.hxx marked as version 1.0.4 ------------------------------------------------------------------------------- ->11 June 2001 Translating of Object Sets implemented: - smiobjectset.cxx & hxx...these are essentialy new files - smpcond.cxx it now recognises ( all_in 'object-set'...) or ( any_in 'object-set ....) - doins.cxx is translating insert and remove and converting it into a do. it also handles do 'action' all_in 'object-set' - main.cxx unitType changed from Object_Set to ObjectSet - cxxtranslatorversion.hxx 2.0 --------------------------------------------------------------------------------------- 14 June 2001 Windows NT does not have (nor needs) include file unistd.h ...#ifndef employed in processcommandline.cxx ---------------------------------------------------------------------------- 21 June 2001 insert and remove can handle object name passed from action param. doins.cxx ----------------------------------------------------------------------- 2 July 2001 insert/remove instruction handled as an instruction on its own: - new class InsertIns (new files insertins.hxx & .cxx) - inslist recognises this new class - code handling insert/remove removed from doins.cxx NB at the moment the insert/remove are still translated into do instruction to keep compatibility with the State Manager ------------------------------------------------------------------------------- 3 July 2001 insertins.cxx it does not translate insert/remove into do &INSERT.. any more, but: insert (always insert) 1 (0 for remove) 'object-name' 'set-name' .........1.........2.........3.........4.........5.........6.........7.........8 24 July 2001 names of actions and object set uppercased in smpcond.cxx and when.cxx -------------------------------------------------------------------------------- 3 July 2002 Diferent types of Simple conditions inheriting from abstract SmpCond -------------------------------------------------------------------- - the existing SmpCond class was converted into SmpCondTyp1 by copying smpcond.hxx&cxx into the new files smpcondtyp1.hxx & cxx and changing the name SmpCond to SmpCondTyp1. In adition some other minor changes had to be made. The most important of these is, that it now inherits from the new abstract class SmpCond. Otherwise the body of the code has not changed. - the class SmpCond (in files smpcond.cxx&hxx) has become abstract class. The public interface remains the same (except that the most methods are now purely virtual) with the following exceprions: 1) creator now takes idNum and initialises it as const 2) initialise method does not take idNum anymore - Condition Class (condition.cxx & hxx): - new method 'int smpCondTyp()' ... this has a quick look at the code and determines what type of Simple condition it is. At the moment it returns 1 or 2 - when during initialisation a Simple condition is found, the type is determined and the relevant class is instantiated and initialised. ================ Version 3.0 ================================================= 4-July-2002 (Boda Franek) - Class SmpCondTyp1 : has a private function getStates. This will be however usefull to other classes....getState made ordinary utility function outside the class definition - new class SmpCondTyp2 (files smpcondtyp2.cxx&hxx) appart from changing the name, it is essentially just a copy. This is because the Typ1 could have handled both types - Condition class now distinguishes between the two classes - smpcondtyp2.hxx,cxx & smpcondtyp1.cxx,hxx simplyfied taking into account their specific properties. Also typ 2 now has different private data. ============================ Version 3.1 ================================== 11 Oct 2002 (Boda Franek) - action.hxx, action.cxx New method name() returning the name of the action. 15 Oct 2002 & 9 Jan 2003 (Boda Franek) New instruction end_in_state 'state-name' ---------------------------------------- termins.cxx Allowing when of the type: when (....) end_in_state 'state-name' ---------------------------------------------------------------- - when.hxx, when.cxx 1) end_in_state is created as terminate_action during construction of when and a pointer to it is is kept as a private data. The action name is invented as X_END_IN_STATE_WHEN'when-id' 2) New constructor that takes identification number of when as input - state.hxx, state.cxx provides when with id number. Also at the end of translation of state it collects the when actions and adds them at the end of 'normal' actions. - condition.hxx, condition.cxx end of the condition used to be recognised by 'do' or 'then'. Now it can also be 'end_in_state'. New private variable holding the value of this terminator =============================== 4.0 ========================================= 4 Feb 2003 (Boda Franek) - when.cxx... the special when actions will be called &END_IN_STATE_WHEN'when-id' 5 Feb 2003 (Boda Franek) New 'removeall from 'set-name' 6 Feb 2003 end_in_state --> endinstate 1 May 2003 'move_to' is made synonym with 'endinstate'. Files affected: condition.cxx, termins.cxx & when.cxx 'remove_all' made synonym with 'removeall'. Files affected: insertins.cxx ================================ 4.1 ======================================== 30 July 2003 (Boda Franek) Simple Condition a) Introducing new private data item _type and initialising it in the initialisation list smpcondtyp1.*, smpcondtyp2.* b) changed the format to output to sobj file. The new format is: Type1 type no object-name "in_state"["not_in_state"] no of states state1 . Type2 type no object-set-name "all_in"["any_in"] "in_state"["not_in_state"] no of states state1 .. ------------------------------------------------------------------------------ 27 October 2003 (Boda Franek) doins.cxx improved diagnostics parms.cxx a) improved diagnostics b) a bug fixed: parname ! coment resulted in parameter name 'parname ' and therefore failure. This is normal behaviour of getNextToken. The result simply has to be trimmed ------------------------------------------------------------------------------ 24 March 2004 (Boda Franek) condition.cxx ... code added to recognise simple condition of Type 3 --------------------------- v18r2-t1 ---------------------------------------- 31 March 2004 (Boda Franek) - doins.cxx object set name uppercased and trimmed (rev 1.6) - insertins.cxx same as above (rev 1.5) - smiobjectset.cxx empty initialisation names are allowed in object sets and are ignored. E.g. {A,,B,C} is OK (rev 1.4) === 02-April-2004:12:21 ========== v20 ================= === 01-June-2004:17:23 ========== v21 ================= === 24-June-2004:12:17 ========== v21r1 ================= === 10-August-2004:13:11 ========== v22 ================= === 20-September-2004:12:06 ========== v23 ================= === 04-October-2004:12:45 ========== v23r1 ================= 27-October-2004 (Boda Franek) - iostream migration many files were modified. This consisted mainly in replacing #include by #include or #include by #include - new line added to the end of some files --------------------------------------------------------------------------- 28-October-2004 (Boda Franek) iostream migration ------------------ usage of iostream.inc & fstream.inc replaced by smixx_common.hxx === 29-October-2004:19:52 ========== v24r1 ================= === 25-November-2004:16:15 ========== v24r2 ================= === 22-December-2004:14:33 ========== v25 ================= === 11-March-2005:15:54 ========== v26 ================= ---------------------------------------------------------------------------- 20-May-2005 (Boda Franek) New feature: stay_in_state -------------------------- It is possible to say: when (....) stay_in_state Successfull evaluation of the when will have an effect of aborting evaluation of the following whens without taking any action and so the behaviour will be the same like if none of the whens was successfull. - condition.cxx .... condition terminator can now also be stay_in_state string - when.cxx ... stay_in_state string has an effect like if it was do &NULL === 20-May-2005:15:58 ========== v27 ================= === 25-May-2005:12:04 ========== v27r1 ================= === 14-July-2005:17:07 ========== v28 ================= === 28-September-2005:15:35 ========== v28r1 ================= === 06-October-2005:15:38 ========== v29 ================= === 20-January-2006:14:46 ========== v29r1 ================= 31-Mar=2006 (Boda Franek) isofclassobject.cxx method outSobj : warning issued when the object has ASSOCIATED attribute declared because this is taken from the class === 31-March-2006:17:27 ========== v30 ================= === 19-May-2006:20:34 ========== v31 ================= === 21-May-2006:21:01 ========== v31r1 ================= === 25-July-2007:14:58 ========== v32 ================= === 07-August-2007:11:55 ========== v32r1 ================= === 25-August-2007:13:31 ========== v32r2 ================= === 28-September-2007:15:29 ========== v32r3 ================= === 07-October-2007:16:50 ========== v32r4 =================