Changeset 4391

Show
Ignore:
Timestamp:
09/29/06 15:40:44 (2 years ago)
Author:
morris
Message:

Start using more arrays in lieu of lists

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • libwired/trunk/libwired/collections/wi-array.c

    r4389 r4391  
    901901#pragma mark - 
    902902 
     903void wi_array_remove_data(wi_array_t *array, void *data) { 
     904        uint32_t                index; 
     905         
     906        index = wi_array_index_of_data(array, data); 
     907         
     908        if(index != WI_NOT_FOUND) 
     909                wi_array_remove_data_at_index(array, index); 
     910} 
     911 
     912 
     913 
    903914void wi_array_remove_data_at_index(wi_array_t *array, uint32_t index) { 
    904915        _WI_ARRAY_INDEX_ASSERT(array, index); 
  • libwired/trunk/libwired/collections/wi-array.h

    r4116 r4391  
    8888WI_EXPORT void                                                  wi_array_set_array(wi_array_t *, wi_array_t *); 
    8989 
     90WI_EXPORT void                                                  wi_array_remove_data(wi_array_t *, void *); 
    9091WI_EXPORT void                                                  wi_array_remove_data_at_index(wi_array_t *, uint32_t); 
    9192WI_EXPORT void                                                  wi_array_remove_data_in_range(wi_array_t *, wi_range_t); 
  • libwired/trunk/libwired/data/wi-settings.c

    r3828 r4391  
    4343#include <wired/wi-date.h> 
    4444#include <wired/wi-file.h> 
    45 #include <wired/wi-list.h> 
    4645#include <wired/wi-log.h> 
    4746#include <wired/wi-settings.h> 
     
    7372static wi_boolean_t                                     _wi_settings_set_number(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 
    7473static wi_boolean_t                                     _wi_settings_set_string(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 
    75 static wi_boolean_t                                     _wi_settings_set_string_list(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 
     74static wi_boolean_t                                     _wi_settings_set_string_array(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 
    7675static wi_boolean_t                                     _wi_settings_set_path(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 
    7776static wi_boolean_t                                     _wi_settings_set_user(wi_settings_t *, uint32_t, wi_string_t *, wi_string_t *); 
     
    8584static void                                                     _wi_settings_clear_number(wi_settings_t *, uint32_t); 
    8685static void                                                     _wi_settings_clear_string(wi_settings_t *, uint32_t); 
    87 static void                                                     _wi_settings_clear_string_list(wi_settings_t *, uint32_t); 
     86static void                                                     _wi_settings_clear_string_array(wi_settings_t *, uint32_t); 
    8887static void                                                     _wi_settings_clear_user(wi_settings_t *, uint32_t); 
    8988static void                                                     _wi_settings_clear_group(wi_settings_t *, uint32_t); 
     
    237236                        break; 
    238237 
    239                 case WI_SETTINGS_STRING_LIST
    240                         result = _wi_settings_set_string_list(settings, index, name, value); 
     238                case WI_SETTINGS_STRING_ARRAY
     239                        result = _wi_settings_set_string_array(settings, index, name, value); 
    241240                        break; 
    242241 
     
    333332 
    334333 
    335 wi_boolean_t _wi_settings_set_string_list(wi_settings_t *settings, uint32_t index, wi_string_t *name, wi_string_t *value) { 
    336         wi_list_t              **list = (wi_list_t **) settings->spec[index].setting; 
    337  
    338         wi_list_append_data(*list, value); 
     334wi_boolean_t _wi_settings_set_string_array(wi_settings_t *settings, uint32_t index, wi_string_t *name, wi_string_t *value) { 
     335        wi_array_t             **array = (wi_array_t **) settings->spec[index].setting; 
     336 
     337        wi_array_add_data(*array, value); 
    339338 
    340339        return true; 
     
    475474                                break; 
    476475                                 
    477                         case WI_SETTINGS_STRING_LIST
    478                                 _wi_settings_clear_string_list(settings, i); 
     476                        case WI_SETTINGS_STRING_ARRAY
     477                                _wi_settings_clear_string_array(settings, i); 
    479478                                break; 
    480479                                 
     
    521520 
    522521 
    523 static void _wi_settings_clear_string_list(wi_settings_t *settings, uint32_t index) { 
    524         wi_list_t      **list = (wi_list_t **) settings->spec[index].setting; 
    525                  
    526         wi_release(*list); 
    527         *list = wi_list_init(wi_list_alloc()); 
     522static void _wi_settings_clear_string_array(wi_settings_t *settings, uint32_t index) { 
     523        wi_array_t     **array = (wi_array_t **) settings->spec[index].setting; 
     524                 
     525        wi_release(*array); 
     526        *array = wi_array_init(wi_array_alloc()); 
    528527} 
    529528 
  • libwired/trunk/libwired/data/wi-settings.h

    r3828 r4391  
    3737        WI_SETTINGS_BOOL, 
    3838        WI_SETTINGS_STRING, 
    39         WI_SETTINGS_STRING_LIST
     39        WI_SETTINGS_STRING_ARRAY
    4040        WI_SETTINGS_PATH, 
    4141        WI_SETTINGS_USER, 
  • libwired/trunk/libwired/net/wi-host.c

    r4389 r4391  
    4747 
    4848#include <wired/wi-address.h> 
     49#include <wired/wi-array.h> 
    4950#include <wired/wi-host.h> 
    50 #include <wired/wi-list.h> 
    5151#include <wired/wi-pool.h> 
    5252#include <wired/wi-string.h> 
     
    6666static wi_string_t *                                    _wi_host_description(wi_runtime_instance_t *); 
    6767 
    68 static wi_list_t *                                            _wi_host_all_interface_addresses(void); 
    69 static wi_list_t *                                            _wi_host_addresses_for_string(wi_string_t *string); 
     68static wi_array_t *                                           _wi_host_all_interface_addresses(void); 
     69static wi_array_t *                                           _wi_host_addresses_for_string(wi_string_t *string); 
    7070 
    7171 
     
    159159        wi_host_t                       *host2 = instance2; 
    160160        wi_enumerator_t         *enumerator; 
    161         wi_list_t                     *addresses1; 
    162         wi_list_t                     *addresses2; 
     161        wi_array_t                    *addresses1; 
     162        wi_array_t                    *addresses2; 
    163163        wi_address_t            *address; 
    164164        wi_boolean_t            equal = true; 
     
    170170                return false; 
    171171         
    172         if(wi_list_count(addresses1) != wi_list_count(addresses2)) 
     172        if(wi_array_count(addresses1) != wi_array_count(addresses2)) 
    173173                return false; 
    174174         
    175         enumerator = wi_list_data_enumerator(addresses1); 
     175        enumerator = wi_array_data_enumerator(addresses1); 
    176176         
    177177        while((address = wi_enumerator_next_data(enumerator))) { 
    178                 if(!wi_list_contains_data(addresses2, address)) { 
     178                if(!wi_array_contains_data(addresses2, address)) { 
    179179                        equal = false; 
    180180                         
     
    201201#pragma mark - 
    202202 
    203 static wi_list_t * _wi_host_all_interface_addresses(void) { 
     203static wi_array_t * _wi_host_all_interface_addresses(void) { 
    204204#if defined(HAVE_GETIFADDRS) && !defined(HAVE_GLIBC) 
    205         wi_list_t                      *list
     205        wi_array_t                     *array
    206206        wi_address_t            *address; 
    207207        struct ifaddrs          *ifap, *ifp; 
     
    213213        } 
    214214 
    215         list = wi_list_init(wi_list_alloc()); 
     215        array = wi_array_init(wi_array_alloc()); 
    216216 
    217217        for(ifp = ifap; ifp; ifp = ifp->ifa_next) { 
     
    223223                 
    224224                address = wi_address_init_with_sa(wi_address_alloc(), ifp->ifa_addr); 
    225                 wi_list_append_data(list, address); 
     225                wi_array_add_data(array, address); 
    226226                wi_release(address); 
    227227        } 
     
    229229        freeifaddrs(ifap); 
    230230         
    231         if(wi_list_count(list) == 0) { 
     231        if(wi_array_count(array) == 0) { 
    232232                wi_error_set_lib_error(WI_ERROR_HOST_NOAVAILABLEADDRESSES); 
    233233                 
    234                 wi_release(list); 
    235                 list = NULL; 
    236         } 
    237          
    238         return wi_autorelease(list); 
     234                wi_release(array); 
     235                array = NULL; 
     236        } 
     237         
     238        return wi_autorelease(array); 
    239239#else 
    240         wi_list_t                              *list
    241  
    242         list = wi_list_init(wi_list_alloc()); 
    243         wi_list_append_data(list, wi_address_wildcard_for_family(WI_ADDRESS_IPV4)); 
    244         wi_list_append_data(list, wi_address_wildcard_for_family(WI_ADDRESS_IPV6)); 
    245  
    246         return wi_autorelease(list); 
     240        wi_array_t                             *array
     241 
     242        array = wi_array_init(wi_array_alloc()); 
     243        wi_array_add_data(array, wi_address_wildcard_for_family(WI_ADDRESS_IPV4)); 
     244        wi_array_add_data(array, wi_address_wildcard_for_family(WI_ADDRESS_IPV6)); 
     245 
     246        return wi_autorelease(array); 
    247247#endif 
    248248} 
     
    250250 
    251251 
    252 static wi_list_t * _wi_host_addresses_for_string(wi_string_t *string) { 
    253         wi_list_t                      *list
     252static wi_array_t * _wi_host_addresses_for_string(wi_string_t *string) { 
     253        wi_array_t                     *array
    254254        wi_address_t            *address; 
    255255        struct addrinfo         *aiap, *aip; 
     
    264264        } 
    265265         
    266         list = wi_list_init(wi_list_alloc()); 
     266        array = wi_array_init(wi_array_alloc()); 
    267267 
    268268        for(aip = aiap; aip; aip = aip->ai_next) { 
     
    275275                address = wi_address_init_with_sa(wi_address_alloc(), aip->ai_addr); 
    276276 
    277                 if(!wi_list_contains_data(list, address)) 
    278                         wi_list_append_data(list, address); 
     277                if(!wi_array_contains_data(array, address)) 
     278                        wi_array_add_data(array, address); 
    279279 
    280280                wi_release(address); 
     
    283283        freeaddrinfo(aiap); 
    284284 
    285         if(wi_list_count(list) == 0) { 
     285        if(wi_array_count(array) == 0) { 
    286286                wi_error_set_lib_error(WI_ERROR_HOST_NOAVAILABLEADDRESSES); 
    287287                 
    288                 wi_release(list); 
    289                 list = NULL; 
    290         } 
    291  
    292         return wi_autorelease(list); 
     288                wi_release(array); 
     289                array = NULL; 
     290        } 
     291 
     292        return wi_autorelease(array); 
    293293} 
    294294 
     
    298298 
    299299wi_address_t * wi_host_address(wi_host_t *host) { 
    300         wi_list_t             *addresses; 
     300        wi_array_t            *addresses; 
    301301         
    302302        addresses = wi_host_addresses(host); 
     
    305305                return NULL; 
    306306         
    307         return wi_list_first_data(addresses); 
    308 } 
    309  
    310  
    311  
    312 wi_list_t * wi_host_addresses(wi_host_t *host) { 
     307        return wi_array_first_data(addresses); 
     308} 
     309 
     310 
     311 
     312wi_array_t * wi_host_addresses(wi_host_t *host) { 
    313313        return host->string 
    314314                ? _wi_host_addresses_for_string(host->string) 
  • libwired/trunk/libwired/net/wi-host.h

    r3749 r4391  
    4646 
    4747WI_EXPORT wi_address_t *                        wi_host_address(wi_host_t *); 
    48 WI_EXPORT wi_list_t *                         wi_host_addresses(wi_host_t *); 
     48WI_EXPORT wi_array_t *                                wi_host_addresses(wi_host_t *); 
    4949 
    5050#endif /* WI_HOST_H */ 
  • libwired/trunk/libwired/net/wi-socket.c

    r4389 r4391  
    5959#include <wired/wi-date.h> 
    6060#include <wired/wi-macros.h> 
    61 #include <wired/wi-list.h> 
    6261#include <wired/wi-lock.h> 
    6362#include <wired/wi-socket.h> 
     
    837836#pragma mark - 
    838837 
    839 wi_socket_t * wi_socket_wait_multiple(wi_list_t *list, wi_time_interval_t timeout) { 
     838wi_socket_t * wi_socket_wait_multiple(wi_array_t *array, wi_time_interval_t timeout) { 
    840839        wi_enumerator_t         *enumerator; 
    841840        wi_socket_t                     *socket, *accept_socket; 
     
    850849        FD_ZERO(&wfds); 
    851850 
    852         wi_list_rdlock(list); 
    853          
    854         enumerator = wi_list_data_enumerator(list); 
     851        wi_array_rdlock(array); 
     852         
     853        enumerator = wi_array_data_enumerator(array); 
    855854         
    856855        while((socket = wi_enumerator_next_data(enumerator))) { 
     
    865864        } 
    866865 
    867         wi_list_unlock(list); 
     866        wi_array_unlock(array); 
    868867         
    869868        state = select(max_sd + 1, &rfds, &wfds, NULL, (timeout > 0.0) ? &tv : NULL); 
     
    877876        accept_socket = NULL; 
    878877         
    879         wi_list_rdlock(list); 
    880  
    881         enumerator = wi_list_data_enumerator(list); 
     878        wi_array_rdlock(array); 
     879 
     880        enumerator = wi_array_data_enumerator(array); 
    882881         
    883882        while((socket = wi_enumerator_next_data(enumerator))) { 
     
    889888        } 
    890889         
    891         wi_list_unlock(list); 
     890        wi_array_unlock(array); 
    892891         
    893892        return accept_socket; 
     
    10771076 
    10781077 
    1079 wi_socket_t * wi_socket_accept_multiple(wi_list_t *list, wi_socket_context_t *context, wi_time_interval_t timeout, wi_address_t **address) { 
     1078wi_socket_t * wi_socket_accept_multiple(wi_array_t *array, wi_socket_context_t *context, wi_time_interval_t timeout, wi_address_t **address) { 
    10801079        wi_socket_t             *socket; 
    10811080         
    10821081        *address = NULL; 
    1083         socket = wi_socket_wait_multiple(list, 0.0); 
     1082        socket = wi_socket_wait_multiple(array, 0.0); 
    10841083         
    10851084        if(!socket) 
     
    12631262 
    12641263 
    1265 int32_t wi_socket_recvfrom_multiple(wi_list_t *list, wi_socket_context_t *context, char *buffer, size_t length, wi_address_t **address) { 
     1264int32_t wi_socket_recvfrom_multiple(wi_array_t *array, wi_socket_context_t *context, char *buffer, size_t length, wi_address_t **address) { 
    12661265        wi_socket_t             *socket; 
    12671266         
    12681267        *address = NULL; 
    1269         socket = wi_socket_wait_multiple(list, 0.0); 
     1268        socket = wi_socket_wait_multiple(array, 0.0); 
    12701269         
    12711270        if(!socket) 
  • libwired/trunk/libwired/net/wi-socket.h

    r3828 r4391  
    107107WI_EXPORT int                                                   wi_socket_error(wi_socket_t *); 
    108108 
    109 WI_EXPORT wi_socket_t *                                 wi_socket_wait_multiple(wi_list_t *, wi_time_interval_t); 
     109WI_EXPORT wi_socket_t *                                 wi_socket_wait_multiple(wi_array_t *, wi_time_interval_t); 
    110110WI_EXPORT wi_boolean_t                                  wi_socket_wait(wi_socket_t *, wi_time_interval_t); 
    111111WI_EXPORT wi_boolean_t                                  wi_socket_wait_descriptor(int, wi_time_interval_t, wi_boolean_t, wi_boolean_t); 
     
    113113WI_EXPORT wi_boolean_t                                  wi_socket_listen(wi_socket_t *, uint32_t); 
    114114WI_EXPORT wi_boolean_t                                  wi_socket_connect(wi_socket_t *, wi_socket_context_t *, wi_time_interval_t); 
    115 WI_EXPORT wi_socket_t *                                 wi_socket_accept_multiple(wi_list_t *, wi_socket_context_t *, wi_time_interval_t, wi_address_t **); 
     115WI_EXPORT wi_socket_t *                                 wi_socket_accept_multiple(wi_array_t *, wi_socket_context_t *, wi_time_interval_t, wi_address_t **); 
    116116WI_EXPORT wi_socket_t *                                 wi_socket_accept(wi_socket_t *, wi_socket_context_t *, wi_time_interval_t, wi_address_t **); 
    117117WI_EXPORT void                                                  wi_socket_close(wi_socket_t *); 
     
    119119WI_EXPORT int32_t                                               wi_socket_sendto(wi_socket_t *, wi_socket_context_t *, wi_string_t *, ...); 
    120120WI_EXPORT int32_t                                               wi_socket_sendto_buffer(wi_socket_t *, wi_socket_context_t *, const char *, size_t); 
    121 WI_EXPORT int32_t                                               wi_socket_recvfrom_multiple(wi_list_t *, wi_socket_context_t *, char *, size_t, wi_address_t **); 
     121WI_EXPORT int32_t                                               wi_socket_recvfrom_multiple(wi_array_t *, wi_socket_context_t *, char *, size_t, wi_address_t **); 
    122122WI_EXPORT int32_t                                               wi_socket_recvfrom(wi_socket_t *, wi_socket_context_t *, char *, size_t, wi_address_t **); 
    123123 
  • libwired/trunk/libwired/thread/wi-timer.c

    r3843 r4391  
    7070 
    7171 
    72 static wi_list_t                                              *_wi_timers; 
     72static wi_array_t                                             *_wi_timers; 
    7373 
    7474static wi_condition_lock_t                              *_wi_timer_lock; 
     
    9494 
    9595void wi_timer_initialize(void) { 
    96         _wi_timers = wi_list_init(wi_list_alloc()); 
     96        _wi_timers = wi_array_init(wi_array_alloc()); 
    9797        _wi_timer_lock = wi_condition_lock_init_with_condition(wi_condition_lock_alloc(), 0); 
    9898} 
     
    132132                fire_timer      = NULL; 
    133133                locked          = true; 
    134                 timer           = wi_list_first_data(_wi_timers); 
     134                timer           = wi_array_first_data(_wi_timers); 
    135135                interval        = wi_time_interval(); 
    136136 
     
    138138                        wi_condition_lock_lock_when_condition(_wi_timer_lock, 1, 0.0); 
    139139 
    140                         timer = wi_list_first_data(_wi_timers); 
     140                        timer = wi_array_first_data(_wi_timers); 
    141141                        interval = wi_time_interval(); 
    142142 
     
    152152                        } else { 
    153153                                if(!wi_condition_lock_lock_when_condition(_wi_timer_lock, 1, timer->fire)) 
    154                                         fire_timer = wi_list_first_data(_wi_timers); 
     154                                        fire_timer = wi_array_first_data(_wi_timers); 
    155155                        }  
    156156                } 
    157  
     157                 
    158158                if(fire_timer) { 
    159159                        _wi_timer_invalidate(fire_timer); 
     
    235235        timer->fire = wi_time_interval() + timer->interval; 
    236236         
    237         wi_list_wrlock(_wi_timers); 
    238         wi_list_insert_data_sorted(_wi_timers, timer, _wi_timer_compare); 
    239         wi_list_unlock(_wi_timers); 
     237        wi_array_wrlock(_wi_timers); 
     238        wi_array_add_data_sorted(_wi_timers, timer, _wi_timer_compare); 
     239        wi_array_unlock(_wi_timers); 
    240240         
    241241        timer->scheduled = true; 
     
    245245 
    246246static void _wi_timer_invalidate(wi_timer_t *timer) { 
    247         wi_list_wrlock(_wi_timers); 
    248         wi_list_remove_data(_wi_timers, timer); 
    249         wi_list_unlock(_wi_timers); 
     247        wi_array_wrlock(_wi_timers); 
     248        wi_array_remove_data(_wi_timers, timer); 
     249        wi_array_unlock(_wi_timers); 
    250250 
    251251        timer->scheduled = false;