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 */
10module core.sys.windows.winber;
11version (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 */
36struct BerElement;
37
38alias int ber_int_t, ber_slen_t;
39alias uint ber_uint_t, ber_len_t, ber_tag_t;
40
41align(4):
42struct BerValue {
43    ber_len_t bv_len;
44    char*     bv_val;
45}
46alias BerValue LDAP_BERVAL, BERVAL;
47alias BerValue* PLDAP_BERVAL, PBERVAL;
48
49enum 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 */
57extern (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