/* $OpenLDAP: pkg/ldap/include/lber_types.nt,v 1.2.2.2 2000/06/13 17:57:14 kurt Exp $ */
/* $Novell: lber_types.nw,v 1.3 2002/09/26 19:38:48 $ */
/*
 * Copyright 1998-2000 The OpenLDAP Foundation, Redwood City, California, USA
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms are permitted only
 * as authorized by the OpenLDAP Public License.  A copy of this
 * license is available at http://www.OpenLDAP.org/license.html or
 * in file LICENSE in the top-level directory of the distribution.
 */

/*
 * LBER types for NetWare
 */

#ifndef _LBER_TYPES_H
#define _LBER_TYPES_H

#include <stddef.h>

#if defined(__NOVELL_LIBC__)
   #include <novsock2.h>
#else
   #include <ws2nlm.h>
#endif

#include <ldap_cdefs.h>

LDAP_BEGIN_DECL

/* LBER boolean, enum, integers - 32 bits or larger*/
#define LBER_INT_T	int

/* LBER tags - 32 bits or larger */
#define LBER_TAG_T	long

/* LBER socket descriptor (NetWare WinSock SOCKET type) */
#define LBER_SOCKET_T	SOCKET


/* LBER lengths - 32 bits or larger*/

   /* The LibC SDK supports ssize_t - The Clib SDK doesn't 
   */
#if defined(__NOVELL_LIBC__)
#define LBER_LEN_T		size_t
#define LBER_SLEN_T		ssize_t
#else
#define LBER_LEN_T		unsigned long
#define LBER_SLEN_T		signed long
#endif

/* ------------------------------------------------------------ */

/* booleans, enumerations, and integers */
typedef LBER_INT_T ber_int_t;

/* signed and unsigned versions */
typedef signed LBER_INT_T ber_sint_t;
typedef unsigned LBER_INT_T ber_uint_t;

/* tags */
typedef unsigned LBER_TAG_T ber_tag_t;

/* "socket" descriptors */
typedef LBER_SOCKET_T ber_socket_t;

/* lengths */
typedef LBER_LEN_T ber_len_t;

/* signed lengths */
typedef LBER_SLEN_T ber_slen_t;

LDAP_END_DECL

#endif /* _LBER_TYPES_H */
