123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- $PBExportHeader$n_associated_ulong_srv.sru
- forward
- global type n_associated_ulong_srv from nonvisualobject
- end type
- end forward
- global type n_associated_ulong_srv from nonvisualobject
- end type
- global n_associated_ulong_srv n_associated_ulong_srv
- type variables
- private ulong il_keys[]
- private ulong il_key_count
- end variables
- forward prototypes
- public function unsignedlong of_add_key (unsignedlong al_val)
- public function unsignedlong of_find_key (unsignedlong al_val)
- public function unsignedlong of_get_key_index (unsignedlong al_val)
- public function integer of_sort_keys ()
- public function unsignedlong of_get_keys_count ()
- public function unsignedlong of_get_key (unsignedlong al_index)
- protected function unsignedlong of_get_index_min_key (unsignedlong al_from_key)
- end prototypes
- public function unsignedlong of_add_key (unsignedlong al_val);ulong ll_index
- if isnull(al_val) then
- return 0
- end if
- il_key_count ++
- il_keys[il_key_count] = al_val
- return il_key_count
- end function
- public function unsignedlong of_find_key (unsignedlong al_val);return of_get_key_index(al_val)
- end function
- public function unsignedlong of_get_key_index (unsignedlong al_val);ulong ll_i
- for ll_i = 1 to il_key_count
- if il_keys[ll_i] = al_val then
- return ll_i
- end if
- next
- return 0
- end function
- public function integer of_sort_keys ();integer li_ret = 1
- ulong ll_i
- ulong ll_cnt
- ulong ll_new_keys[]
- ulong ll_start_key
- ll_cnt = il_key_count
- do while true
- ll_i = of_get_index_min_key(ll_start_key)
- if ll_i > 0 then
- ll_cnt ++
- ll_new_keys[ll_cnt] = il_keys[ll_i]
- ll_start_key = il_keys[ll_i] + 1
- else
- exit
- end if
- loop
- il_keys = ll_new_keys
- il_key_count = upperbound(il_keys)
- return li_ret
- end function
- public function unsignedlong of_get_keys_count ();return il_key_count
- end function
- public function unsignedlong of_get_key (unsignedlong al_index);return il_keys[al_index]
- end function
- protected function unsignedlong of_get_index_min_key (unsignedlong al_from_key);ulong ll_ret
- ulong ll_i
- ulong ll_min_key = 4294967295
- for ll_i = 1 to il_key_count
- if il_keys[ll_i] >= al_from_key and il_keys[ll_i] <= ll_min_key then
- ll_ret = ll_i
- ll_min_key = il_keys[ll_i]
- end if
- next
- return ll_ret
- end function
- on n_associated_ulong_srv.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on n_associated_ulong_srv.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
|