#NEWLINE# def unpack_hash_args( args , name ) : #NEWLINE# #INDENT# ( args , prop_keys , prop_vals ) = unpack_properties ( args , name ) #NEWLINE# clear_proc = values . w_false #NEWLINE# if ( len ( args ) == 5 ) : #NEWLINE# #INDENT# ( hash , ref_proc , set_proc , remove_proc , key_proc ) = args #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( len ( args ) == 6 ) : #NEWLINE# #INDENT# ( hash , ref_proc , set_proc , remove_proc , key_proc , clear_proc ) = args #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# raise SchemeException ( ( name + ': wrong number of arguments' ) ) #NEWLINE# #UNINDENT# #UNINDENT# if ( not isinstance ( hash , W_HashTable ) ) : #NEWLINE# #INDENT# raise SchemeException ( ( name + ': first argument is not a hash' ) ) #NEWLINE# #UNINDENT# if ( not ref_proc . iscallable ( ) ) : #NEWLINE# #INDENT# raise SchemeException ( ( name + ': ref-proc is not callable' ) ) #NEWLINE# #UNINDENT# if ( not set_proc . iscallable ( ) ) : #NEWLINE# #INDENT# raise SchemeException ( ( name + ': set-proc is not callable' ) ) #NEWLINE# #UNINDENT# if ( not remove_proc . iscallable ( ) ) : #NEWLINE# #INDENT# raise SchemeException ( ( name + ': remove-proc is not callable' ) ) #NEWLINE# #UNINDENT# if ( not key_proc . iscallable ( ) ) : #NEWLINE# #INDENT# raise SchemeException ( ( name + ': key-proc is not callable' ) ) #NEWLINE# #UNINDENT# if ( ( clear_proc is not values . w_false ) and ( not clear_proc . iscallable ( ) ) ) : #NEWLINE# #INDENT# raise SchemeException ( ( name + ': clear-proc is not callable' ) ) #NEWLINE# #UNINDENT# return ( hash , ref_proc , set_proc , remove_proc , key_proc , clear_proc , prop_keys , prop_vals )