axutil_linked_list.h

Go to the documentation of this file.
00001 
00002 /*
00003  * Licensed to the Apache Software Foundation (ASF) under one or more
00004  * contributor license agreements.  See the NOTICE file distributed with
00005  * this work for additional information regarding copyright ownership.
00006  * The ASF licenses this file to You under the Apache License, Version 2.0
00007  * (the "License"); you may not use this file except in compliance with
00008  * the License.  You may obtain a copy of the License at
00009  *
00010  *      http://www.apache.org/licenses/LICENSE-2.0
00011  *
00012  * Unless required by applicable law or agreed to in writing, software
00013  * distributed under the License is distributed on an "AS IS" BASIS,
00014  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00015  * See the License for the specific language governing permissions and
00016  * limitations under the License.
00017  */
00018 
00019 #ifndef AXUTIL_LINKED_LIST_H
00020 #define AXUTIL_LINKED_LIST_H
00021 
00027 #include <axutil_utils_defines.h>
00028 #include <axutil_env.h>
00029 
00030 #ifdef __cplusplus
00031 extern "C"
00032 {
00033 #endif
00034 
00035     typedef struct axutil_linked_list axutil_linked_list_t;
00036 
00046     typedef struct entry_s
00047     {
00048 
00050         void *data;
00051 
00053         struct entry_s *next;
00054 
00056         struct entry_s *previous;
00057 
00058     }
00059     entry_t;                /* struct entry */
00060 
00064     AXIS2_EXTERN axutil_linked_list_t *AXIS2_CALL
00065     axutil_linked_list_create(
00066         const axutil_env_t * env);
00067 
00068     AXIS2_EXTERN void AXIS2_CALL
00069     axutil_linked_list_free(
00070         axutil_linked_list_t * linked_list,
00071         const axutil_env_t * env);
00072 
00085     AXIS2_EXTERN entry_t *AXIS2_CALL
00086     axutil_linked_list_get_entry(
00087         axutil_linked_list_t * linked_list,
00088         const axutil_env_t * env,
00089         int n);
00090 
00097     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00098     axutil_linked_list_remove_entry(
00099         axutil_linked_list_t * linked_list,
00100         const axutil_env_t * env,
00101         entry_t * e);
00102 
00108     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00109 
00110     axutil_linked_list_check_bounds_inclusive(
00111         axutil_linked_list_t * linked_list,
00112         const axutil_env_t * env,
00113         int index);
00114 
00120     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00121 
00122     axutil_linked_list_check_bounds_exclusive(
00123         axutil_linked_list_t * linked_list,
00124         const axutil_env_t * env,
00125         int index);
00126 
00132     AXIS2_EXTERN void *AXIS2_CALL
00133     axutil_linked_list_get_first(
00134         axutil_linked_list_t * linked_list,
00135         const axutil_env_t * env);
00136 
00142     AXIS2_EXTERN void *AXIS2_CALL
00143     axutil_linked_list_get_last(
00144         axutil_linked_list_t * linked_list,
00145         const axutil_env_t * env);
00146 
00152     AXIS2_EXTERN void *AXIS2_CALL
00153     axutil_linked_list_remove_first(
00154         axutil_linked_list_t * linked_list,
00155         const axutil_env_t * env);
00156 
00162     AXIS2_EXTERN void *AXIS2_CALL
00163     axutil_linked_list_remove_last(
00164         axutil_linked_list_t * linked_list,
00165         const axutil_env_t * env);
00166 
00172     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00173     axutil_linked_list_add_first(
00174         axutil_linked_list_t * linked_list,
00175         const axutil_env_t * env,
00176         void *o);
00177 
00183     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00184     axutil_linked_list_add_last(
00185         axutil_linked_list_t * linked_list,
00186         const axutil_env_t * env,
00187         void *o);
00188 
00196     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00197     axutil_linked_list_contains(
00198         axutil_linked_list_t * linked_list,
00199         const axutil_env_t * env,
00200         void *o);
00201 
00207     AXIS2_EXTERN int AXIS2_CALL
00208     axutil_linked_list_size(
00209         axutil_linked_list_t * linked_list,
00210         const axutil_env_t * env);
00211 
00218     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00219     axutil_linked_list_add(
00220         axutil_linked_list_t * linked_list,
00221         const axutil_env_t * env,
00222         void *o);
00223 
00231     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00232     axutil_linked_list_remove(
00233         axutil_linked_list_t * linked_list,
00234         const axutil_env_t * env,
00235         void *o);
00236 
00240     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00241     axutil_linked_list_clear(
00242         axutil_linked_list_t * linked_list,
00243         const axutil_env_t * env);
00244 
00251     AXIS2_EXTERN void *AXIS2_CALL
00252     axutil_linked_list_get(
00253         axutil_linked_list_t * linked_list,
00254         const axutil_env_t * env,
00255         int index);
00256 
00264     AXIS2_EXTERN void *AXIS2_CALL
00265     axutil_linked_list_set(
00266         axutil_linked_list_t * linked_list,
00267         const axutil_env_t * env,
00268         int index,
00269         void *o);
00270 
00277     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00278     axutil_linked_list_add_at_index(
00279         axutil_linked_list_t * linked_list,
00280         const axutil_env_t * env,
00281         int index,
00282         void *o);
00283 
00290     AXIS2_EXTERN void *AXIS2_CALL
00291     axutil_linked_list_remove_at_index(
00292         axutil_linked_list_t * linked_list,
00293         const axutil_env_t * env,
00294         int index);
00295 
00302     AXIS2_EXTERN int AXIS2_CALL
00303     axutil_linked_list_index_of(
00304         axutil_linked_list_t * linked_list,
00305         const axutil_env_t * env,
00306         void *o);
00307 
00314     AXIS2_EXTERN int AXIS2_CALL
00315     axutil_linked_list_last_index_of(
00316         axutil_linked_list_t * linked_list,
00317         const axutil_env_t * env,
00318         void *o);
00319 
00325     AXIS2_EXTERN void **AXIS2_CALL
00326     axutil_linked_list_to_array(
00327         axutil_linked_list_t * linked_list,
00328         const axutil_env_t * env);
00329 
00330 #ifdef __cplusplus
00331 }
00332 #endif
00333 
00334 #endif                          /* AXIS2_LINKED_LIST_H */

Generated on Fri Apr 17 11:49:42 2009 for Axis2/C by  doxygen 1.5.3