indexing
     status: "Objects that handle parameters in dynamic requests"
     date: "$Date$"
     revision: "$Revision$"
     product: eiffelstore
     database: all_bases
     "(At least ODBC)"

class interface
     PARAMETER_HDL

feature -- Status report

     is_executed: BOOLEAN
                 -- Is the statement has been executed ?

     is_mapped (key: STRING): BOOLEAN
                 -- Is key mapped to an Eiffel entity ?
           require -- from STRING_HDL
                 keys_exists: key /= void

     is_prepared: BOOLEAN
                 -- Is the statement has been prepared ?

     mapped_value (key: STRING): ANY
                 -- Value mapped with key
           require -- from STRING_HDL
                 key_exists: key /= void
                 key_mapped: is_mapped (key)
           ensure -- from STRING_HDL
                 result_exists: Result /= void

     parameter_count: INTEGER
                 -- number of parameters, set by 'prepare'
           ensure
                 Result > 0 implies is_prepared

     parameter_name_exist (key: STRING): BOOLEAN
           require
                 not_void: key /= void
     
feature

     clear_all

     set_map_name (n: ANY; key: STRING)
                 -- Store item n whith key key.
           require -- from STRING_HDL
                 key_exists: key /= void
                 not_key_in_table: not is_mapped (key)
           ensure -- from STRING_HDL
                 ht.count = old ht.count + 1

     unset_map_name (key: STRING)
                 -- Remove item associated with key key.
           require -- from STRING_HDL
                 key_exists: key /= void
                 item_exists: is_mapped (key)
           ensure -- from STRING_HDL
                 ht.count = old ht.count - 1
     
feature -- setting

     set_executed (b: BOOLEAN)

     set_parameter (value: ANY; key: STRING)
           require
                 key_not_void: key /= void
                 has_parameters: parameter_count > 0

     set_parameters_value (p: ARRAY [ANY])
           require
                 has_parameters: parameter_count > 0

     set_prepared (b: BOOLEAN)

     setup_parameters
                 -- setup parameters_value with actual parameters value
     
invariant

           -- from ANY
     reflexive_equality: standard_is_equal (Current)
     reflexive_conformance: conforms_to (Current)

end -- class PARAMETER_HDL