1. -- 
  2. --  Uwe R. Zimmer, Australia, September 2011 
  3. -- 
  4.  
  5. package Topologies is 
  6.  
  7.    type Topology_Kind is interface; 
  8.  
  9.    function Nodes_in_Topology (Configuration : Topology_Kind) return Positive is abstract; 
  10.    function Nodes_Connected   (Configuration : Topology_Kind; 
  11.                                Node_A, Node_B : Positive)     return Boolean  is abstract; 
  12.  
  13.    function Min_Degree        (Configuration : Topology_Kind'Class) return Natural; 
  14.    function Max_Degree        (Configuration : Topology_Kind'Class) return Natural; 
  15.  
  16.    function Line                  (Size            : Positive) return Topology_Kind'Class; 
  17.    function Ring                  (Size            : Positive) return Topology_Kind'Class; 
  18.    function Star                  (Size            : Positive) return Topology_Kind'Class; 
  19.    function Fully_Connected       (Size            : Positive) return Topology_Kind'Class; 
  20.    function Trees                 (Degree, Depths  : Positive) return Topology_Kind'Class; 
  21.    function Mesh                  (Dimension, Size : Positive) return Topology_Kind'Class; 
  22.    function Torus                 (Dimension, Size : Positive) return Topology_Kind'Class; 
  23.    function Hypercube             (Dimension       : Positive) return Topology_Kind'Class; 
  24.    function Cube_Connected_Cycles (Dimension       : Positive) return Topology_Kind'Class; 
  25.    function Butterfly             (Dimension       : Positive) return Topology_Kind'Class; 
  26.    function Wrap_Around_Butterfly (Dimension       : Positive) return Topology_Kind'Class; 
  27.  
  28. end Topologies;