xref: /freebsd/crypto/krb5/src/ccapi/common/cci_array_internal.h (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
1*7f2fe78bSCy Schubert /* ccapi/common/cci_array_internal.h */
2*7f2fe78bSCy Schubert /*
3*7f2fe78bSCy Schubert  * Copyright 2006 Massachusetts Institute of Technology.
4*7f2fe78bSCy Schubert  * All Rights Reserved.
5*7f2fe78bSCy Schubert  *
6*7f2fe78bSCy Schubert  * Export of this software from the United States of America may
7*7f2fe78bSCy Schubert  * require a specific license from the United States Government.
8*7f2fe78bSCy Schubert  * It is the responsibility of any person or organization contemplating
9*7f2fe78bSCy Schubert  * export to obtain such a license before exporting.
10*7f2fe78bSCy Schubert  *
11*7f2fe78bSCy Schubert  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
12*7f2fe78bSCy Schubert  * distribute this software and its documentation for any purpose and
13*7f2fe78bSCy Schubert  * without fee is hereby granted, provided that the above copyright
14*7f2fe78bSCy Schubert  * notice appear in all copies and that both that copyright notice and
15*7f2fe78bSCy Schubert  * this permission notice appear in supporting documentation, and that
16*7f2fe78bSCy Schubert  * the name of M.I.T. not be used in advertising or publicity pertaining
17*7f2fe78bSCy Schubert  * to distribution of the software without specific, written prior
18*7f2fe78bSCy Schubert  * permission.  Furthermore if you modify this software you must label
19*7f2fe78bSCy Schubert  * your software as modified software and not distribute it in such a
20*7f2fe78bSCy Schubert  * fashion that it might be confused with the original M.I.T. software.
21*7f2fe78bSCy Schubert  * M.I.T. makes no representations about the suitability of
22*7f2fe78bSCy Schubert  * this software for any purpose.  It is provided "as is" without express
23*7f2fe78bSCy Schubert  * or implied warranty.
24*7f2fe78bSCy Schubert  */
25*7f2fe78bSCy Schubert 
26*7f2fe78bSCy Schubert #ifndef CCI_ARRAY_INTERNAL_H
27*7f2fe78bSCy Schubert #define CCI_ARRAY_INTERNAL_H
28*7f2fe78bSCy Schubert 
29*7f2fe78bSCy Schubert #include "cci_types.h"
30*7f2fe78bSCy Schubert 
31*7f2fe78bSCy Schubert struct cci_array_object_d;
32*7f2fe78bSCy Schubert typedef struct cci_array_object_d *cci_array_object_t;
33*7f2fe78bSCy Schubert 
34*7f2fe78bSCy Schubert typedef cc_int32 (*cci_array_object_release_t) (cci_array_object_t);
35*7f2fe78bSCy Schubert 
36*7f2fe78bSCy Schubert struct cci_array_d;
37*7f2fe78bSCy Schubert typedef struct cci_array_d *cci_array_t;
38*7f2fe78bSCy Schubert 
39*7f2fe78bSCy Schubert cc_int32 cci_array_new (cci_array_t                *out_array,
40*7f2fe78bSCy Schubert                         cci_array_object_release_t  in_array_object_release);
41*7f2fe78bSCy Schubert 
42*7f2fe78bSCy Schubert cc_int32 cci_array_release (cci_array_t io_array);
43*7f2fe78bSCy Schubert 
44*7f2fe78bSCy Schubert cc_uint64 cci_array_count (cci_array_t in_array);
45*7f2fe78bSCy Schubert 
46*7f2fe78bSCy Schubert cci_array_object_t cci_array_object_at_index (cci_array_t io_array,
47*7f2fe78bSCy Schubert                                               cc_uint64   in_position);
48*7f2fe78bSCy Schubert 
49*7f2fe78bSCy Schubert cc_int32 cci_array_insert (cci_array_t        io_array,
50*7f2fe78bSCy Schubert                            cci_array_object_t in_object,
51*7f2fe78bSCy Schubert                            cc_uint64          in_position);
52*7f2fe78bSCy Schubert 
53*7f2fe78bSCy Schubert cc_int32 cci_array_remove (cci_array_t io_array,
54*7f2fe78bSCy Schubert                            cc_uint64   in_position);
55*7f2fe78bSCy Schubert 
56*7f2fe78bSCy Schubert cc_int32 cci_array_move (cci_array_t  io_array,
57*7f2fe78bSCy Schubert                          cc_uint64    in_position,
58*7f2fe78bSCy Schubert                          cc_uint64    in_new_position,
59*7f2fe78bSCy Schubert                          cc_uint64   *out_real_new_position);
60*7f2fe78bSCy Schubert 
61*7f2fe78bSCy Schubert cc_int32 cci_array_push_front (cci_array_t io_array,
62*7f2fe78bSCy Schubert                                cc_uint64   in_position);
63*7f2fe78bSCy Schubert 
64*7f2fe78bSCy Schubert 
65*7f2fe78bSCy Schubert #endif /* CCI_ARRAY_INTERNAL_H */
66