# ROOT Version V0_05 Release Notes

    //________________________________________________________________________
    //
    //::>          VERSION  0.05/03   02/02/96 14.34.14
    //
    // 01/02/96  20.22.29  by  Fons Rademakers
    //
    - Crazy.mac now runs correctly on the optimized versions of ROOT on
      HP, Solaris and AIX 3.2 (cernsp).

    - Class TMinuit: changed the structure of mnline(), this fixes problems with
      some older Cfront based compilers (Solaris) that do not handle the
      destruction of temporary TString objects correctly.

    - Class TRint: fixed bug in AnalyzeLeft() in case of assignment to an
      object pointer (TText *t1=pave.AddText("aap")).
    //
    // 01/02/96  16.14.07  by  Rene Brun
    //
    - Merge with Valery's version. Graphics now fully operational under Windows/NT.

    - Some changes in the dictionary macros to be independent between Unix and NT.
      New macro UpdateDict.

    - Change global name f1 to gF1 in TH1 and a few other places.
      TH1 must still be changed to remove several unneccesary globals!

    - Introduce a few ifndef SOLARIS in the Minuit code in case of Solaris.
      Problem apparently due to a bug in the C++ Solaris compiler in
      minuit routine mnline.

    - Move functions LegoFunction, GouraudFunction, SurfaceFunction
      from the TH1 class to the TLego class.

    - Change the default option in Paves from "tr" to "br"

    - Slight changes in TFormula::Evalpar to solve a problem on Windows/NT
      with the Symantec compiler.

    - Improve performance of data types conversion routines in bytefromto.

    - Implement more efficient I/O for the Array classes.

    - Code to Create/Fill/Read Tree/Branch now complete.

    - See a short example to create a tree in the TTree::TTree constructor

    //________________________________________________________________________
    //
    //::>          VERSION  0.05/02   23/01/96 19.14.59
    //
    // 23/01/96  18.49.43  by  Rene Brun
    //
    - Activation of the new TContextMenu class for demonstration purposes only.
      This class supports the logic when the right mouse button is clicked
      on any object on the screen. A pop-up menu is shown with a selected list of
      functions specific to the class of this object.
      If one menu item is selected, a second menu appears with the list
      of parameters of the corresponding function. The user can type the
      parameter value in the input field of the named parameter.

    - Modify many include files to insert the string *MENU* in the comment
      field of member function prototypes to be seen in the pop-up menus.

    - Modify the program DICT to store the comment field and also inline functions
      declarations in the dictionary.

    - Member function TClass::DefineMethod and the TMethod constructor modified.
      A new parameter "comments" pass the value of the comment field.

    - Class TMethod modified. New data member fComments.
      New member function TMethod::GetComments.

    - Change in TAlias::Substituted. Aliases defined with one single character
      are OK now.

    - Merge with Valery's version of 22 January.

    - Update include $Readh used by the dict compiler.
      Increase the maximum number of classes from 250 to 300.
      You must recompile the compiler.

    - Insert new menu item Browser in the Inspector menu of the tool bar.
      Implement new member function BrowserCB in TMotifCanvas.

    - Remove call to TEditor in NewPadCB.

    - New Directory TREE.
      This new directory includes all the Tree/Branc/basket/Leaf.. classes.
      The code for these new classes is not operational yet. It is inserted to use
      the automatic generation of the HTML code for documentation.

    - New macro dict_tree to generate the dictionary for the Tree classes.
      The DictTree deck is put in Patch Tree.

    - Remove functionality of NewPad in tool bar menu View.

    - Very important change in the ClassDef philosophy.
      The ClassDef macro has still the same syntax as before, but the second parameter
      indicates now the version number of the class. As a consequence version
      numbers have been changed to 1.
      This version number is used to support evolution of the class schema
      with time.
      The ROOT DICT compiler has been modified to automatically generate the code
      to support versioning in the member functions ReadBuffer, FillBuffer and
      Sizeof.
      All ROOT classes have been changed to support this facility.
      With this important new feature, ROOT will be able to read any type
      of ROOT file written with older class definitions. Objects made
      with different class versions can coexist in the same file.

      The ROOT include $RConfig has been modified. It includes two new macros
      called FillVersion and ReadVersion. These macros can be referenced
      in FillBuffer and ReadBuffer respectively.
      Example: the TLine class in ROOT itself. TLine inherits from TObject and TAttLine.
      The parameter specified in FillVersion must be the class name.
      The parameter specified in ReadVersion(version) is an integer that returns
      the class version number. Conditional code based on version may be included
      when the class definition changes.
      The TObject::FillBuffer, TObject::ReadBuffer, TAttLine::FillBuffer, TAttLine::ReadBuffer
      contain the same statements. Note that the code below is automatically
      generated by the ROOT compiler itself.
      The overhead introduced by this versioning scheme is 2 bytes per class component
      of an object.

       void TLine::FillBuffer(char *&buffer)
       {
       //*-*-*-*-*-*-*-*Encode TLine with its attributes in output buffer*-*-*-*-*-*-*
       //*-*            =================================================
       FillVersion(TLine);
         TObject::FillBuffer(buffer);
         TAttLine::FillBuffer(buffer);
         byte_fromfloat(buffer, &fX1);
         byte_fromfloat(buffer, &fY1);
         byte_fromfloat(buffer, &fX2);
         byte_fromfloat(buffer, &fY2);
       }

       void TLine::ReadBuffer(char *&buffer)
       {
       //*-*-*-*-*-*-*-*-*Read this TLine & its attributes from input buffer*-*-*-*-*
       //*-*              ==================================================
       ReadVersion(version);
         TObject::ReadBuffer(buffer);
         TAttLine::ReadBuffer(buffer);
         byte_tofloat(buffer, &fX1);
         byte_tofloat(buffer, &fY1);
         byte_tofloat(buffer, &fX2);
         byte_tofloat(buffer, &fY2);
         AppendPad();
       }

     We do not provide a macro for Sizeof. Instead inserts one statement:
          Int_t nbytes = sizeof(Version_t);

       Int_t TLine::Sizeof() const
       {
       //*-*-*-*-*-*-*Return total size of this TLine with its attributes*-*-*-*-*-*-*
       //*-*          ===================================================
          Int_t nbytes = sizeof(Version_t);
          nbytes      += TObject::Sizeof();
          nbytes      += TAttLine::Sizeof();
          nbytes      += 4*sizeof(Coord_t);
          return nbytes;
       }

    - the DICT compiler has several changes. Regenerate all dictionary decks.

    - A new macro in $KUMACS/make_code. This macro is an interface to
      the program makecode generated automatically by the "exec utils" facility.
      makecode writes the skeleton C++ code corresponding to a class header file.
      The syntax to invoke this program is the following:
         makecode headerfile_name  cppfile_name
      Example:  makecode Line.h Line.C generates the implementation file Line.C
                from the class definition in Line.h
      The root.cmz file also defines an alias called "code".
      Typing :  code Line
        extracts automatically Line.h from the cmz include directly, invokes
        the makecode program with the syntax desbribed above and also returns the
        File.C in the cmz editor.
      Note that the makecode program inserts by default the header and relevant
      includes for the implementation file. It also generates the FillBuffer,
      ReadBuffer and Sizeof member functions of the class.

    - Some memory leaks fixed in several classes. In particular in THN::Draw.

    - New member functions TGeometry::RecursiveRemove and TNode::RecursiveRemove.

    - TPad::Delete invokes TList::Clear instead of TList::Delete.

    - Protections in TAttLine::Modify and also the othera ttribute classes
      against possible calls when no canvas has been defined.

    - Simplification of TROOT::Reset

    - Fix bug in TRINT::AnalyzeLeft in case apointer=2.

    - Several mods in the TH2X::DrawCopy function.
    //
    // 17/01/96  12.23.34  by  Nenad Buncic
    //
    - Change in TPopupMenu::Show(XEvent *event) member function. Added menu
      position code.

    - New class TContextMenu provides an interface to context sensitive
      popup menus. These menus pop up when the user hits the right mouse
      button.

    - Change in TMotifCanvas. Added new private data member fContextMenu.
      Added support for the TContextMenu in TMotifCanvas::CreateWindow().
      also change in TMotifCanvas::~TMotifCanvas() added code for deleting
      TContextMenu object.

    - Change in TClass. New member function TList *TClass::GetContextItems().
    //
    // 13/01/96  18.28.34  by  Rene Brun
    //
    - Correct bug in TPavesText::Paint. Previous code was assuming origin at (0,0).
    //
    // 11/01/96  11.41.08  by  Fons Rademakers
    //
    - TROOT: moved all dictionary type definitions in a protected member
      function InitTypes. This obsoletes the routines InitH and InitG (they
      are removed from the file). Removed also the declaration of InitGui
      from the TROOT header.

    - Routine InitGui(): initialize the MakeDefCanvas routine here instead of in
      letting the user do it (was in TRint which is formally a user defined
      routine).

    - TApplication: added protections in the ctor in case TROOT is not initialized
      and InitGui() has not been called. Also call gROOT->SetApplication() here
      instead of in TRint (same rationale as above).

    - rmain: removed InitH() and InitG() from the TROOT ctor.

    - Added InitGui() to the TROOT ctor in test_th.
    //
    // 10/01/96  10.16.01  by  Rene Brun
    //
    - Update the README deck.

    - $Object has an additional BIT(3) kObjInCanvas.
      The TObject::AppendPad function automatically sets this bit for all objects
      inserted in a pad/canvas.
      The TObject destructor as well as the TDynamic destructor and TROOT::Reset
      test this bit before calling TCanvas::RecursiveRemove.

    - Define __STDC__ for WIN32 in ZIP/Inflate.

    - Set default in TRoot::Reset to null string.

    - Remove extra line with { in deck x3d for WIN32 flag.

    - Create new directory GPAD and new DICT_GPAD.
      The following decks have been moved grom directory G to GPAD:
         AttButton
         AttLineButton
         AttFillButton
         AttTextButton
         AttMarkButton
         AttHistButton
         Pad
         ChoiceButton
         EditButton
         AngleButton
         Editor
         SelectPad
         Canvas
      The following decks have been moved grom directory BASE to GPAD:
         Undo
         INitGUI

    - Minor mods to H1 and FIle.

    - Mods in $RCONFIG. Introduce SGI option.

    - Mods in ZIP for WindowsNT. Must deselected MSDOS flag in some places.
    //
    // 09/01/96  10.58.06  by  Fons Rademakers
    //
    - Class TFile: added compression factor default argument to ctor. By default
      compression is 1.

    - Removed unused functions CompressBuffer and UnCompressBuffer from Patch C.

    - In classes THtml, TFile, TPaveText: changed fstream to ifstream or ofstream.

    - In number of decks removed unused variables.

    - Class TBtree: fixed bug. BTree's seem to work fine now.

    - Class TSystem: Which() is now an (abstract) member function (was static
      on TUnixSystem).

    - Class THtml: use member function Which() instead of TUnixSystem::Which().

    - Class TUnixSystem: Which() is now a member function.

    - Include X3DBuffer: added proper extern "C" statement.

    - Getline: made ANSI C conformant (function prototypes) and added MacOS
      version.

    - Class TMacSystem implemented.

    - Introduced headers for TGMac, TMacGuiFactory.
    //
    // 08/01/96  09.07.04  by  Rene Brun
    //
    - Correct bug in TClass::Draw. All PaveText objects created are deleted
      before return.

    - Rename TFile::Compress to TFile::SetCompressionLevel and set protections.

    - Correct Minexam test program. Must specify the maximum number
      of parameters in the TMinuit constructor.

    - Restructure TRoot destructor and TRoot::Reset.

    - Clean up all Delete functions. The TObject::Delete has additional
      functionality to also delete TDynamics pointing to this object.

    - TDynamic destructor changed to recursively remove pointed objects
      in the current canvas.

    - Delete member function Delete in the following classes:
      All TArray classes, TH1, TH2, TH3, THN and TNamed.
      TCanvas::Delete invokes TObject::Delete instead of TPad::Delete.

    - New directory ZIP.
      This directory contains new code (the Gzip/GUnzip algorithms) to
      compress/uncompress data.
      Macros loadincludes, root_libs and root_make have been modified
      to use this new directory. A new shared library zip.sl is also created.

    - Mods in TFile constructor. By default a new file is compressed.
      use member function Compress(0) to select the uncompressed mode after
      the TFile constructor.

    - Class TKey modified to call the new compression routines mmzip and mmuzip
      from the ZIP patch. (thanks to E.Tchernaev).

    - Mods in TFile::Map. In case of a compressed file, do not list name and title
      of the object because they are part of the compressed data.

    - Modify the test programs in directory TEST.
      Remove references to hclasses and gclasses.

    - Merge with Valery Fine version of 4/01/96.

    - Changes in Tutorials to reflect new ROOT functionality.

    - Protect TMethod in case a member function (eg TMotifCanvas) defines only
      the type of parameters and not the name.

    - Protect THtml against NULL pointers.

    - Changes in TF1::Paint. Remove temporary histogram from current Directory.

    - Mods in THN::Fit and THN::Draw.
      By default the temporary histogram created is called htemp.
      If varexp contains >>hnew , the new histogram created is called hnew
      and it is kept in the current directory.

    - Reorganization of TKey. The new TKey class is used not only
      to write objects in the current directory, but also by the ntuple class
      to write new ntuple buffers.
      The task of inserting the key in the list of keys has been moved to the
      TDirectory class.

    - New member function TDirectory::AppendKey. It returns the key cycle number.

    - New argument in TKey::WriteFile(Int_t cycle). This function must be called
      only after the cycle number is known.

    - Delete [] fRaster in TLego destructor.
    - Delete fRealdata in TClass destructor.

    - Fix bug in TNode destructor. Must remove node from gCurrentGeometry list
      of nodes when fParent = 0;

    - Add statement tlink->SetBit(kCanDelete) in TObject::Inspect

    - Delete TH1::UpdateOptions.
      Move corresponding code in TAttHistButton::SetAttributes

    - SetBit(kCanDelete) in TSelectPad and TEditButton constructors.

    - Correct TMixture destructor.

    - Merge with Fons version of 23 December.

    - Protection in TLego constructor. Do not create a new TView if pad has already
      an existing view.

    - Protect TFile::Sizeof if fFree is NULL.

    - Reimplement initialisation of MakeDefCanvas in TROOT.

    - Move declaration of gSize3D from Pad to VirtualPad.

    - Move TObject::DrawClass from ObjInspect to Object.

    - Create new macro dict_gpad to create a new dictionary DictGPad.
      DictGpad contains all classes including Pad and its derived classes.

    - Move several classes from Base or G to GPad.

    - Remove GetCanvas from ROOT include and from implementation.
      This was forcing the code of GPad in case of normal archive libraries.

    - Delete TH1::Write, THN::Write, TNamed::Write and TCanvas::Write.
      All objects are now written exclusively via TObject::Write.

    - New data members fVersion, fVersionInt, fVersiondate, fVersionTime in ROOT.
      Corresponding new access functions:
        - GetVersion()  returns ROOT version as stamped by CMZ.
        - GetVersionInt() version number in integer format
        - GetVersionDate() date of version (ex 951226)
        - GetVersionTime() time of version (ex 1456)
      Replace sequences VERSQQ,etc in TRINT::PrintLogo by these access functions.
      Use GetVersionInt in TFile:TFile instead of kVersion.

    - Add new data member fCompress in TFile and corresponding function
      IsCompressed() returns kTRUE is file is compressed, 0 otherwise.
      Compress(Int_t mode=1) to set the compress flag.

    - Add new data member fObjlen in TKey. When option Compress is selected,
      fObjlen is the length of the uncompressed object.
      Old ROOT files can still be read with the new format.

    - New static functions CompressBuffer and UnCompressBuffer in Patch,C.
      These two functions are called by the TKey class when the file is in
      compress mode.

    - New member function TFile::GetCompressionFactor.
      This function scans a ROOT file sequentially. It computes the total number of
      bytes compressed and uncompressed. It returns the ratio uncomp/comp.
    //
    // 04/01/96  14.20.46  by  Valery Fine
    //
    - AddAtFree member function was added for ObjArray Class
      It adds a new TObject at the free slot in the array or at its last empty
      slot.
      Return the slot number

    - a flag QF_MSOFT was introduced for UTILS patch, which means Microsoft
                      Fortran compiler will be used.
    //
    // 23/12/95  02.38.24  by  Fons Rademakers
    //
    - Class TApplication is now independent of the GUI.
      TApplication contains now a pointer to TApplicationImp which provides the
      interface to the GUI dependent application class TMotifApplication.
      TApplicationImp is initialized using the gGuiFactory.
      This pattern is identical to the ones I use for TCanvas and TBrowser.
      Hsimple does not reference any Motif or X11 routines anymore!

    - Many changes in the MOTIF patch: TApplication -> TMotifApplication.

    - TGuiFactory: create a TApplicationImp.

    - The gGuiFactory and gGXW are now initialized in InitGui(). InitGui() is
      added to the list of init functions for TROOT in rmain.
      TMotifGuiFactory was called in TROOT which caused the loading of all
      the Motif classes.

    - All HClasses, GClasses, etc. are renamed InitH, InitG, etc. InitXXX
      means "Initialize system XXX".

    - TClass: introduced the typedef ReadCallBack_t. Is easier on the eye
      than function pointer syntax.

    - Dict: the ReadObject function is now a static class member function
      (like Dictionary()). This has the advantage that the default constructors
      may now be private or protected. Regenerated all dictionaries.

    - $Rconfig: added ReadObject() to the ClassDef macro.

    - First version of TMacSystem introduced.
    //
    //________________________________________________________________________
    //
    //::>          VERSION  0.05/01   21/12/95 15.20.45
    //
    // 21/12/95  10.56.51  by  Rene Brun
    //
    - Protect several destructors against reentry (this can happen when objects
      have been stored in several lists).

    - Correct several problems when deleting arrays. Found a few places
      with "delete thing" instead of "delete [] thing".

    - New and very simplified version of THN::Draw. This new version
      takes advantage of the new kCanDelete mechanism.

    - Functions TH1::PaintStat and TH1::PaintTitle have been rewritten.
      The title and the stats are now TPaveText objects instead of pads.

    - New constant kCanDelete introduced in TObject. The kCanDelete bit (bit 0)
      is used to identify objects in TList that can be deleted in TList::Clear.
      This feature is of interest for all objects entered into a pad via a copy
      operation.
      All graphics functions have been modified to SetBit(kCanDelete) in all
      DrawCopy functions.

    - TList::Clear modified. In the Clear operation, all objects with the kCanDelete
      bit set are deleted.

    - In TH1F::DrawCopy reset fDirectory to 0.

    - Optimize TPaveText::Paint to compute a better character size.

    - In TPad::Clear remove the special logic to delete the stats and title pads.
      This is now automatic with the kCanDelete bit.

    - In the TStyles constructor update default positions of the histogram title
      and statistics box.

    - In TNamed::ls print also the TestBit(kCanDelete).

    - Additional protections against already deleted objects in TROOT::Reset.

    - The TDynamic constructor has been modified to issue a Warning in case one
      attempts to recreate an already existing TDynamic.

    - Important changes in all attribute classes. The following functions have been
      deleted:
      TAttLine::SetAttributes
      TAttFill::SetAttributes
      TAttText::SetAttributes
      TAttMarker::SetAttributes
      All ExecuteEvent functions referencing 1000+TAttxxx have been simplified.
      The logic previously in the above functions has been moved in the
      TAttLineButton::SetAttributes, etc.
      These changes were necessary to remove all references to TPad and TCanvas
      in many classes.

    - a new member function TObject::Execute(Text_t *methodname, Text_t *parlist).
      This new function is used as an interpreter in some places where casting
      to classes like TAttLine is not possible (TAttLineButton::SetAttributes,etc..).

    - ROOT has been ported on Alpha-OSF. Some changes were necessary to be able to
      compile. Several ifdef ALPHA have been introduced in a few classes,
      $RConfig, $TString, $RTypes.
      ifdef,ALPHA also introduced in TbTNode constructor and in TString to circumvent
      a bug in the DEC compiler. Problem has been reported to Jean-Piere Thibonnier.

    - Macros bind_test and compiler modified to support porting on Alpha-OSF.
      New macro bind_lib_alpha.

    - TNamelist modified to fix a problem with the DEC compiler.

    - Class TUnixSystem modified to accomodate the ALPHA version.

    - Add new data member fType in TF1. This is necessary due to limitations
      of the DEC compiler (cannot do if(fFunction) ) when fFunction is a pointer
      to a member function).
    //
    // 21/12/95  10.33.19  by  Fons Rademakers
    //
    - Port to Solaris 2.3 (ifdef SOLARIS). Changes mainly in TUnixSystem.
      Some problems in TMinuit, due to some compiler problem (I suspect).
      When running with Purify no errors are reported. However, some TString
      dtor for chpq gets erroneously called at the end of TMinuit::mnline.
      Code ifdef'ed for SOLARIS. Still segmentation violation in ~TROOT.
      Also here it runs fine when in Purify. Will investigate further.

    - Dict: fix for very long lines in dictionary. Truncation was incorrect.
      Problem appeared in TTRAP dictionary.

    - Number of corrections in the install scripts.

    - New class TRandom: wraps Rndm() and Rannor().

    - Class TStopwatch: removed machine dependencies from header.

    - Class TString: protection in TString::operator() when specifying a
      substring that is too long.

    //
    // 18/12/95  11.47.32  by  Rene Brun
    //
    - In TFormula, replace all static array declarations by pointers to arrays.
      Create local pointers witha  maximum dimension to handle very long formula.
      Copy these local arrays into the TFormula objects at the end of
      TFormula::Compile.

    - Protect TClass::BuildRealData for case where dm->GetDatType() is NULL.

    - In TMinuit, replace all static array declarations by pointers to arrays.
      New member functions TMinuit::BuildArrays and TMinuit::DeleteArrays.
      The TMinuit constructor calls BuildArrays.
      The TMinuit destructor calls DeleteArrays.
      With this change, Minuit is not limitated anymore for the number
      of parameters. The default maximum number of parameters has been changed
      from 50 to 15.

    - $VirtualPad has now the extern gCurrentPad and gCurrentCanvas.
      The extern declaration has been removed from $Pad and $Canvas.

    - Continue clean-up of several decks to remove references to Pad and Canvas
      where VirtualPad is sufficient.

    - Implement new logic in TPave, TPaveLabel, TPaveText.
      If the option NDC is given to the TPave constructor, the TPave or its derived
      class objects are defined in NDC coordinates instead of the default
      world coordinates.
      Also, the Pad may be in log scales.

    - Disable one line in TGaxis to optimize number of primary divisions
      as a function of the physical pad size.

    - Changes in TH1 paint functions. The fitted function was not always drawn
      when the option "e1p" was given.
    //
    // 15/12/95  15.32.38  by  Nenad Buncic
    //
    - Added support for a search engine in the THtml::CreateIndex member function.
      If an environment variable Root.Html.SearchEngine exist in .rootrc file
      (see also class TEnv), and if it points to the search engine,
      generated index will be search-able, also one additional file, containing
      search options, will be created in the default HTML output directory
      ('Search.html'), but only for The Developers team, in all other cases search
      form will be without options.

      Example:
         Root.Html.SearchEngine: http://very.fast.machine.com/cgi-bin/search
    //
    // 13/12/95  10.28.53  by  Rene Brun
    //
    - Create new directory INCWIN32. Move all sequences previously in WIN32 in
      this new directory. Modify loadincludes and headers accordingly.

    - Fix 4 problems in DICT.
      - Data members having blanks between the name and the semicolon were ignored.
      - if argument type is a class local typedef or enum prepend classname to it.
      - if argument type is a baseclass typedef or enum prepend baseclassname to it.
      - Do not store member functions that are pointers (eg **Argv) in Dictionary.

    - Impressive gain in speed in dict thanks to the introduction of a new
      array iparent(maxclass).  This array is filled at the end of READH
      and avoids thousands of calls to the time consiming routine FindClass.
    //
    //
    // 12/12/95  12.20.01  by  Nenad Buncic
    //
    - Introduced some make facilities and new member function THtml::IsModified,
      also THtml::CopyFile has changed. Machine dependent code has been removed,
      and replaced by TSystem calls. Some private member function are disappeared
      (due to optimisation), or function parameters has been changed.

    - Member function THtml::CopyFile has changed, actually completely
      rewritten, and now it should be faster.

    //
    // 09/12/95  18.07.38  by  Rene Brun
    //
    - New class TAlias. Command aliases may be defined in several ways.
      for example you can add to your rintlogon.mac the following definitions:
        TAlias sh(sh,"gSystem.Exec("")
        TAlias pwd(pwd,"gSystem.Exec(pwd)")
        TAlias ls(ls,".ls")
        TAlias op(op,gObjectTable.Print)
        TAlias ed(ed,"gSystem.Exec(ved ")
      then in a ROOT session typing
        Root > sh echo this is a message
      has the same effect as:
        Root > gSystem.Exec("echo this is a message")

    - Change TF1::Draw and TF2::Draw in case the same function with different
      parameters is drawn on the same canvas. In this case one must copy
      the function.

    - Changes in TPostScript::Text and TPostScript::UtoPS, TPostScript::VtoPS.
      Conversion from world coordinates to PostScript coordinates is more accurate.

    - Protection in TCollection::RecursiveRemove. Replace ForEach by Iterator
      and protection againt already deleted objects.

    - Introduce the graphics code GWin32 and new functions in WINNT.
      many new decks and several iterations with Valery (not yet finished).
      Some WINNT linker limitations force the initialization of some global
      variables in TROOT constructor.

    - Deck ActionList and corresponding include moved to RINT.

    - Patch $VERSION changed to T=C++.
      This facilitates the automatic generation of the hyperized version
      of new release notes (requires CMZ version 1.48/33).

    - Patch Tutorials changed to T=C++,IF=TUTORIALS.
      Macro tutorials changed accordingly.

    - Changes in TPostScript::Text. Correct problem in horizontal and vertical
      aligment. This fixes a problem when drawing axis titles.

    - Modify TPad::Print and TCanvas::Print. TPad::Print is now able to make
      a PostScript print of a pad or canvas. The PostScript file created has by
      default the name of the pad (canvas).

    - Modify TMotifCanvas::PrintCB. This member function is now simplified
      and calls TCanvas::Print.

    - Changes in class TMinuit. The destructor does not reset gMinuit anymore.
      New data member fObjectFit and corresponding inline functions
       TMinuit::GetObjectFit and TMinuit::SetObjectFit.
      the fObjectFit pointer points to the currently fitted object.

    - Modify TRint::TRint to initialize gMinuit with the standard Minuit constructor
      instead of the default constructor.
      gMinuit is preset to 0.

    - Modify TH1::Fit to invoke the standard Minuit constructor.
      Modify the test to create standard functions gaus,expo,etc in TH1::Fit.
      Invoke TMinuit::SetObjectFit.
      Modify static function H1FitChisquare to repalce gCurrentHist by
      Th1 *hfit=gMinuit->GetObjectFit.
      This gives the possibility to call the Minuit functions, eg gMinuit.mnscan
      after an histogram fit. (gCurrentHist was overwritten by the pointer
      to the function representing the fit).

    - Many changes in $KUMACS. New macros dict_winnt , dict_win32 to create
      the dictionary for the WINNT and WIN32 classes.
      Changes in macro headers, loadincludes,etc.
      New macro bind_lib, bind_lib_hpux and bind_lib_linux.
      Generalisation of macro ROOT_LIBS and ROOT_MAKE.

    - New sequence $BUTTONS in INCLUDE.

    - Mods in $STOPWATCH for WINNT.

    - Mods in $X3DBUFFER and X3D for WINNT.

    - Minor modifications in many decks to make the HTML look better.
    //
    // 07/12/95  10.44.02  by  Maarten Ballintijn
    //
    - Many thanks to Maarten for porting ROOT on LINUX.
          Maarten reported the following changes:
    * X11_imgpickpalette.c:43

    	NULL should be 0, in C NULL == (void *) and Window (from X11) is unsigned long.

    * X3DBuffer.h

    	Type should be C not C++

    * X3D.h

    	+SEQ i.s.o #include for X3DBuffer (to get dependency right in cmz)

    * UnixSystem.h

    	Replaced TFdSet with linux specific implementation. Probably this
    	should be generalised to POSIX.

    	Defined SIGSYS

    * HTML_Html.cc

    	Added a cast to SortNames() to force const-ness

    //------------------- WARNINGS ----------------------

    //* H_H3.cc

    	H_H3.cc: In method `void TH3F::Sizeof3D() const':
    	H_H3.cc:444: warning: assignment to `int' from `double'
    	H_H3.cc:445: warning: assignment to `int' from `double'

    //* HTML_Html.cc

    	HTML_Html.cc: In method `void THtml::Class2Html(class TClass *)':
    	HTML_Html.cc:358: warning: initialization to `const char **' from `char **' adds cv-quals without intervening `const'
    	HTML_Html.cc: In method `void THtml::ListOfTypes(char *)':
    	HTML_Html.cc:1790: warning: initialization to `const char **' from `char **' adds cv-quals without intervening `const'
    	HTML_Html.cc: In method `void THtml::MakeIndex()':
    	HTML_Html.cc:1916: warning: assignment to `const char **' from `char **' adds cv-quals without intervening `const'
    	HTML_Html.cc:1952: warning: passing `char **' as argument 1 of `THtml::SortNames(const char **, int, unsigned char)' adds cv-quals w

    //* G_AttLineButton.cc

    	G_AttLineButton.cc: In method `void TAttLineButton::DrawSelectPad()':
    	G_AttLineButton.cc:97: warning: name lookup of `i' changed for new ANSI `for' scoping
    	G_AttLineButton.cc:78: warning:   using obsolete binding at `i'

    //* G_Lego.cc

    	G_Lego.cc: In method `TLego::TLego()':
    	G_Lego.cc:64: warning: name lookup of `i' changed for new ANSI `for' scoping
    	G_Lego.cc:63: warning:   using obsolete binding at `i'

    //* RAE_NameList.cc

    	RAE_NameList.cc: In method `class TNameList & TNameList::operator =(const class TNameList &)':
    	RAE_NameList.cc:96: warning: name lookup of `i' changed for new ANSI `for' scoping
    	RAE_NameList.cc:86: warning:   using obsolete binding at `i'
    //____________________________________________________________________________
    //
    //::>          VERSION  0.05/00   05/12/95 18.54.13
    //
    // 05/12/95  18.50.57  by  Rene Brun
    //
    - Create new class TVirtualPad.
      This new class is an abstract base class for all pads and canvases.
      It is introduced to reduce the amount of code loaded with ROOT.
      An application without graphics should not load the graphics library.
      The introduction of this new class required several changes in many
      other classes.

    - Introduce new member functions
       TROOT::SetMakeDefcanvas
       TROOT::GetMakeDefCanvas
       Introduce a new pointer to a static function fMakeDefCanvas.
       This pointer is set to 0 in the TROOT constructor.
       It is set to the static function MakeDefCanvas (in ROOT deck) by
       the TRint constructor.
       This trick is to avoid references to the canvas constructor in
       TObject::AppendPad.

    - Problem fixed in TCanvas destructor.

    - Directory RAE renamed MOTIF

    - New directories UNIX, MAC, WINNT and WIN95.
      UNIX contains all Unix dependent functions.
      MAC  contains all MacInstosh dependent functions.
      WINNT contains all Windows/NT dependent functions.
      WIN95 contains all Windows95 dependent functions.
      WIN32 contains all graphics functions common to Windows/NT and Windows95.

    - Modify all graphics primitives to use the new TObject::AppendPad
      member function. AppenPad checks if the canvas exists. If no canvas, Appendpad
      automatically creates a canvas named c1.
      AppendPad also sets fModified=kTRUE.

    - New macro DICT_UNIX in $KUMACS to generate the Unix dictionary.

    - New macro DICT_WINNT in $KUMACS to generate the Windows/NT dictionary.

    - New macro DICT_WIN95 in $KUMACS to generate the Windows95 dictionary.

    - New macro DICT_WIN32 in $KUMACS to generate the Windows32 dictionary.

    - Remove TUnixSystem from $KUMACS/Dict_base.

    - New macro $KUMACS/Setup to initialize the ROOT development system.
      This new macro should be invoked from the logon.kumac file.
      Below is a copy of this new macro:
         macro setup 1=-
         filecase keep
         exec aliascreate [1]
         exec selectsystem [1]
         exec sourcedir [1]
         exec loadincludes [1]
         exec compiler [1]
         set c C++ -lan
         MESS 'Welcome to the ROOT development System'
         return
      The aliascreate macro  defines several aliases. Do alias/List to see
      all aliases definition.

    - In TCanvas destructor, recompute gCurrentPad. In particular, both
      gCurrentCanvas and gCurrentPad must be set to 0 if the only existing canvas
      is being destroyed.

    - Functions TH1::PaintStats and TH1::PaintTitle. Add pad->PaintModified call
      at the end of these functions to force a painting of the two pads.

    - Fix a problem for histograms with non-equidistant bins in TH1::PaintHist.
      Array keepx must be craeted with nbins+1 and not nbins.

    - Move definition of Cardinal data type from RAEClasses to ROOT.

    - Fix a problem in TGXW.
      due to round-off errors in TPad::Resize() we might get +/- 1 pixel
      change, in those cases don't resize pixmap.
    //
    // 30/11/95  17.30.57  by  Nenad Buncic
    //
    - New member function THtml::ExpandPpLine expands preprocessor lines in the
      source files, and provide clickable include file names.

    - Changes in the class THtml. Data members fNum, fDir, fPath are removed.
      Data member fHtmlOutputDir is renamed to fOutputDir. Added new data
      member fSourceDir.

    - Member function THtml::CheckDir is replaced by TUnixSystem::AccessPathName,
      also function FindFile is replaced by TUnixSystem::Which.

    - THtml::PathSetup no longer exist.

    - Small change in the THtml::WriteHtmlFooter. Char_t *lastUpdate became
      const Char_t *lastUpdate.

[ROOT page] [Class index] [Top of the page]

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.