luat_iconv.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) 2022 OpenLuat & AirM2M
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a copy of
  5. * this software and associated documentation files (the "Software"), to deal in
  6. * the Software without restriction, including without limitation the rights to
  7. * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
  8. * the Software, and to permit persons to whom the Software is furnished to do so,
  9. * subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in all
  12. * copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
  16. * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
  17. * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
  18. * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  19. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  20. */
  21. #ifndef LUAT_ICONV_H
  22. #define LUAT_ICONV_H
  23. #include "luat_base.h"
  24. /**
  25. * @defgroup luatos_iconv 字符编码转换接口
  26. * @{
  27. */
  28. typedef void *luat_iconv_t;
  29. /**
  30. * @brief 开启iconv转换流,分配内存
  31. * @param to_code 目标编码格式,gb2312/ucs2/ucs2be/utf8
  32. * @param from_code 源编码格式,gb2312/ucs2/ucs2be/utf8
  33. * @return cionv转换流
  34. */
  35. luat_iconv_t luat_iconv_open (const char *to_code, const char *from_code);
  36. /**
  37. * @brief 转换编码格式
  38. * @param cd cionv转换流
  39. * @param inbuf 输入缓冲区
  40. * @param in_bytes_left 输入缓冲区长度
  41. * @param outbuf 输出缓冲区
  42. * @param out_bytes_left 输出缓冲区长度
  43. * @return 0为成功,-1为失败
  44. */
  45. size_t luat_iconv_convert (luat_iconv_t cd, char ** inbuf, size_t * in_bytes_left, char ** outbuf, size_t * out_bytes_left);
  46. /**
  47. * @brief 关闭iconv转换流,释放内存
  48. * @param cd cionv转换流
  49. * @return 1成功,0失败
  50. */
  51. int luat_iconv_close (luat_iconv_t cd);
  52. /**@}*/
  53. #endif