xref: /onnv-gate/usr/src/cmd/ndmpd/include/cstack.h (revision 7917:5c4442486198)
1*7917SReza.Sabdar@Sun.COM /*
2*7917SReza.Sabdar@Sun.COM  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
3*7917SReza.Sabdar@Sun.COM  * Use is subject to license terms.
4*7917SReza.Sabdar@Sun.COM  */
5*7917SReza.Sabdar@Sun.COM 
6*7917SReza.Sabdar@Sun.COM /*
7*7917SReza.Sabdar@Sun.COM  * BSD 3 Clause License
8*7917SReza.Sabdar@Sun.COM  *
9*7917SReza.Sabdar@Sun.COM  * Copyright (c) 2007, The Storage Networking Industry Association.
10*7917SReza.Sabdar@Sun.COM  *
11*7917SReza.Sabdar@Sun.COM  * Redistribution and use in source and binary forms, with or without
12*7917SReza.Sabdar@Sun.COM  * modification, are permitted provided that the following conditions
13*7917SReza.Sabdar@Sun.COM  * are met:
14*7917SReza.Sabdar@Sun.COM  * 	- Redistributions of source code must retain the above copyright
15*7917SReza.Sabdar@Sun.COM  *	  notice, this list of conditions and the following disclaimer.
16*7917SReza.Sabdar@Sun.COM  *
17*7917SReza.Sabdar@Sun.COM  * 	- Redistributions in binary form must reproduce the above copyright
18*7917SReza.Sabdar@Sun.COM  *	  notice, this list of conditions and the following disclaimer in
19*7917SReza.Sabdar@Sun.COM  *	  the documentation and/or other materials provided with the
20*7917SReza.Sabdar@Sun.COM  *	  distribution.
21*7917SReza.Sabdar@Sun.COM  *
22*7917SReza.Sabdar@Sun.COM  *	- Neither the name of The Storage Networking Industry Association (SNIA)
23*7917SReza.Sabdar@Sun.COM  *	  nor the names of its contributors may be used to endorse or promote
24*7917SReza.Sabdar@Sun.COM  *	  products derived from this software without specific prior written
25*7917SReza.Sabdar@Sun.COM  *	  permission.
26*7917SReza.Sabdar@Sun.COM  *
27*7917SReza.Sabdar@Sun.COM  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28*7917SReza.Sabdar@Sun.COM  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29*7917SReza.Sabdar@Sun.COM  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30*7917SReza.Sabdar@Sun.COM  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
31*7917SReza.Sabdar@Sun.COM  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32*7917SReza.Sabdar@Sun.COM  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33*7917SReza.Sabdar@Sun.COM  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34*7917SReza.Sabdar@Sun.COM  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35*7917SReza.Sabdar@Sun.COM  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36*7917SReza.Sabdar@Sun.COM  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37*7917SReza.Sabdar@Sun.COM  * POSSIBILITY OF SUCH DAMAGE.
38*7917SReza.Sabdar@Sun.COM  */
39*7917SReza.Sabdar@Sun.COM 
40*7917SReza.Sabdar@Sun.COM /*
41*7917SReza.Sabdar@Sun.COM  * Interface definition for the list based stack class. The stack only
42*7917SReza.Sabdar@Sun.COM  * holds pointers/references to application objects. The objects are not
43*7917SReza.Sabdar@Sun.COM  * copied and the stack never attempts to dereference or access the data
44*7917SReza.Sabdar@Sun.COM  * objects. Applications should treat cstack_t references as opaque
45*7917SReza.Sabdar@Sun.COM  * handles.
46*7917SReza.Sabdar@Sun.COM  */
47*7917SReza.Sabdar@Sun.COM 
48*7917SReza.Sabdar@Sun.COM #ifndef _CSTACK_H_
49*7917SReza.Sabdar@Sun.COM #define	_CSTACK_H_
50*7917SReza.Sabdar@Sun.COM 
51*7917SReza.Sabdar@Sun.COM 
52*7917SReza.Sabdar@Sun.COM #ifdef __cplusplus
53*7917SReza.Sabdar@Sun.COM extern "C" {
54*7917SReza.Sabdar@Sun.COM #endif
55*7917SReza.Sabdar@Sun.COM 
56*7917SReza.Sabdar@Sun.COM 
57*7917SReza.Sabdar@Sun.COM typedef struct cstack {
58*7917SReza.Sabdar@Sun.COM 	struct cstack *next;
59*7917SReza.Sabdar@Sun.COM 	void *data;
60*7917SReza.Sabdar@Sun.COM 	int len;
61*7917SReza.Sabdar@Sun.COM } cstack_t;
62*7917SReza.Sabdar@Sun.COM 
63*7917SReza.Sabdar@Sun.COM 
64*7917SReza.Sabdar@Sun.COM cstack_t *cstack_new(void);
65*7917SReza.Sabdar@Sun.COM void cstack_delete(cstack_t *);
66*7917SReza.Sabdar@Sun.COM int cstack_push(cstack_t *, void *, int);
67*7917SReza.Sabdar@Sun.COM int cstack_pop(cstack_t *, void **, int *);
68*7917SReza.Sabdar@Sun.COM int cstack_top(cstack_t *, void **, int *);
69*7917SReza.Sabdar@Sun.COM 
70*7917SReza.Sabdar@Sun.COM 
71*7917SReza.Sabdar@Sun.COM #ifdef __cplusplus
72*7917SReza.Sabdar@Sun.COM }
73*7917SReza.Sabdar@Sun.COM #endif
74*7917SReza.Sabdar@Sun.COM 
75*7917SReza.Sabdar@Sun.COM 
76*7917SReza.Sabdar@Sun.COM #endif /* _CSTACK_H_ */
77