1
0

wchar2-decl.h 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. //
  2. // Copyright 2026 Aarav Ravindra Kharade
  3. //
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. //
  8. // http://www.apache.org/licenses/LICENSE-2.0
  9. //
  10. // Unless required by applicable law or agreed to in writing, software
  11. // distributed under the License is distributed on an "AS IS" BASIS,
  12. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. // See the License for the specific language governing permissions and
  14. // limitations under the License.
  15. //
  16. /* Checking macros for wchar functions. Declarations only.
  17. Copyright (C) 2004-2026 Free Software Foundation, Inc.
  18. This file is part of the GNU C Library.
  19. The GNU C Library is free software; you can redistribute it and/or
  20. modify it under the terms of the GNU Lesser General Public
  21. License as published by the Free Software Foundation; either
  22. version 2.1 of the License, or (at your option) any later version.
  23. The GNU C Library is distributed in the hope that it will be useful,
  24. but WITHOUT ANY WARRANTY; without even the implied warranty of
  25. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  26. Lesser General Public License for more details.
  27. You should have received a copy of the GNU Lesser General Public
  28. License along with the GNU C Library; if not, see
  29. <https://www.gnu.org/licenses/>. */
  30. #ifndef _BITS_WCHAR2_DECL_H
  31. #define _BITS_WCHAR2_DECL_H 1
  32. #ifndef _WCHAR_H
  33. # error "Never include <bits/wchar2-decl.h> directly; use <wchar.h> instead."
  34. #endif
  35. extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1,
  36. const wchar_t *__restrict __s2, size_t __n,
  37. size_t __ns1) __THROW;
  38. extern wchar_t *__REDIRECT_NTH (__wmemcpy_alias,
  39. (wchar_t *__restrict __s1,
  40. const wchar_t *__restrict __s2, size_t __n),
  41. wmemcpy);
  42. extern wchar_t *__REDIRECT_NTH (__wmemcpy_chk_warn,
  43. (wchar_t *__restrict __s1,
  44. const wchar_t *__restrict __s2, size_t __n,
  45. size_t __ns1), __wmemcpy_chk)
  46. __warnattr ("wmemcpy called with length bigger than size of destination "
  47. "buffer");
  48. extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2,
  49. size_t __n, size_t __ns1) __THROW;
  50. extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1,
  51. const wchar_t *__s2,
  52. size_t __n), wmemmove);
  53. extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn,
  54. (wchar_t *__s1, const wchar_t *__s2,
  55. size_t __n, size_t __ns1), __wmemmove_chk)
  56. __warnattr ("wmemmove called with length bigger than size of destination "
  57. "buffer");
  58. #ifdef __USE_GNU
  59. extern wchar_t *__wmempcpy_chk (wchar_t *__restrict __s1,
  60. const wchar_t *__restrict __s2, size_t __n,
  61. size_t __ns1) __THROW;
  62. extern wchar_t *__REDIRECT_NTH (__wmempcpy_alias,
  63. (wchar_t *__restrict __s1,
  64. const wchar_t *__restrict __s2,
  65. size_t __n), wmempcpy);
  66. extern wchar_t *__REDIRECT_NTH (__wmempcpy_chk_warn,
  67. (wchar_t *__restrict __s1,
  68. const wchar_t *__restrict __s2, size_t __n,
  69. size_t __ns1), __wmempcpy_chk)
  70. __warnattr ("wmempcpy called with length bigger than size of destination "
  71. "buffer");
  72. #endif
  73. extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n,
  74. size_t __ns) __THROW;
  75. extern wchar_t *__REDIRECT_FORTIFY_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c,
  76. size_t __n), wmemset);
  77. extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn,
  78. (wchar_t *__s, wchar_t __c, size_t __n,
  79. size_t __ns), __wmemset_chk)
  80. __warnattr ("wmemset called with length bigger than size of destination "
  81. "buffer");
  82. extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest,
  83. const wchar_t *__restrict __src,
  84. size_t __n) __THROW;
  85. extern wchar_t *__REDIRECT_NTH (__wcscpy_alias,
  86. (wchar_t *__restrict __dest,
  87. const wchar_t *__restrict __src), wcscpy);
  88. extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest,
  89. const wchar_t *__restrict __src,
  90. size_t __destlen) __THROW;
  91. extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias,
  92. (wchar_t *__restrict __dest,
  93. const wchar_t *__restrict __src), wcpcpy);
  94. extern wchar_t *__wcsncpy_chk (wchar_t *__restrict __dest,
  95. const wchar_t *__restrict __src, size_t __n,
  96. size_t __destlen) __THROW;
  97. extern wchar_t *__REDIRECT_NTH (__wcsncpy_alias,
  98. (wchar_t *__restrict __dest,
  99. const wchar_t *__restrict __src,
  100. size_t __n), wcsncpy);
  101. extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn,
  102. (wchar_t *__restrict __dest,
  103. const wchar_t *__restrict __src,
  104. size_t __n, size_t __destlen), __wcsncpy_chk)
  105. __warnattr ("wcsncpy called with length bigger than size of destination "
  106. "buffer");
  107. extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest,
  108. const wchar_t *__restrict __src, size_t __n,
  109. size_t __destlen) __THROW;
  110. extern wchar_t *__REDIRECT_NTH (__wcpncpy_alias,
  111. (wchar_t *__restrict __dest,
  112. const wchar_t *__restrict __src,
  113. size_t __n), wcpncpy);
  114. extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn,
  115. (wchar_t *__restrict __dest,
  116. const wchar_t *__restrict __src,
  117. size_t __n, size_t __destlen), __wcpncpy_chk)
  118. __warnattr ("wcpncpy called with length bigger than size of destination "
  119. "buffer");
  120. extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest,
  121. const wchar_t *__restrict __src,
  122. size_t __destlen) __THROW;
  123. extern wchar_t *__REDIRECT_NTH (__wcscat_alias,
  124. (wchar_t *__restrict __dest,
  125. const wchar_t *__restrict __src), wcscat);
  126. extern wchar_t *__wcsncat_chk (wchar_t *__restrict __dest,
  127. const wchar_t *__restrict __src,
  128. size_t __n, size_t __destlen) __THROW;
  129. extern wchar_t *__REDIRECT_NTH (__wcsncat_alias,
  130. (wchar_t *__restrict __dest,
  131. const wchar_t *__restrict __src,
  132. size_t __n), wcsncat);
  133. extern int __swprintf_chk (wchar_t *__restrict __s, size_t __n,
  134. int __flag, size_t __s_len,
  135. const wchar_t *__restrict __format, ...)
  136. __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 6))) */;
  137. extern int __REDIRECT_NTH_LDBL (__swprintf_alias,
  138. (wchar_t *__restrict __s, size_t __n,
  139. const wchar_t *__restrict __fmt, ...),
  140. swprintf);
  141. extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
  142. int __flag, size_t __s_len,
  143. const wchar_t *__restrict __format,
  144. __gnuc_va_list __arg)
  145. __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
  146. extern int __REDIRECT_NTH_LDBL (__vswprintf_alias,
  147. (wchar_t *__restrict __s, size_t __n,
  148. const wchar_t *__restrict __fmt,
  149. __gnuc_va_list __ap), vswprintf);
  150. #if __USE_FORTIFY_LEVEL > 1
  151. extern int __fwprintf_chk (__FILE *__restrict __stream, int __flag,
  152. const wchar_t *__restrict __format, ...);
  153. extern int __wprintf_chk (int __flag, const wchar_t *__restrict __format,
  154. ...);
  155. extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag,
  156. const wchar_t *__restrict __format,
  157. __gnuc_va_list __ap);
  158. extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format,
  159. __gnuc_va_list __ap);
  160. #endif
  161. extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n,
  162. __FILE *__restrict __stream) __wur;
  163. extern wchar_t *__REDIRECT (__fgetws_alias,
  164. (wchar_t *__restrict __s, int __n,
  165. __FILE *__restrict __stream), fgetws) __wur;
  166. extern wchar_t *__REDIRECT (__fgetws_chk_warn,
  167. (wchar_t *__restrict __s, size_t __size, int __n,
  168. __FILE *__restrict __stream), __fgetws_chk)
  169. __wur __warnattr ("fgetws called with bigger size than length "
  170. "of destination buffer");
  171. #ifdef __USE_GNU
  172. extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size,
  173. int __n, __FILE *__restrict __stream)
  174. __wur;
  175. extern wchar_t *__REDIRECT (__fgetws_unlocked_alias,
  176. (wchar_t *__restrict __s, int __n,
  177. __FILE *__restrict __stream), fgetws_unlocked)
  178. __wur;
  179. extern wchar_t *__REDIRECT (__fgetws_unlocked_chk_warn,
  180. (wchar_t *__restrict __s, size_t __size, int __n,
  181. __FILE *__restrict __stream),
  182. __fgetws_unlocked_chk)
  183. __wur __warnattr ("fgetws_unlocked called with bigger size than length "
  184. "of destination buffer");
  185. #endif
  186. extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar,
  187. mbstate_t *__restrict __p,
  188. size_t __buflen) __THROW __wur;
  189. extern size_t __REDIRECT_FORTIFY_NTH (__wcrtomb_alias,
  190. (char *__restrict __s, wchar_t __wchar,
  191. mbstate_t *__restrict __ps), wcrtomb) __wur;
  192. extern size_t __mbsrtowcs_chk (wchar_t *__restrict __dst,
  193. const char **__restrict __src,
  194. size_t __len, mbstate_t *__restrict __ps,
  195. size_t __dstlen) __THROW;
  196. extern size_t __REDIRECT_NTH (__mbsrtowcs_alias,
  197. (wchar_t *__restrict __dst,
  198. const char **__restrict __src,
  199. size_t __len, mbstate_t *__restrict __ps),
  200. mbsrtowcs);
  201. extern size_t __REDIRECT_NTH (__mbsrtowcs_chk_warn,
  202. (wchar_t *__restrict __dst,
  203. const char **__restrict __src,
  204. size_t __len, mbstate_t *__restrict __ps,
  205. size_t __dstlen), __mbsrtowcs_chk)
  206. __warnattr ("mbsrtowcs called with dst buffer smaller than len "
  207. "* sizeof (wchar_t)");
  208. extern size_t __wcsrtombs_chk (char *__restrict __dst,
  209. const wchar_t **__restrict __src,
  210. size_t __len, mbstate_t *__restrict __ps,
  211. size_t __dstlen) __THROW;
  212. extern size_t __REDIRECT_NTH (__wcsrtombs_alias,
  213. (char *__restrict __dst,
  214. const wchar_t **__restrict __src,
  215. size_t __len, mbstate_t *__restrict __ps),
  216. wcsrtombs);
  217. extern size_t __REDIRECT_NTH (__wcsrtombs_chk_warn,
  218. (char *__restrict __dst,
  219. const wchar_t **__restrict __src,
  220. size_t __len, mbstate_t *__restrict __ps,
  221. size_t __dstlen), __wcsrtombs_chk)
  222. __warnattr ("wcsrtombs called with dst buffer smaller than len");
  223. #ifdef __USE_XOPEN2K8
  224. extern size_t __mbsnrtowcs_chk (wchar_t *__restrict __dst,
  225. const char **__restrict __src, size_t __nmc,
  226. size_t __len, mbstate_t *__restrict __ps,
  227. size_t __dstlen) __THROW;
  228. extern size_t __REDIRECT_NTH (__mbsnrtowcs_alias,
  229. (wchar_t *__restrict __dst,
  230. const char **__restrict __src, size_t __nmc,
  231. size_t __len, mbstate_t *__restrict __ps),
  232. mbsnrtowcs);
  233. extern size_t __REDIRECT_NTH (__mbsnrtowcs_chk_warn,
  234. (wchar_t *__restrict __dst,
  235. const char **__restrict __src, size_t __nmc,
  236. size_t __len, mbstate_t *__restrict __ps,
  237. size_t __dstlen), __mbsnrtowcs_chk)
  238. __warnattr ("mbsnrtowcs called with dst buffer smaller than len "
  239. "* sizeof (wchar_t)");
  240. extern size_t __wcsnrtombs_chk (char *__restrict __dst,
  241. const wchar_t **__restrict __src,
  242. size_t __nwc, size_t __len,
  243. mbstate_t *__restrict __ps, size_t __dstlen)
  244. __THROW;
  245. extern size_t __REDIRECT_NTH (__wcsnrtombs_alias,
  246. (char *__restrict __dst,
  247. const wchar_t **__restrict __src,
  248. size_t __nwc, size_t __len,
  249. mbstate_t *__restrict __ps), wcsnrtombs);
  250. extern size_t __REDIRECT_NTH (__wcsnrtombs_chk_warn,
  251. (char *__restrict __dst,
  252. const wchar_t **__restrict __src,
  253. size_t __nwc, size_t __len,
  254. mbstate_t *__restrict __ps,
  255. size_t __dstlen), __wcsnrtombs_chk)
  256. __warnattr ("wcsnrtombs called with dst buffer smaller than len");
  257. #endif
  258. #ifdef __USE_MISC
  259. extern size_t __wcslcpy_chk (wchar_t *__dest, const wchar_t *__src, size_t __n,
  260. size_t __destlen) __THROW;
  261. extern size_t __REDIRECT_NTH (__wcslcpy_alias,
  262. (wchar_t *__dest, const wchar_t *__src,
  263. size_t __n), wcslcpy);
  264. extern size_t __wcslcat_chk (wchar_t *__dest, const wchar_t *__src, size_t __n,
  265. size_t __destlen) __THROW;
  266. extern size_t __REDIRECT_NTH (__wcslcat_alias,
  267. (wchar_t *__dest, const wchar_t *__src,
  268. size_t __n), wcslcat);
  269. #endif /* __USE_MISC */
  270. #endif /* bits/wchar2-decl.h. */