]> pd.if.org Git - pdclib.old/blobdiff - internals/_PDCLIB_encoding.h
PDCLIB-2 PDCLIB-12: Move _PDCLIB_mbstate_t to _PDCLIB_encoding.h, the new home for...
[pdclib.old] / internals / _PDCLIB_encoding.h
index b29fe93d0a8acba5d715c1326cdb24740a14c60b..01e60a1916389b0263827bf5d597400ce5ffebc8 100644 (file)
@@ -9,13 +9,40 @@
 #include "_PDCLIB_int.h"
 
 #ifndef __cplusplus
-typedef _PDCLIB_int_least16_t   _PDCLIB_char16_t;
-typedef _PDCLIB_int_least32_t   _PDCLIB_char32_t;
+typedef _PDCLIB_int16_t         _PDCLIB_char16_t;
+typedef _PDCLIB_int32_t         _PDCLIB_char32_t;
 #else
 typedef char16_t                _PDCLIB_char16_t;
 typedef char32_t                _PDCLIB_char32_t;
 #endif
 
+/* -------------------------------------------------------------------------- */
+/* mbstate_t                                                                  */
+/* -------------------------------------------------------------------------- */
+
+typedef struct _PDCLIB_mbstate_t {
+    union {
+        /* Is this the best way to represent this? Is this big enough? */
+        _PDCLIB_uint64_t _St64[15];
+        _PDCLIB_uint32_t _St32[31];
+        _PDCLIB_uint16_t _St16[62];
+        unsigned char    _StUC[124];
+        signed   char    _StSC[124];
+                 char    _StC [124];
+    };
+
+    union {
+        /* c16/related functions: Surrogate storage
+         *
+         * If zero, no surrogate pending. If nonzero, surrogate.
+         */
+        _PDCLIB_uint16_t     _Surrogate;
+
+        /* Reserved for potential mbtoutf8/etc functions */
+        unsigned char        _U8[4];
+    };
+} _PDCLIB_mbstate_t;
+
 #ifdef _PDCLIB_WCHAR_IS_UCS2
 /* Must be cauued with bufsize >= 1, in != NULL, out != NULL, ps != NULL
  *
@@ -27,7 +54,7 @@ typedef char32_t                _PDCLIB_char32_t;
 static inline int _PDCLIB_wcrtoc32(
             _PDCLIB_char32_t    *_PDCLIB_restrict   out, 
     const   _PDCLIB_wchar_t     *_PDCLIB_restrict   in,
-            _PDCLIB__PDCLIB_size_t                          bufsize,
+            _PDCLIB_size_t                          bufsize,
             _PDCLIB_mbstate_t   *_PDCLIB_restrict   ps  
 )
 {
@@ -68,7 +95,7 @@ static inline int _PDCLIB_wcrtoc32(
 static inline _PDCLIB_size_t _PDCLIB_c32rtowc(
             _PDCLIB_wchar_t     *_PDCLIB_restrict   out,
     const   _PDCLIB_char32_t    *_PDCLIB_restrict   in,
-            _PDCLIB__PDCLIB_size_t                          bufsize,
+            _PDCLIB_size_t                          bufsize,
             _PDCLIB_mbstate_t   *_PDCLIB_restrict   ps
 )
 {
@@ -99,7 +126,7 @@ static inline _PDCLIB_size_t _PDCLIB_c32rtowc(
 static inline _PDCLIB_size_t _PDCLIB_wcrtoc32(
             _PDCLIB_char32_t    *_PDCLIB_restrict   out, 
     const   _PDCLIB_wchar_t     *_PDCLIB_restrict   in,
-            _PDCLIB__PDCLIB_size_t                          bufsize,
+            _PDCLIB_size_t                          bufsize,
             _PDCLIB_mbstate_t   *_PDCLIB_restrict   ps  
 )
 {
@@ -110,7 +137,7 @@ static inline _PDCLIB_size_t _PDCLIB_wcrtoc32(
 static inline _PDCLIB_size_t _PDCLIB_c32rtowc(
             _PDCLIB_wchar_t     *_PDCLIB_restrict   out,
     const   _PDCLIB_char32_t    *_PDCLIB_restrict   in,
-            _PDCLIB__PDCLIB_size_t                          bufsize,
+            _PDCLIB_size_t                          bufsize,
             _PDCLIB_mbstate_t   *_PDCLIB_restrict   ps
 )
 {
@@ -128,7 +155,7 @@ typedef struct {
      * _P_outsize or _P_insize reached zero and no coding errors were 
      * encountered), else return false.
      */
-    _PDCLIB_bool_t (*__mbtoc32)(
+    _PDCLIB_bool (*__mbtoc32)(
         _PDCLIB_char32_t       **_PDCLIB_restrict   _P_outbuf,
         _PDCLIB_size_t          *_PDCLIB_restrict   _P_outsz,
         const char             **_PDCLIB_restrict   _P_inbuf,
@@ -136,7 +163,7 @@ typedef struct {
         _PDCLIB_mbstate_t       *_PDCLIB_restrict   _P_ps
     );
 
-    _PDCLIB_bool_t (*__c32tomb)(
+    _PDCLIB_bool (*__c32tomb)(
         char                   **_PDCLIB_restrict  _P_outbuf,
         _PDCLIB_size_t          *_PDCLIB_restrict  _P_outsz,
         const _PDCLIB_char32_t **_PDCLIB_restrict  _P_inbuf,