File: dbf\dbase_io.ads

    1 --::::::::::
    2 --dbase_io.ads
    3 --::::::::::
    4 -- Developed by (C) Wasiliy W. Molostoff 1994, 1995.
    5 --                  Moscow, Russia,
    6 --                  Voice:   7 (095) 398-23-38
    7 --                  e-mail:  edv@edv.msk.ru
    8 -- This is free software; you can  freely  redistribute  it  and/or
    9 -- modify  it  without any restrictions.  Please report any errors.
   10 -- All corrections will be made as soon as possible.
   11 with db_file_io, unsigned, calendar;
   12 use  unsigned, calendar;
   13 
   14 package dbase_io is
   15 
   16   type col_attribute is (db_character, db_numeric, db_date,
   17                          db_boolean, db_memo, db_unknown);
   18 
   19   subtype row_attribute is boolean;
   20 
   21   col_data_error: exception;
   22   row_data_error: exception;
   23   tab_data_error: exception;
   24 
   25   type col_stat is
   26   record
   27        attrib : col_attribute := db_unknown ; --
   28        length : natural       := 0          ; --
   29        align  : natural       := 0          ; --
   30   end record;
   31 
   32   type file_mode      is new db_file_io.file_mode;
   33   type count          is new db_file_io.count;
   34   subtype positive_count  is count range 1..count'last;
   35 ---  type positive_count is new db_file_io.positive_count;
   36 
   37   generic
   38        type identify is (<>);
   39   package table_io is
   40 
   41     type table is array (identify) of col_stat;
   42 
   43     type file_type is limited private;
   44 
   45     procedure create (file: in out file_type;
   46                       cols: in     table;
   47                       name: in     string := "";
   48                       form: in     string := "");
   49 
   50     procedure open   (file: in out file_type;
   51                       mode: in     file_mode;
   52                       name: in     string;
   53                       form: in     string := "");
   54 
   55     procedure reset       (file: in out file_type);
   56     procedure reset       (file: in out file_type; mode: in file_mode);
   57     procedure close       (file: in out file_type);
   58     function  mode        (file: in     file_type) return file_mode;
   59     function  name        (file: in     file_type) return string;
   60     function  form        (file: in     file_type) return string;
   61     function  is_open     (file: in     file_type) return boolean;
   62 
   63     function  tab_updated (file: in     file_type) return time;
   64     function  tab_length  (file: in     file_type) return count;
   65     procedure get_table   (file: in     file_type; tab: in out table);
   66 
   67     procedure row_attrib  (file:     in out file_type;
   68                            new_attr: in row_attribute);
   69     function  row_attrib  (file: in     file_type) return row_attribute;
   70     procedure row_index   (file: in out file_type;
   71                              to: in     positive_count);
   72     function  row_index   (file: in     file_type) return positive_count;
   73 
   74     procedure col_align  (file:      in out file_type;
   75                           name:      in identify;
   76                           new_align: in natural);
   77 
   78     procedure col_attrib (file:      in out file_type;
   79                           name:      in identify;
   80                           new_attr:  in col_attribute);
   81 
   82     function  col_align  (file: in file_type;
   83                           from: in identify) return natural;
   84     function  col_attrib (file: in file_type;
   85                           from: in identify) return col_attribute;
   86     function  col_length (file: in file_type;
   87                           from: in identify) return natural;
   88     function  col_index  (file: in file_type;
   89                           from: in identify) return natural;
   90     function  col_exist  (file: in file_type;
   91                           name: in identify) return boolean;
   92     function  col_count  (file: in file_type) return positive;
   93 
   94 
   95     procedure get (file: in out file_type;
   96                    name: in     identify;
   97                    item: out byte_string);
   98 
   99     procedure put (file: in out file_type;
  100                    name: in     identify;
  101                    item: in  byte_string);
  102 
  103     procedure get (file: in out file_type;
  104                    name: in     identify;
  105                    item: out string);
  106 
  107     procedure put (file: in out file_type;
  108                    name: in     identify;
  109                    item: in  string);
  110 
  111     procedure get (file: in out file_type;
  112                    name: in     identify;
  113                    item: out boolean);
  114 
  115     procedure put (file: in out file_type;
  116                    name: in     identify;
  117                    item: in  boolean);
  118 
  119     procedure get (file: in out file_type;
  120                    name: in     identify;
  121                    item: out time);
  122 
  123     procedure put (file: in out file_type;
  124                    name: in     identify;
  125                    item: in  time);
  126     generic
  127          type num is range <>;
  128     package integer_io is
  129          procedure get (file: in out file_type;
  130                         name: in     identify;
  131                         item:    out num);
  132 
  133          procedure put (file: in out file_type;
  134                         name: in     identify;
  135                         item: in     num);
  136     end integer_io;
  137 
  138     generic
  139          type num is delta <>;
  140     package fixed_io is
  141          procedure get (file: in out file_type;
  142                         name: in     identify; item:    out num);
  143 
  144          procedure put (file: in out file_type;
  145                         name: in     identify;
  146                         item: in     num);
  147     end fixed_io;
  148 
  149     generic
  150          type enum is (<>);
  151     package enumeration_io is
  152          procedure get (file: in out file_type;
  153                         name: in     identify;
  154                         item:    out enum);
  155 
  156          procedure put (file: in out file_type;
  157                         name: in     identify;
  158                         item: in     enum);
  159     end enumeration_io;
  160 
  161   private
  162       type col_location is array (identify) of natural;
  163       type file_type is
  164       record
  165          file:  db_file_io.file_type;
  166          count: positive;
  167          where: col_location;
  168       end record;
  169   end table_io;
  170 
  171 end dbase_io;
  172