Blame include/cdio/utf8.h

Packit dd8086
/*
Packit dd8086
    Copyright (C) 2008, 2012, 2014 Rocky Bernstein <rocky@gnu.org>
Packit dd8086
    Copyright (C) 2006 Burkhard Plaum <plaum@ipf.uni-stuttgart.de>
Packit dd8086
Packit dd8086
    This program is free software: you can redistribute it and/or modify
Packit dd8086
    it under the terms of the GNU General Public License as published by
Packit dd8086
    the Free Software Foundation, either version 3 of the License, or
Packit dd8086
    (at your option) any later version.
Packit dd8086
Packit dd8086
    This program is distributed in the hope that it will be useful,
Packit dd8086
    but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit dd8086
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit dd8086
    GNU General Public License for more details.
Packit dd8086
Packit dd8086
    You should have received a copy of the GNU General Public License
Packit dd8086
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit dd8086
*/
Packit dd8086
/** \file utf8.h 
Packit dd8086
 *
Packit dd8086
 *  \brief UTF-8 support
Packit dd8086
 */
Packit dd8086

Packit dd8086
Packit dd8086
#include <cdio/types.h>
Packit dd8086
Packit dd8086
/** \brief Opaque characterset converter
Packit dd8086
 */
Packit dd8086
Packit dd8086
typedef struct cdio_charset_coverter_s cdio_charset_coverter_t;
Packit dd8086
Packit dd8086
/** \brief Create a charset converter
Packit dd8086
 *  \param src_charset Source charset
Packit dd8086
 *  \param dst_charset Destination charset
Packit dd8086
 *  \returns A newly allocated charset converter
Packit dd8086
 */
Packit dd8086
Packit dd8086
cdio_charset_coverter_t *
Packit dd8086
cdio_charset_converter_create(const char * src_charset,
Packit dd8086
                              const char * dst_charset);
Packit dd8086
Packit dd8086
/** \brief Destroy a characterset converter
Packit dd8086
 *  \param cnv A characterset converter
Packit dd8086
 */
Packit dd8086
Packit dd8086
void cdio_charset_converter_destroy(cdio_charset_coverter_t*cnv);
Packit dd8086
Packit dd8086
/** \brief Convert a string from one character set to another
Packit dd8086
 *  \param cnv A charset converter
Packit dd8086
 *  \param src Source string
Packit dd8086
 *  \param src_len Length of source string
Packit dd8086
 *  \param dst Returns destination string
Packit dd8086
 *  \param dst_len If non NULL, returns the length of the destination string
Packit dd8086
 *  \returns true if conversion was sucessful, false else.
Packit dd8086
 *
Packit dd8086
 *  The destination string must be freed by the caller with cdio_free().
Packit dd8086
 *  If you pass -1 for src_len, strlen() will be used.
Packit dd8086
 */
Packit dd8086
Packit dd8086
bool cdio_charset_convert(cdio_charset_coverter_t*cnv,
Packit dd8086
                          char * src, int src_len,
Packit dd8086
                          char ** dst, int * dst_len);
Packit dd8086
Packit dd8086
/** \brief Convert a string from UTF-8 to another charset
Packit dd8086
 *  \param src Source string (0 terminated)
Packit dd8086
 *  \param dst Returns destination string
Packit dd8086
 *  \param dst_len If non NULL, returns the length of the destination string
Packit dd8086
 *  \param dst_charset The characterset to convert to
Packit dd8086
 *  \returns true if conversion was sucessful, false else.
Packit dd8086
 *
Packit dd8086
 *  This is a convenience function, which creates a charset converter,
Packit dd8086
 *  converts one string and destroys the charset converter.
Packit dd8086
 *
Packit dd8086
 *  The destination string must be freed by the caller with cdio_free().
Packit dd8086
 */
Packit dd8086
Packit dd8086
Packit dd8086
bool cdio_charset_from_utf8(cdio_utf8_t * src, char ** dst,
Packit dd8086
                            int * dst_len, const char * dst_charset);
Packit dd8086
Packit dd8086
/** \brief Convert a string from another charset to UTF-8 
Packit dd8086
 *  \param src Source string
Packit dd8086
 *  \param src_len Length of the source string
Packit dd8086
 *  \param dst Returns destination string (0 terminated)
Packit dd8086
 *  \param src_charset The characterset to convert from
Packit dd8086
 *  \returns true if conversion was sucessful, false else.
Packit dd8086
 *
Packit dd8086
 *  This is a convenience function, which creates a charset converter,
Packit dd8086
 *  converts one string and destroys the charset converter.
Packit dd8086
 *
Packit dd8086
 *  The destination string must be freed by the caller with cdio_free().
Packit dd8086
 *  If you pass -1 for src_len, strlen() will be used.
Packit dd8086
 */
Packit dd8086
Packit dd8086
Packit dd8086
bool cdio_charset_to_utf8(const char *src, size_t src_len, cdio_utf8_t **dst,
Packit dd8086
                          const char * src_charset);
Packit dd8086
Packit dd8086
#ifdef _WIN32
Packit dd8086
/** \brief Convert an UTF8 string to UTF-16 (allocate returned string)
Packit dd8086
 *  \param str Source string
Packit dd8086
 *  \returns NULL if the conversion was unsuccesful. Caller must free the
Packit dd8086
 *  returned string with cdio_free().
Packit dd8086
 *  This is a convenience function available on Windows platforms only.
Packit dd8086
 */
Packit dd8086
wchar_t* cdio_utf8_to_wchar(const char* str);
Packit dd8086
Packit dd8086
#include <stdio.h> /* for FILE */
Packit dd8086
/** \brief Provides an UTF-8 compliant version of fopen for Windows
Packit dd8086
 *  The parameters and return value are the same as fopen().
Packit dd8086
 */
Packit dd8086
FILE* fopen_utf8(const char* filename, const char* mode);
Packit dd8086
#endif