File: dbf\boolean_set.adb

    1 --::::::::::
    2 --booleset.adb
    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 package body boolean_set is
   12 
   13    function value (right: in element) return boolset is
   14       tmp: boolset := (others => false);
   15    begin
   16       tmp (right) := true;
   17       return tmp;
   18    end;
   19 
   20    function array_import (right: in object) return boolset is
   21       tmp: boolset := (others => false);
   22    begin
   23       for n in right'range
   24       loop
   25          tmp (right(n)) := true;
   26       end loop;
   27       return tmp;
   28    end;
   29 
   30    --not-------------------------------------------------------------------
   31 
   32    function "not" (right: in element) return boolset is
   33    begin
   34       return not value (right);
   35    end;
   36 
   37    --set:elm---------------------------------------------------------------
   38 
   39    function "and" (left: in boolset; right: in element) return boolset is
   40    begin
   41       return left and value(right);
   42    end;
   43 
   44    function "or"  (left: in boolset; right: in element) return boolset is
   45    begin
   46       return left or value(right);
   47    end;
   48 
   49    function "xor" (left: in boolset; right: in element) return boolset is
   50    begin
   51       return left xor value(right);
   52    end;
   53 
   54    --elm:set--------------------------------------------------------------
   55 
   56    function "and" (left: in element; right: in boolset) return boolset is
   57    begin
   58       return value (left) and right;
   59    end;
   60 
   61    function "or"  (left: in element; right: in boolset) return boolset is
   62    begin
   63       return value (left) or right;
   64    end;
   65 
   66    function "xor" (left: in element; right: in boolset) return boolset is
   67    begin
   68       return value (left) xor right;
   69    end;
   70 
   71    --elm:elm--------------------------------------------------------------
   72 
   73    function "and" (left: in element; right: in element) return boolset is
   74    begin
   75       return value (left) and right;
   76    end;
   77 
   78    function "or"  (left: in element; right: in element) return boolset is
   79    begin
   80       return value (left) or right;
   81    end;
   82 
   83    function "xor" (left: in element; right: in element) return boolset is
   84    begin
   85       return value (left) xor right;
   86    end;
   87 
   88    package body import_set is
   89 
   90       --set:seq------------------------------------------------------------
   91 
   92       function "not" (right: in object) return boolset is
   93       begin
   94          return not value (right);
   95       end;
   96 
   97       function "and" (left: in boolset; right: in object) return boolset is
   98       begin
   99          return left and value(right);
  100       end;
  101 
  102       function "or"  (left: in boolset; right: in object) return boolset is
  103       begin
  104          return left or value(right);
  105       end;
  106 
  107       function "xor" (left: in boolset; right: in object) return boolset is
  108          tmp: boolset := (others => false);
  109       begin
  110          return left xor value(right);
  111       end;
  112 
  113       --seq:set------------------------------------------------------------
  114 
  115       function "and" (left: in object; right: in boolset) return boolset is
  116       begin
  117          return value (left) xor right;
  118       end;
  119 
  120       function "or"  (left: in object; right: in boolset) return boolset is
  121       begin
  122          return value (left) xor right;
  123       end;
  124 
  125       function "xor" (left: in object; right: in boolset) return boolset is
  126       begin
  127          return value (left) xor right;
  128       end;
  129 
  130       --seq:elm------------------------------------------------------------
  131 
  132       function "and" (left: in object; right: in element) return boolset is
  133       begin
  134          return value (left) and value(right);
  135       end;
  136 
  137       function "or"  (left: in object; right: in element) return boolset is
  138       begin
  139          return value (left) or value(right);
  140       end;
  141 
  142       function "xor" (left: in object; right: in element) return boolset is
  143       begin
  144          return value (left) xor value(right);
  145       end;
  146 
  147       --elm:seq------------------------------------------------------------
  148 
  149       function "and" (left: in element; right: in object) return boolset is
  150          tmp: boolset := (others => false);
  151       begin
  152          return value (left) and value(right);
  153       end;
  154 
  155       function "or"  (left: in element; right: in object) return boolset is
  156       begin
  157          return value (left) or value(right);
  158       end;
  159 
  160       function "xor" (left: in element; right: in object) return boolset is
  161       begin
  162          return value (left) xor value(right);
  163       end;
  164 
  165       --seq:seq------------------------------------------------------------
  166 
  167       function "and" (left: in object; right: in object) return boolset is
  168          tmp: boolset := (others => false);
  169       begin
  170          return value (left) and right;
  171       end;
  172 
  173       function "or"  (left: in object; right: in object) return boolset is
  174       begin
  175          return value (left) or right;
  176       end;
  177 
  178       function "xor" (left: in object; right: in object) return boolset is
  179       begin
  180          return value (left) xor right;
  181       end;
  182    end;
  183 end;
  184