/**
 * Converted/butchered LIBUSB header to a D-Language interface
 *
 *
 * Authors: Ross Lonstein <lonstein@brightboxcharge.com>
 * License: LGPL
 * Copyright: 2015, Brightbox, Inc.
 * See_Also: http://www.libusb.org
 * Notes: Libusb itself is Copyright
 * $(UL
 *   $(LI 2001 Johannes Erdfelt <johannes@erdfelt.com>)
 *   $(LI 2007-2008 Daniel Drake <dsd@gentoo.org>)
 *   $(LI 2012 Pete Batard <pete@akeo.ie>)
 *   $(LI 2012 Nathan Hjelm <hjelmn@cs.unm.edu>) )
 * Examples:
 * ----------
 * import libusb;
 *     ...
 * libusb_context *usbctx;
 * int rc = libusb_init(&usbctx);
 * if (libusb_error.LIBUSB_SUCCESS == rc) {
 *   rc = libusb_has_capability(libusb_capability.LIBUSB_CAP_HAS_HOTPLUG);
 *     ...
 * }
 * else {
 *  // handle error
 * }
 * libusb_exit(usbctx);
 * ----------
 */

module libusb;

import std.traits;
import std.typetuple : NoDuplicates;

public {
  import consts;
  import enums;
  import structs;
  import funcs;
}

import core.sys.posix.sys.time : timeval;

/* Total number of error codes in enum libusb_error */
const LIBUSB_ERROR_COUNT = EnumMembers!libusb_error.length;