Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
Format of FreeSegments record

Format of FreeSegments record, release 6.22.06. It is never compressed. It is probably not accessed by its key, but from its offset given in the file header.

If any individual free segments refer to bytes beyond 2000000000, their fFirst/fLast have 8 bytes, not 4 and 1000 is added to the TFree Version.

Some free segment records may be 32 bit while others are 64 bit.

 ----------TKey---------------
  byte 0->3           Nbytes    = Number of bytes in compressed record (TKey+data)       TKey::fNbytes
       4->5           Version   = TKey class version identifier                          TKey::fVersion
       6->9           ObjLen    = Number of bytes of uncompressed data                   TKey::fObjLen
      10->13          Datime    = Date and time when record was written to file          TKey::fDatime
                                | (year-1995)<<26|month<<22|day<<17|hour<<12|minute<<6|second
      14->15          KeyLen    = Number of bytes in key structure  (TKey)               TKey::fKeyLen
      16->17          Cycle     = Cycle of key                                           TKey::fCycle
      18->21 [18->25] SeekKey   = Byte offset of record itself (consistency check)       TKey::fSeekKey
      22->25 [26->33] SeekPdir  = Byte offset of parent directory record (TFile)         TKey::fSeekPdir
      26->26 [34->34] lname     = Number of bytes in the class name (5)                  TKey::fClassName
      27->.. [35->..] ClassName = Object Class Name ("TFile")                            TKey::fClassName
       0->0           lname     = Number of bytes in the object name                     TNamed::fName
       1->..          Name      = lName bytes with the name of the object <file name>    TNamed::fName
       0->0           lTitle    = Number of bytes in the object title                    TNamed::fTitle
       1->..          Title     = lTitle bytes with the title of the object <file title> TNamed::fTitle
 ----------DATA---------------
       0->1           Version   = TFree class version identifier                         TFree::Class_Version()
       2->5  [ 2-> 9] fFirst    = First free byte of first free segment                  TFree::fFirst
       6->9  [10->17] fLast     = Last free byte of first free segment (inclusive)       TFree::fLast
                                  (e.g. a free segment that is 1 byte long would have fFirst == fLast)
       ....           Sequentially, Version, fFirst and fLast of additional free segments.
       ....           There is always one free segment beginning at file end and ending before 2000000000.
       ....           If the file size is larger than 2000000000, the last segment ends with 4000000000.