xref: /netbsd-src/external/gpl3/gcc/dist/libphobos/libdruntime/core/sys/windows/winber.d (revision 0a3071956a3a9fdebdbf7f338cf2d439b45fc728)
1 /**
2  * Windows API header module
3  *
4  * Translated from MinGW Windows headers
5  *
6  * Authors: Stewart Gordon
7  * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8  * Source: $(DRUNTIMESRC core/sys/windows/_winber.d)
9  */
10 module core.sys.windows.winber;
11 version (Windows):
12 @system:
13 
14 /* Comment from MinGW
15   winber.h - Header file for the Windows LDAP Basic Encoding Rules API
16 
17   Written by Filip Navara <xnavara@volny.cz>
18 
19   References:
20     The C LDAP Application Program Interface
21     http://www.watersprings.org/pub/id/draft-ietf-ldapext-ldap-c-api-05.txt
22 
23     Lightweight Directory Access Protocol Reference
24     http://msdn.microsoft.com/library/en-us/netdir/ldap/ldap_reference.asp
25 
26   This library is distributed in the hope that it will be useful,
27   but WITHOUT ANY WARRANTY; without even the implied warranty of
28   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
29  */
30 
31  import core.sys.windows.basetsd;
32 
33 /* Opaque structure
34  *  http://msdn.microsoft.com/library/en-us/ldap/ldap/berelement.asp
35  */
36 struct BerElement;
37 
38 alias int ber_int_t, ber_slen_t;
39 alias uint ber_uint_t, ber_len_t, ber_tag_t;
40 
41 align(4):
42 struct BerValue {
43     ber_len_t bv_len;
44     char*     bv_val;
45 }
46 alias BerValue LDAP_BERVAL, BERVAL;
47 alias BerValue* PLDAP_BERVAL, PBERVAL;
48 
49 enum ber_tag_t
50     LBER_ERROR   = -1,
51     LBER_DEFAULT = -1,
52     LBER_USE_DER =  1;
53 
54 /*  FIXME: In MinGW, these are WINBERAPI == DECLSPEC_IMPORT.  Linkage
55  *  attribute?
56  */
57 extern (C) {
58     BerElement* ber_init(const(BerValue)*);
59     int ber_printf(BerElement*, const(char)*, ...);
60     int ber_flatten(BerElement*, BerValue**);
61     ber_tag_t ber_scanf(BerElement*, const(char)*, ...);
62     ber_tag_t ber_peek_tag(BerElement*, ber_len_t*);
63     ber_tag_t ber_skip_tag(BerElement*, ber_len_t*);
64     ber_tag_t ber_first_element(BerElement*, ber_len_t*, char**);
65     ber_tag_t ber_next_element(BerElement*, ber_len_t*, char*);
66     void ber_bvfree(BerValue*);
67     void ber_bvecfree(BerValue**);
68     void ber_free(BerElement*, int);
69     BerValue* ber_bvdup(BerValue*);
70     BerElement* ber_alloc_t(int);
71 }
72