
// history of SIMLIB/C++ changes

SIMLIB ChangeLog:

2004-10-18
 - automatic dependencies 'make dep'
 - corrections for GCC 3.4
   GCC 3.4 solved the BUG-2004-02-11

2004-02-22
 - Process::{Seize|Release|Enter|Leave|Into}(....) use reference instead ptr

2004-02-11
 - check with g++ (GCC) 3.3.2 (Debian)
 - WARNING: BUG: all should be compiled with -O2 (or we get runtime errors!)
   should be investigated

2004-01-25
 - new version 2.18
 - some updates

2003-01-10
 - delay.cc: Delay::Delay(.....=0) corrected    (reported by Ales Smrcka)

2001-11-15
 - facility.cc: Seize/Release BUG found by student (and corrected)
 - this bugfix is incompatible -> new version 2.17
 - corrected 2 examples for new version

2001-11-06
 - minor cleaning
 - initialization in constructors by member initializers (not all is done)
 - check with GCC 3.0.2

2001-06-24
 - checked with GNU C++ version 3.0 [small changes]

2001-04-25
 - Martinek: new fuzzy subsystem [v2.16.3]

2001-04-05
 - new and better fuzzy subsystem [v2.16.2]

2001-02-28
 - integrated patch for fuzzy extension from David Martinek

2001-02-18
 - Fuzzy extension integrated [status: EXPERIMENTAL]

2000-11-12
 - Makefiles for FreeBSD(kazi) and Unixware(sts)
 - test basic examples on those two systems (with gcc 2.95.2): OK

2000-11-09
 - two optimization methods included: Hooke, sim. annealing
   modules: opt*.cc, interface: optimize.h

2000-11-03
 - version 2.16

20.1.2000
 - corrected the behavior of Facility:: Seize/Release
 - removed Process::Wait(Queue) 
 - changed examples

8.10.1999
 - corrected missing return type of Input{2D|3D}::operator ==

5.5.1999
 - IsOnHeap renamed to IsAllocated and reimplemented to work correctly

...14.1.1999
 - try to innovate Store::Enter/Leave() -- fail
 - Problem: Store::Enter() -- activation of process should be done from Leave() only
 - store.cc,facility.cc -- OwnQueue() predicate used in code

...8.11.1998
 - corrections for egcs 1.1 (template class plist removed)
 - make for Unixware/egcs

...26.8.1998
 - big changes in List, Calendar, ... implementation
 - new debugging facility #define SIMLIB_DEBUG [mode]
 - new code for cleanup SIMLIB_atexit, ... (for internal use only)

...15.8.1998
 - remove SimObject::_flag, add const char *_name (temporary solution)
 - new detection of objects on heap (two pointers: {min_|max_}heap )
 - Calendar on pointer ( allows scheduling before Init() == globals)
 - many minor changes

4-12.8.1998
 - verze 2.14  ---------------------------------------
 - novy modul delay.cc a samostatne rozhrani delay.h 
 - run.cc --- instalace funkci na ukazatel (HOOKS)
 - new macros: CALL_HOOK(x), DEFINE_HOOK(x), INSTALL_HOOK(x,f)
 - simlib.h --- typ bool, t{Event|Service}Priority, drobne zmeny
 - change of method name:  NameOf ---> Name
 - new macro: SIMLIB_internal_error() --- print message, file, line
 - cleaning, new comments

12.6.1998
- upravy Makefile pro Linux a FreeBSD
- opravy chyb zjistene prekladacem GCC 2.8, egcs

10.12.1997
- pridano Print(Value3D), Print(double-1-2-3)
- Integrator3D operator = (Input3D)|(Value3D) - jeste doplnit do 2D
- problem s ne-inline funkci v *.h a dyn. knihovnou


6.12.97
- modul simlib2D a priklad
- pridan blok fce Sqr x^2

11.97
- PP - modul simlib3D a priklady (druzice*.cc)

97
- Leska - doplneno prepinani num metod a nove num metody

8.5.96
- BC 3.1 vypnuta optimalizace -Oi (problemy v NUMINT!!!)

30.4.96
- nove num. metody (Leska) -- BETA
- novy podadresar NUMINT

16.4.96
- barrier - oprava Break!!!
- Stat, TStat, Histo + nove metody, zapouzdreni (n je problem!!) 

13.4.96
- doplněna třída Expression (blok s 1 vstupem -- identita)
- doplněn model TEST13/schema[2].cpp -- hierarchie!

10.4.96
- Histogram::Histogram(......count=10)

4.4.96
- doplněny funkce Tan, ASin, ACos, ATan, ATan2, Log10, Sign, Pow
- dprintf2

27.3.96
- oprava modulu WaitUntil: 
    problem pri WaitUntil(TRUE) - vyjme z WUList a tim zrusi aktivitu!
    (opraveno nastavenim na First -- testuje znova ostatni = OK)
    (možný problém: zacyklení !!!???)

26.3.96
- modul Calendar -- upraveno tak, aby priorita procesu byla v EvNotice
  + testovaci modul

22.3.96
- odstranena chyba Entity::_SPrio neinicializovano if Wait(Queue)
- Uniform -- pridana kontrola argumentu

19.3.96
- interní globální symboly přejmenovány SIMLIB_*
- upraveno pod EasyWin -- Windows 16bit aplikace
  problémy: nastavit Target W16, velikost zásobníku ještě v TEST.DEF

11.3.96
- doplněno: aContiBlock{1,2} do hierarchie, kontrola smyček
- opravena chyba _Max
- SIMLIB.H přeloženo do angličtiny
- aliasy Lim Limitation atd...


19.2.96
- verze 2.1
- doplneno Semaphore, Barrier

1.12.95
- Boolean ---> Bool
- char *NameOf() ---> const char * NameOf()

24.11.95
- PROCESS.CPP - oprava pro DJGPP 2.0 (asm), testy

23.11.95
- random2.cpp - oprava v Poisson: double -> int (odhalilo GNU C)

11.11.95
- zrušeno OLDOUT.CPP
- upraveny příklady
- překlad pro BC3.1, BC4.0 a BC4.5 (pro BC4.0 je zbytečné)
- v2.03 rev.951111 (na síti)

24.10.95
- random2.cpp - úprava Poisson()

5.6.95
- Calendar::Clear(destroy) upraveno aby se pouze vyjmulo a nerušilo
- zrušeno ERROR.H a DEBUG.H  ---- přesun do INTERNAL.H

24.5.95
- funkce Print, _Print, ErrPrint: doplněno fflush

14.5.95
- třída Sampler - doplněno SetStep(dt) a GetStep()

8.3.95
- v.2.02 rev.950308 (na síti)
- doplněny funkce Exp(x) a Ln(x)

22.1.95
- upravy v simlib.h  #pragma....

4.12.94
- přeneseno pod Linux + Makefile + testy

12.9.94
- v SIMLIB.H doplněno #pragma option -a- -K-

10.9.94
- doplněna funkce Error(const char *fmt, ...)
-

xx.06.94
- test numint2.cpp - Eulerova metoda

16.5.94
- přidán implicitní konstruktor Integrator vstup = 0

3.5.94
- name.cpp - zvýšen limit počtu jmen v tabulce z 200 na 1000 (prozatím)
- upraven simlib.h: #ifdef __MSDOS__ atd.
- PROBLÉM: #pragma option -Vo  |  problémy s konzistencí !!!!!!!!!!!!

19.4.94
- oprava v modulu STORE.CPP  Store::Leave    
     p->Out() zruší aktivitu ==> chyba!   (thanks to Mr. Gráf)

25.3.94
- upraveno pro GNU C++ pro DOS/386  (#ifdef)
- opraven modul OldOut --- OutInt --> OutShort (kompatibilita 16/32bit)
- problémy s GNU C++ (prázdné metody, Time, ...)
- opravena chyba Frict::Value()  záměna low <-> high

7.1.94
- chyba v implementaci Time -- operace s double jsou chybné
- úprava hierarchie Double <---- SimTime
    a oprava Input, nové operátory Double*double, Double*Double
    a vznikla nová chyba -- kolize operátorů !!!!!!!!!!!!!!!!!!!!!

============================================================================

1.12.93
- !!! objevena chyba ve funkci Eval u všech stavových bloků
   (postupně opravováno)

29.11.93
- úprava třídy Condition (testovací model MICEK.CPP)
- doplněny zakázané operace operator= a copy constructor pro tř. SimObject

28.11.93
- doplněn test konzistence SIMLIB.H a SIMLIB.LIB
- doplněna třída Double
- nalezen problém při integraci  Status x(Sin(Time)); hlásí:
      Warning: nelze dodržet zadanou přesnost
    výsledky jsou ale v toleranci...
- přejmenována třída Variable na ReferenceToDouble
- upravena třída Input aby pracovala s objekty Double
- doplněn typedef Input Expression;
- doplněna třída Function (?)

27.11.93
 problémy s proměnnými double v obj. výrazech - používat class Parameter
 doplněna třída Parameter (?)
 drobné úpravy v souvislosti s laděním modelů
 doplněna třída SimTime a objekty Time, StartTime, EndTime, NextTime
  upravena třída Input aby pracovala s objekty SimTime

25.11.93
 chyba v Facility::Clear() --- volá Q?->Clear() i pro zrušenou frontu!!!
       totéž v Store::Clear() - opraveno: nuluje jen vlastní fronty.
 chyba nalezena: chybí přetypování  delete (EventNotice*)e->_Ev;
                 nevyvolal se destruktor...
 
24.11.93
 chyba při provádění procesu - Wait ?????!!!! hledání neúspěšné...
 EXTVARS.H přejmenováno na INTERNAL.H + doplněny prototypy funkcí

28.10.93
 kalendář zrušen ze SIMLIB.H

29.9.93
 doplněny metody SetInput
 změna třídy Graph - automaticky sbírá data

25.8.93
 doplněn modul DEBUG, funkce DebugOn/OFF, a příznak v RUN.CPP
 doplněno Rline, Sqrt


23.8.93.
 drobné úpravy simlib.h (NULL--,anglicky...)

22.7.93.
 drobné úpravy name.cpp (doplnění const)







----------------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////////
----------------------------------------------------------------------------
OLD:

<17.10.1991
-----------
 - podminky,stav. prom. a integratory upraveny - bez poli
 - doplnena promenna _Phase

13.11.1991
----------
 - doplneno NameOf u vsech trid tak aby jednoznacne identifikovalo objekt
 - rada metod prevedena na virtualni
 - Facility
 - Store
 - doplneny statistiky do seznamu
 - doplnen WaitUntil

14.11.91
--------
 - modul PRINT
 - moduly _DYNAMIC _COND
 - upravy tisku
 - konstruktory bez parametru

15.11.91
--------
 - kazdy objekt ma priznak IsOnHeap()
 - seznamy rusici podobjekty testuji IsOnHeap() a potom teprve delete
 - Object definuje svoje operatory new a delete s kontrolou

16.11.91
--------
 - dodefinovani konstruktoru
 - metody pro definici/zmenu parametru objektu
 - Entity maji cislo, je znam pocet entit v modelu a pocet vytvorenych

17.11.91
--------
 - nalezena chyba !!!! a opravena
    BC++ v pripade ze nezna destruktor, nevola nic a provede delete !!!
      class EventNotice;
      ...
      EventNotice *_Ev;
      ...
         delete _Ev; // nevola destruktor - nezna jej ale nehlasi nic!!!

 - NameOf - zruseny inline v simlib.h

20.11
-----
 - doplneno Histogram::operator [] (unsigned i) 
 - prejmenovani List::Card() na List::Length()

25.11
-----
 - opravena chyba v RUN fce Run() spusteni jedne udalosti navic!!!!
   (opraveno prozatimne !!!)

26.11
 - doplnen modul QUEUE

27.11
-----
 - opravy v RAND.CPP
 - modul OUTPUT - tisky do ramecku
 - opravena chyba v Store::Leave()-List::XXXX Queue
 - opraveno List::Clear()

29.11.
------
  - upraven Histogram::operator ()  double=>int

30.11.
------
  - drobna optimalizace Random() asi 10%
  - testovani
  - modul NAME - NameOf pro většinu tříd


01.12.91
--------
  - upraveno ERRORS.DOC + ERROR.CPP - InternalError,...
  - drobné opravy

05.12.91
--------
  - korekce dokumentace
  - opravena chyba v FACILITY.CPP  Release()-vybere podle priority
      obsluhy z obou front
  - doplňena funkce SetOutput(char*)

06.12.91
--------
  - opraven Store - prohlizeni fronty

09.12.91
--------
  - hledání záludné chyby v INTG.CPP (neúspěšné)
  - doplnění Entity::Terminate a Cancel

11.12.91
--------
  - opravena chyba v INTG.CPP
  - opraveno Facility,Store : public Object {
  - doplněn modul FUN.CPP (funkce a třídy pro spojitou simulaci)

13.12.91
--------
  - doplnen modul OLDOUT.CPP (funkce a tridy pro vystup pro OE)
  - opraveny destruktory Integrator,Status,Condition
  - doplněny testy mezí pro MinStep, MaxStep a RelativeError
  - *** poznámka pro uživatele TC++ v1.00:
        je třeba nadefinovat funkci
        void operator delete(void *p) { free(p); }
  - korekce v dokumentaci

14-15.12.91
-----------
  - doplněny funkce ContractStep
  - testování - příklady
  - **** POZOR!!! zkontrolovat výpočet směrodat. odchylky !!!


DEADLINE VERSION 1.0
--------------------

VERSION 1.01
------------
15.4.92
-------
  - prejmenovano class Object na class SimObject

16.4.92
-------
  - novy modul NUMINTG
  - nova funkce SetMethod() - nastaveni integracni metody

8.5.92
------
  - zmena funkce OpenOutputFile:
     implicitni jmeno vyst. souboru podle jmena modelu (*.exe)

23.11.92
--------
  - doplneny prostredky pro praci s Petriho sitemi
    (modul RUN)

----------------------------------------------------------------------------
//////////////////////////////////////////////////////////////////////////*/
