(omt_version 5 0)
#  %W% %G%  

(omt_module
 (key 1)
 (anno target_file IO_2.cc)
 (name IO_2)
 (language C++)
 (fcode_max 1002)
 (omt_model
  (omt_class
   (key 22)
   (anno description "This class is the base class for writing streams of bytes to a device.

The derived class should be each for a particular device.
This class also contains virtual functions for checking if the device is readable, writable or seekable.
The derived classes could be regularFileIO, StringIO or TapeIO.
RegularFileIO is implemented now, other derived classes can be added easy later.")
   (name ByteIO)
   (method
    (key 141)
    (anno virtual_method YES)
    (anno description "These functions read or write streams of bytes to a particular device")
    (name write)
    (type void)
    (arglist
     (arg
      (key 163)
      (name size))
     (arg
      (key 164)
      (name buf*))))
   (method
    (key 144)
    (anno virtual_method YES)
    (anno description "")
    (name read)
    (type void)
    (arglist
     (arg
      (key 165)
      (name size))
     (arg
      (key 166)
      (name buf*))))
   (method
    (key 147)
    (anno description "This function sets the position on the given offset.
The seek option defines from which file position the seek is done.")
    (name seek)
    (type Long)
    (arglist
     (arg
      (key 148)
      (name offset))
     (arg
      (key 149)
      (name SeekOption))))
   (method
    (key 150)
    (anno virtual_method YES)
    (anno const YES)
    (anno description "This function checks if one can read a device")
    (name isReadable)
    (type Bool))
   (method
    (key 151)
    (anno virtual_method YES)
    (anno const YES)
    (anno description "This function checks if one can write a device")
    (name isWritable)
    (type Bool))
   (method
    (key 152)
    (anno virtual_method YES)
    (anno const YES)
    (anno description "This function checks if one can seek in a device")
    (name isSeekable)
    (type "Bool ")))
  (omt_class
   (key 51)
   (anno description "This class is made to do IO on a RegularFile.

It contains functions for reading and writing to a file and also seeking in a file is possible. 
The class also contains functions for checking if a file can be read, checking if a file can be read,  written or if one can seek in a file.")
   (name RegularFileIO)
   (method
    (key 207)
    (anno description "")
    (arglist
     (arg
      (key 260)
      (name RegularFile))
     (arg
      (key 261)
      (name OpenOption))
     (arg
      (key 262)
      (name filebufSize))))
   (field
    (key 64)
    (anno cxx_field_access private)
    (anno description "")
    (name itsOption)
    (type OpenOption))
   (field
    (key 65)
    (anno cxx_field_access private)
    (anno description "")
    (name itsRegularFile)
    (type String)))
  (omt_class
   (key 96)
   (anno description "This class is made to do IO on a filebuf.
It contains functions for reading and writing to a file and also seeking in a file is possible.
")
   (name FilebufIO)
   (method
    (key 218)
    (anno description "Construct from a given filebuf.")
    (arglist
     (arg
      (key 234)
      (name filebuf*))))
   (method
    (key 220)
    (anno description "Construct from a given file descriptor.")
    (arglist
     (arg
      (key 251)
      (name fd))
     (arg
      (key 252)
      (name filebufSize))))
   (field
    (key 109)
    (anno cxx_field_access private)
    (anno description "")
    (name itsOwner)
    (type Bool))
   (field
    (key 110)
    (anno cxx_field_access private)
    (anno description "")
    (name itsSeekable)
    (type Bool))
   (field
    (key 111)
    (anno cxx_field_access private)
    (anno description "")
    (name itsFile)
    (type filebuf*))
   (field
    (key 112)
    (anno cxx_field_access private)
    (anno description "")
    (name itsBuffer)
    (type char*)))
  (omt_class
   (key 330)
   (anno description "IO in memory")
   (name MemoryIO)
   (method
    (key 331)
    (anno description "")
    (arglist
     (arg
      (key 332)
      (name initialSize))
     (arg
      (key 333)
      (name expandSize))))
   (method
    (key 334)
    (anno description "")
    (arglist
     (arg
      (key 335)
      (name buffer*))
     (arg
      (key 336)
      (name size))))
   (method
    (key 337)
    (anno description "")
    (arglist
     (arg
      (key 338)
      (name buffer*))
     (arg
      (key 339)
      (name size))
     (arg
      (key 340)
      (name ByteIO)
      (type OpenOption))
     (arg
      (key 341)
      (name expandSize.canDelete))))
   (method
    (key 342)
    (anno const YES)
    (anno description "")
    (name getBuffer)
    (type uChar*))
   (method
    (key 343)
    (anno const YES)
    (anno description "")
    (name length)
    (type Long))
   (method
    (key 344)
    (anno const YES)
    (anno description "")
    (name allocated)
    (type uLong))
   (method
    (key 345)
    (anno const YES)
    (anno description "")
    (name expandSize)
    (type uLong))
   (field
    (key 346)
    (anno cxx_field_access private)
    (anno description "")
    (name itsBuffer)
    (type uChar*))
   (field
    (key 347)
    (anno cxx_field_access private)
    (anno description "")
    (name itsLength)
    (type uLong))
   (field
    (key 348)
    (anno cxx_field_access private)
    (anno description "")
    (name itsExpandSize)
    (type uLong))
   (field
    (key 349)
    (anno cxx_field_access private)
    (anno description "")
    (name itsUsed)
    (type uLong))
   (field
    (key 350)
    (anno cxx_field_access private)
    (anno description "")
    (name itsPosition)
    (type uLong))
   (field
    (key 351)
    (anno cxx_field_access private)
    (anno description "")
    (name itsOwner)
    (type Bool))
   (field
    (key 352)
    (anno cxx_field_access private)
    (anno description "")
    (name itsReadable)
    (type Bool))
   (field
    (key 353)
    (anno cxx_field_access private)
    (anno description "")
    (name itsWritable)
    (type Bool))
   (field
    (key 354)
    (anno cxx_field_access private)
    (anno description "")
    (name itsCanDelete)
    (type Bool)))
  (generalization_relation
   (key 355)
   (superclass 96)
   (subclasses 51))
  (generalization_relation
   (key 356)
   (superclass 22)
   (subclasses 96 330)))
 (omt_image
  (sheet
   (key 2)
   (anno description "")
   (name OM)
   (model_type Object)
   (width 600)
   (height 430)
   (background_color white)
   (foreground_color black)
   (sheet_comment
    (key 25)
    (text "")
    (loc 335 383))
   (ClassBox
    (key 122)
    (represents 51)
    (frame
     (loc 361 341)
     (dimensions 223 83)))
   (ClassBox
    (key 360)
    (represents 330)
    (frame
     (loc 6 168)
     (dimensions 330 252)))
   (ClassBox
    (key 124)
    (represents 96)
    (frame
     (loc 417 167)
     (dimensions 111 122)))
   (ClassBox
    (key 29)
    (represents 22)
    (frame
     (loc 274 5)
     (dimensions 181 122)))
   (GeneralizationImage
    (key 362)
    (represents 356)
    (supernode 29
     (364 128)
     (364 157))
    (node 124
     (472 159)
     (472 166)))
   (GeneralizationImage
    (key 363)
    (represents 355)
    (supernode 124
     (472 290)
     (472 330))
    (node 122
     (472 332)
     (472 340)))
   (GeneralizationImage
    (key 364)
    (represents 356)
    (supernode 29
     (364 128)
     (364 157))
    (node 360
     (171 159)
     (171 167)))))
 (savekey_max 365))
