           *******************************************************
                            Listing of SPARK Text
                             Examiner GPL Edition

           *******************************************************


Line
      with unsigned_types, rr_type, rr_type.a_record_type, rr_type.aaaa_record_type,
         Rr_Type.Cname_Record_Type, Rr_Type.Dnskey_Record_Type, Rr_Type.Mx_Record_Type,
         Rr_Type.Ns_Record_Type, Rr_Type.Nsec_Record_Type, Rr_Type.Ptr_Record_Type,
         Rr_Type.Soa_Record_Type;
      
      USE TYPE Unsigned_Types.Unsigned32;
      
      --need these for equality operator in package body
      use type Rr_Type.a_Record_Type.ARecordType;
      use type rr_type.aaaa_record_type.AAAARecordType;
      USE TYPE Rr_Type.Cname_Record_Type.CNAMERecordType;
      USE TYPE Rr_Type.Dnskey_Record_Type.DNSKEYRecordType;
      USE TYPE Rr_Type.Mx_Record_Type.MXRecordType;
      use type Rr_Type.Ns_Record_Type.NSRecordType;
      USE TYPE Rr_Type.NSEC_Record_Type.NSECRecordType;
      use type Rr_Type.Ptr_Record_Type.PTRRecordType;
      use type rr_type.soa_record_type.SOARecordType;
      
      --in case debugging IO needed
      --WITH Ada.Text_IO, Ada.Integer_Text_Io;
      
      --# inherit System, Ada.Characters.Handling, unsigned_types, dns_types, rr_type, rr_type.a_record_type, rr_type.aaaa_record_type,
      --#    rr_type.cname_record_type, rr_type.dnskey_record_type, rr_type.mx_record_type,
      --#    rr_type.ns_record_type, rr_type.nsec_record_type, rr_type.ptr_record_type, rr_type.soa_record_type;
      
      
      package dns_table_pkg
      --# own protected DNS_Table : DNS_Table_Type (priority => 0);
      is
      
      protected type Dns_Table_Type is
      
         pragma priority(0);
      
         procedure insertARecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.a_record_type.ARecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure insertAAAARecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.aaaa_record_type.AAAARecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure insertCNAMERecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.cname_record_type.CNAMERecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure InsertDNSKEYRecord(Key : in Rr_Type.WireStringType;
                                theRecord : in rr_type.DNSKEY_record_type.DNSKEYRecordType;
                                success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure insertMXRecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.mx_record_type.MXRecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure insertNSRecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.ns_record_type.NSRecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure insertNSECRecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.nsec_record_type.NSECRecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure insertPTRRecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.ptr_record_type.PTRRecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure InsertSOARecord(Key : in Rr_Type.WireStringType;
                                 theRecord : in rr_type.soa_record_type.SOARecordType;
                                 success : out boolean);
         --# global in out DNS_Table_Type;
         --# derives DNS_Table_Type from *, theRecord, Key &
         --#         success from DNS_Table_Type, key;
      
         procedure queryARecords(
         	domainName : in rr_type.WireStringType;
              returnedRecords : out rr_type.a_record_type.ARecordBucketType;
              howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
         procedure queryAAAARecords(
         	domainName : in rr_type.WireStringType;
              returnedRecords : out rr_type.aaaa_record_type.AAAARecordBucketType;
              howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
         procedure queryCNAMERecords(
            domainName : in rr_type.WireStringType;
            returnedRecords : out rr_type.cname_record_type.CNAMERecordBucketType;
            howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
         procedure queryDNSKEYRecords(
            domainName : in rr_type.WireStringType;
            returnedRecords : out rr_type.DNSKEY_record_type.DNSKEYRecordBucketType;
            HowMany : out Rr_Type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives  returnedRecords, howMany from DNS_Table_Type, domainName;
      
         procedure queryMXRecords(
            domainName : in rr_type.WireStringType;
            returnedRecords : out rr_type.mx_record_type.mxRecordBucketType;
            howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
         procedure queryNSRecords(
            domainName : in rr_type.WireStringType;
            returnedRecords : out rr_type.ns_record_type.NSRecordBucketType;
            howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
         procedure queryNSECRecords(
            domainName : in rr_type.WireStringType;
            returnedRecords : out rr_type.nsec_record_type.NSECRecordBucketType;
            howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
         procedure queryPTRRecords(
            domainName : in rr_type.WireStringType;
            returnedRecords : out rr_type.ptr_record_type.PTRRecordBucketType;
            howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
         procedure querySOARecords(
            domainName : in rr_type.WireStringType;
            returnedRecords : out rr_type.soa_record_type.SOARecordBucketType;
            howMany : out rr_type.NumberOfRecordsType);
         --# global in DNS_Table_Type;
         --# derives returnedRecords from DNS_Table_Type, domainName &
         --#         howMany from DNS_Table_Type, domainName;
      
      
         private
            ARecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            ARecordTable : Rr_Type.A_Record_Type.ARecordHashTableType := rr_type.a_record_type.ARecordHashTableType'(
               others => rr_type.a_record_type.ARecordBucketType'(
               others => rr_type.a_record_type.blankARecord));
            AAAARecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            AAAARecordTable : Rr_Type.AAAA_Record_Type.AAAARecordHashTableType := rr_type.aaaa_record_type.AAAARecordHashTableType'(
               others => rr_type.aaaa_record_type.AAAARecordBucketType'(
               others => rr_type.aaaa_record_type.blankAAAARecord));
            CNAMERecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            CNAMERecordTable : Rr_Type.Cname_Record_Type.CNAMERecordHashTableType := rr_type.cname_record_type.CNAMERecordHashTableType'(
               others => rr_type.cname_record_type.CNAMERecordBucketType'(
               others => Rr_Type.Cname_Record_Type.BlankCNAMERecord));
            DNSKEYRecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            DNSKEYRecordTable : Rr_Type.dnskey_Record_Type.DNSKEYRecordHashTableType := rr_type.dnskey_record_type.DNSKEYRecordHashTableType'(
               others => rr_type.dnskey_record_type.DNSKEYRecordBucketType'(
               others => rr_type.dnskey_record_type.blankDNSKEYRecord));
            MXRecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            MXRecordTable : Rr_Type.Mx_Record_Type.MXRecordHashTableType := rr_type.mx_record_type.MXRecordHashTableType'(
               others => rr_type.mx_record_type.MXRecordBucketType'(
               others => rr_type.mx_record_type.blankMXRecord));
            NSRecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            NSRecordTable : rr_type.ns_record_type.NSRecordHashTableType := rr_type.ns_record_type.NSRecordHashTableType'(
               others => rr_type.ns_record_type.NSRecordBucketType'(
               others => Rr_Type.Ns_Record_Type.BlankNSRecord));
            NSECRecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
               others => RR_Type.BlankOwner));
            NSECRecordTable : rr_type.nsec_record_type.NSECRecordHashTableType := rr_type.nsec_record_type.NSECRecordHashTableType'(
               others => rr_type.nsec_record_type.NSECRecordBucketType'(
               others => Rr_Type.Nsec_Record_Type.BlankNSECRecord));
            PTRRecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            PTRRecordTable : rr_type.ptr_record_type.PTRRecordHashTableType := rr_type.ptr_record_type.PTRRecordHashTableType'(
               others => rr_type.ptr_record_type.PTRRecordBucketType'(
               others => Rr_Type.Ptr_Record_Type.BlankPTRRecord));
            SOARecordKeys : RR_Type.OwnerHashTableType := RR_Type.OwnerHashTableType'(
               others => RR_Type.OwnerRecordBucketType'(
                  others => RR_Type.BlankOwner));
            SOARecordTable : rr_type.SOA_record_type.SOARecordHashTableType := rr_type.SOA_record_type.SOARecordHashTableType'(
               others => rr_type.SOA_record_type.SOARecordBucketType'(
               others => rr_type.SOA_record_type.blankSOARecord));
         end Dns_Table_Type;
      
      --THIS IS THE NAME SERVER HASH TABLE
      DNS_Table: Dns_Table_Type;
      
      end dns_table_pkg;


--End of file--------------------------------------------------
