/******************************************************************************* D binding for the POSIX iconv library. Defines external functions required to use iconv codeset conversion function. iconv_open(3) Allocates the descriptor for code conversion iconv(3) Performs the conversion iconvctl(3) Control iconv behavior iconv_close(3) Deallocates allocated resources Copyright: Copyright (c) 2016 Sociomantic Labs. All rights reserved. License: $(HTTP www.boost.org/LICENSE_1_0.txt, Boost License 1.0). Authors: Nemanja Boric Standards: POSIX.1-2001, POSIX.1-2008 See_Also: http://pubs.opengroup.org/onlinepubs/009695399/functions/iconv_open.html *******************************************************************************/ module core.sys.posix.iconv; enum { ICONV_TRIVIALP = 0, /* int *argument */ ICONV_GET_TRANSLITERATE = 1, /* int *argument */ ICONV_SET_TRANSLITERATE = 2, /* const int *argument */ ICONV_GET_DISCARD_ILSEQ = 3, /* int *argument */ ICONV_SET_DISCARD_ILSEQ = 4, /* const int *argument */ } version (Posix): extern (C): nothrow: @nogc: @system: alias void* iconv_t; /// Allocate descriptor for code conversion from codeset FROMCODE to /// codeset TOCODE. iconv_t iconv_open (const scope char* tocode, const scope char* fromcode); /// Convert at most *INBYTESLEFT bytes from *INBUF according to the /// code conversion algorithm specified by CD and place up to /// *OUTBYTESLEFT bytes in buffer at *OUTBUF. size_t iconv (iconv_t cd, const scope char** inbuf, size_t* inbytesleft, char** outbuf, size_t* outbytesleft); /// iconvctl queries or adjusts the behavior of the iconv function, /// when invoked with the specified conversion descriptor, /// depending on the request value. int iconvctl (iconv_t cd, int request, void* argument); /// Free resources allocated for descriptor CD for code conversion. int iconv_close (iconv_t cd);