axutil_linked_list.h

Go to the documentation of this file.
00001 /*
00002  * Licensed to the Apache Software Foundation (ASF) under one or more
00003  * contributor license agreements.  See the NOTICE file distributed with
00004  * this work for additional information regarding copyright ownership.
00005  * The ASF licenses this file to You under the Apache License, Version 2.0
00006  * (the "License"); you may not use this file except in compliance with
00007  * the License.  You may obtain a copy of the License at
00008  *
00009  *      http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef AXUTIL_LINKED_LIST_H
00019 #define AXUTIL_LINKED_LIST_H
00020 
00026 #include <axutil_utils_defines.h>
00027 #include <axutil_env.h>
00028 
00029 #ifdef __cplusplus
00030 extern "C"
00031 {
00032 #endif
00033 
00034     typedef struct axutil_linked_list axutil_linked_list_t;
00035 
00045     typedef struct entry_s
00046     {
00048         void *data;
00049 
00051         struct entry_s *next;
00052 
00054         struct entry_s *previous;
00055 
00056     }
00057     entry_t; /* struct entry */
00058 
00062     AXIS2_EXTERN axutil_linked_list_t* AXIS2_CALL 
00063     axutil_linked_list_create(const axutil_env_t *env);
00064 
00065     AXIS2_EXTERN void AXIS2_CALL
00066     axutil_linked_list_free(axutil_linked_list_t *linked_list,
00067         const axutil_env_t *env);
00068 
00081     AXIS2_EXTERN entry_t * AXIS2_CALL
00082     axutil_linked_list_get_entry(axutil_linked_list_t *linked_list,
00083         const axutil_env_t *env,
00084         int n);
00085 
00092     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00093     axutil_linked_list_remove_entry(axutil_linked_list_t *linked_list,
00094         const axutil_env_t *env,
00095         entry_t *e);
00096 
00097 
00103     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00104     axutil_linked_list_check_bounds_inclusive(axutil_linked_list_t *linked_list,
00105         const axutil_env_t *env,
00106         int index);
00107 
00113     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00114     axutil_linked_list_check_bounds_exclusive(axutil_linked_list_t *linked_list,
00115         const axutil_env_t *env,
00116         int index);
00117 
00123     AXIS2_EXTERN void * AXIS2_CALL
00124     axutil_linked_list_get_first(axutil_linked_list_t *linked_list,
00125         const axutil_env_t *env);
00126 
00132     AXIS2_EXTERN void * AXIS2_CALL
00133     axutil_linked_list_get_last(axutil_linked_list_t *linked_list,
00134         const axutil_env_t *env);
00135 
00141     AXIS2_EXTERN void * AXIS2_CALL
00142     axutil_linked_list_remove_first(axutil_linked_list_t *linked_list,
00143         const axutil_env_t *env);
00144 
00150     AXIS2_EXTERN void * AXIS2_CALL
00151     axutil_linked_list_remove_last(axutil_linked_list_t *linked_list,
00152         const axutil_env_t *env);
00153 
00159     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00160     axutil_linked_list_add_first(axutil_linked_list_t *linked_list,
00161         const axutil_env_t *env,
00162         void *o);
00163 
00169     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00170     axutil_linked_list_add_last(axutil_linked_list_t *linked_list,
00171         const axutil_env_t *env,
00172         void *o);
00173 
00181     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00182     axutil_linked_list_contains(axutil_linked_list_t *linked_list,
00183         const axutil_env_t *env,
00184         void *o);
00185 
00191     AXIS2_EXTERN int AXIS2_CALL
00192     axutil_linked_list_size(axutil_linked_list_t *linked_list,
00193         const axutil_env_t *env);
00194 
00201     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00202     axutil_linked_list_add(axutil_linked_list_t *linked_list,
00203         const axutil_env_t *env,
00204         void *o);
00205 
00213     AXIS2_EXTERN axis2_bool_t AXIS2_CALL
00214     axutil_linked_list_remove(axutil_linked_list_t *linked_list,
00215         const axutil_env_t *env,
00216         void *o);
00217 
00221     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00222     axutil_linked_list_clear(axutil_linked_list_t *linked_list,
00223         const axutil_env_t *env);
00224 
00231     AXIS2_EXTERN void * AXIS2_CALL
00232     axutil_linked_list_get(axutil_linked_list_t *linked_list,
00233         const axutil_env_t *env,
00234         int index);
00235 
00243     AXIS2_EXTERN void * AXIS2_CALL
00244     axutil_linked_list_set(axutil_linked_list_t *linked_list,
00245         const axutil_env_t *env,
00246         int index, 
00247         void *o);
00248 
00255     AXIS2_EXTERN axis2_status_t AXIS2_CALL
00256     axutil_linked_list_add_at_index(axutil_linked_list_t *linked_list,
00257         const axutil_env_t *env,
00258         int index,
00259         void *o);
00260 
00267     AXIS2_EXTERN void * AXIS2_CALL
00268     axutil_linked_list_remove_at_index(axutil_linked_list_t *linked_list,
00269         const axutil_env_t *env,
00270         int index);
00271 
00278     AXIS2_EXTERN int AXIS2_CALL
00279     axutil_linked_list_index_of(axutil_linked_list_t *linked_list,
00280         const axutil_env_t *env,
00281         void *o);
00282 
00289     AXIS2_EXTERN int AXIS2_CALL
00290     axutil_linked_list_last_index_of(axutil_linked_list_t *linked_list,
00291         const axutil_env_t *env,
00292         void *o);
00293 
00299     AXIS2_EXTERN void ** AXIS2_CALL
00300     axutil_linked_list_to_array(axutil_linked_list_t *linked_list,
00301         const axutil_env_t *env);
00302 
00303 #ifdef __cplusplus
00304 }
00305 #endif
00306 
00307 #endif    /* AXIS2_LINKED_LIST_H */

Generated on Thu May 3 12:31:01 2007 for Axis2/C by  doxygen 1.4.6