]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c_io_libio.cc (basic_file<char>::__basic_file): Don't pass a NULL _IO_wide_data to...
authorMark Mitchell <mark@codesourcery.com>
Sun, 29 Oct 2000 21:52:54 +0000 (21:52 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Sun, 29 Oct 2000 21:52:54 +0000 (21:52 +0000)
* config/c_io_libio.cc (basic_file<char>::__basic_file):
Don't pass a NULL _IO_wide_data to _IO_no_init when
_GLIBCPP_USE_WCHAR_T is not defined.
* config/c_io_libio.h (_IO_codecvt): Don't declare when
_GLIBCPP_USE_WCHAR_T is not defined.
* config/c_io_libio_codecvt.c: Don't compile it
when _GLIBCPP_USE_WCHAR_T is not defined.
* include/bits/codecvt.h (codecvt<_InternT, _ExternT, __enc_traits):
Don't define this specialization when _GLIBCPP_USE_WCHAR_T
is not defined.
* include/bits/locale_facets.h (<bits/std_cwctype.h>): Don't
include it when _GLIBCPP_USE_WCHAR_T is not defined.
* src/codecvt.cc (__enc_traits::_S_max_size): Don't define
when _GLIBCPP_USE_WCHAR_T is not defined.
* src/localename.cc (locale::_Impl::_M_construct_collate):
Don't call wide-character functions when _GLIBCPP_USE_WCHAR_T is
not defined.
(locale::_Impl::_M_construct_ctype): Likewise.
(locale::_Impl::_M_construct_monetary): Likewise.
(locale::_Impl::_M_construct_numeric): Likewise.
(locale::_Impl::_M_construct_time): Likewise.
(locale::_Impl::_M_construct_messages): Likewise.

* iofopen.c (_IO_new_fopen): Don't define `_IO_wide_data wd'
if _GLIBCPP_USE_WCHAR_T is not defined.
* iofwide.c: Don't define codecvt functions when
_GLIBCPP_USE_WCHAR_T is not defined.
(_IO_fwide): Don't try to put the stream in wide mode when
_GLIBCPP_USE_WCHAR_T is not defined.
* libio.h (_IO_wide_data): Define it as an incomplete struct
when _GLIBCPP_USE_WCHAR_T is not defined.
* wfiledoalloc.c: Don't define anything when
_GLIBCPP_USE_WCHAR_T is not defined.
* wfileops.c: Likewise.
* wgenops.c: Likewise.

From-SVN: r37131

15 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/config/c_io_libio.cc
libstdc++-v3/config/c_io_libio.h
libstdc++-v3/config/c_io_libio_codecvt.c
libstdc++-v3/include/bits/codecvt.h
libstdc++-v3/include/bits/locale_facets.h
libstdc++-v3/libio/ChangeLog
libstdc++-v3/libio/iofopen.c
libstdc++-v3/libio/iofwide.c
libstdc++-v3/libio/libio.h
libstdc++-v3/libio/wfiledoalloc.c
libstdc++-v3/libio/wfileops.c
libstdc++-v3/libio/wgenops.c
libstdc++-v3/src/codecvt.cc
libstdc++-v3/src/localename.cc

index efe4291224ed4813f2d03c5c8d1cd8579142dc33..6b4d2af8e24823a0029c980fa4f6f69baffc5060 100644 (file)
@@ -1,6 +1,29 @@
 2000-10-29  Mark Mitchell  <mark@codesourcery.com>
 
-       * acinclue.m4 (GLIBCPP_ENABLE_ATOMICITY): Handle IRIX.
+       * config/c_io_libio.cc (basic_file<char>::__basic_file): 
+       Don't pass a NULL _IO_wide_data to _IO_no_init when
+       _GLIBCPP_USE_WCHAR_T is not defined.
+       * config/c_io_libio.h (_IO_codecvt): Don't declare when 
+       _GLIBCPP_USE_WCHAR_T is not defined.
+       * config/c_io_libio_codecvt.c: Don't compile it 
+       when _GLIBCPP_USE_WCHAR_T is not defined.
+       * include/bits/codecvt.h (codecvt<_InternT, _ExternT, __enc_traits):
+       Don't define this specialization when _GLIBCPP_USE_WCHAR_T 
+       is not defined.
+       * include/bits/locale_facets.h (<bits/std_cwctype.h>): Don't
+       include it when _GLIBCPP_USE_WCHAR_T is not defined. 
+       * src/codecvt.cc (__enc_traits::_S_max_size): Don't define
+       when _GLIBCPP_USE_WCHAR_T is not defined.
+       * src/localename.cc (locale::_Impl::_M_construct_collate):
+       Don't call wide-character functions when _GLIBCPP_USE_WCHAR_T is 
+       not defined.
+       (locale::_Impl::_M_construct_ctype): Likewise.
+       (locale::_Impl::_M_construct_monetary): Likewise.
+       (locale::_Impl::_M_construct_numeric): Likewise.
+       (locale::_Impl::_M_construct_time): Likewise.
+       (locale::_Impl::_M_construct_messages): Likewise.
+       
+       * acinclude.m4 (GLIBCPP_ENABLE_ATOMICITY): Handle IRIX.
        * aclocal.m4: Regenerated.
        * configure: Likewise.
        * config/os/irix/bits/atomicity.h: New file.
index 9712d264ed914de5fb4286f95d02b4d3b4fe76e7..8c465ae8fc55746108dcbfc0fce00e4e52448674 100644 (file)
@@ -204,7 +204,11 @@ namespace std {
     _lock = __lock;
 #endif
     // Don't set the orientation of the stream when initializing.
+#ifdef _GLIBCPP_USE_WCHAR_T
     _IO_no_init(this, 0, 0, &_M_wfile, 0);
+#else /* !defined(_GLIBCPP_USE_WCHAR_T) */
+    _IO_no_init(this, 0, 0, NULL, 0);
+#endif /* !defined(_GLIBCPP_USE_WCHAR_T) */
     _IO_JUMPS((_IO_FILE_plus *) this) = &_IO_file_jumps;
     _IO_file_init((_IO_FILE_plus*)this);
   }
index d14ec5c352f54a77085dfb8c0492c795e7129830..c26b3c9fa560132b03a93b7e1ec50d2ab71e831d 100644 (file)
@@ -62,7 +62,9 @@ namespace std {
   typedef _IO_FILE     __c_file_type;
   typedef _IO_wide_data __c_wfile_type;
 
+#ifdef _GLIBCPP_USE_WCHAR_T
   extern "C" _IO_codecvt __c_libio_codecvt;
+#endif /* defined (_GLIBCPP_USE_WCHAR_T) */
 
 // from ios_base.h
   struct __ios_flags
index 4fc7fc0cf0027f77f5afba98beffeac95c020655..38d8b55e0c2aed0fc534f1f6bd4a8528f554a1fa 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <libio.h>
 
+#ifdef _GLIBCPP_USE_WCHAR_T
 
 /* Prototypes of libio's codecvt functions.  */
 static enum __codecvt_result 
@@ -148,3 +149,5 @@ do_length(struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
 static int
 do_max_length(struct _IO_codecvt *codecvt)
 { return 1; }
+
+#endif /* _GLIBCPP_USE_WCHAR_T */
index 148bebc20c65a571247dab4b241c9125d974a067..738d5af36780ce7ec87549f470f202da28bfe22f 100644 (file)
@@ -303,6 +303,7 @@ namespace std
   template<typename _InternT, typename _ExternT, typename _StateT>
     locale::id codecvt<_InternT, _ExternT, _StateT>::id;
 
+#ifdef _GLIBCPP_USE_WCHAR_T
   // partial specialization
   // This specialization takes advantage of iconv to provide code
   // conversions between a large number of character encodings.
@@ -567,6 +568,7 @@ namespace std
     do_max_length() const throw()
     { return 1; }
 #endif
+#endif /* _GLIBCPP_USE_WCHAR_T */
 
   // codecvt<char, char, mbstate_t> required specialization
   template<>
index ea651307fb35f94c5da72d52af08a13ab9265e74..6525bda6dc8162d097a7c7113c5b4ec9ca4949de 100644 (file)
@@ -39,7 +39,9 @@
 #include <bits/std_ctime.h>    // For struct tm
 #include <typeinfo>            // For bad_cast, which shouldn't be here.
 #include <bits/std_ios.h>      // For ios_base
+#ifdef _GLIBCPP_USE_WCHAR_T
 #include <bits/std_cwctype.h>  // For wctype_t
+#endif /* _GLIBCPP_USE_WCHAR_T */
 
 namespace std
 {
index f4e7664df7e4eabbce794e02fdbcd9faac28f70a..dd21399d9519af216cc7bab3128745e25c172e8c 100644 (file)
@@ -1,5 +1,18 @@
 2000-10-29  Mark Mitchell  <mark@codesourcery.com>
 
+       * iofopen.c (_IO_new_fopen): Don't define `_IO_wide_data wd'
+       if _GLIBCPP_USE_WCHAR_T is not defined.
+       * iofwide.c: Don't define codecvt functions when 
+       _GLIBCPP_USE_WCHAR_T is not defined.
+       (_IO_fwide): Don't try to put the stream in wide mode when
+       _GLIBCPP_USE_WCHAR_T is not defined.
+       * libio.h (_IO_wide_data): Define it as an incomplete struct
+       when _GLIBCPP_USE_WCHAR_T is not defined.
+       * wfiledoalloc.c: Don't define anything when 
+       _GLIBCPP_USE_WCHAR_T is not defined.
+       * wfileops.c: Likewise.
+       * wgenops.c: Likewise.
+       
        * _G_config.h (_G_USING_THUNKS): Allow overrides from
        OS-configuration files.
        * libioP.h: Test _G_USING_THUNKS with #if, rather than #ifdef.
index f34fd1e51524ce2c17dc905afadedf43b49539cf..2dcdee0235cbf51fcb1b237eea4288e5482dc748 100644 (file)
@@ -44,7 +44,9 @@ _IO_new_fopen (filename, mode)
 #ifdef _IO_MTSAFE_IO
     _IO_lock_t lock;
 #endif
+#if defined _LIBC || defined _GLIBCPP_USE_WCHAR_T
     struct _IO_wide_data wd;
+#endif /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */
   } *new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE));
 
   if (new_f == NULL)
index 0ec1182b4ff1f29fb2355d116f7d34ec4fc2cd44..76a20ce3fb43eecf4f5516129c77c1a62142756c 100644 (file)
@@ -38,7 +38,7 @@
 # include <langinfo.h>
 #endif
 
-
+#ifdef _GLIBCPP_USE_WCHAR_T
 /* Prototypes of libio's codecvt functions.  */
 static enum __codecvt_result do_out (struct _IO_codecvt *codecvt,
                                     __c_mbstate_t *statep,
@@ -83,7 +83,7 @@ static struct __gconv_trans_data libio_translit =
   .__trans_fct = __gconv_transliterate
 };
 #endif
-
+#endif /* defined(GLIBCPP_USE_WCHAR_T) */
 
 /* Return orientation of stream.  If mode is nonzero try to change
    the orientation first.  */
@@ -104,6 +104,7 @@ _IO_fwide (fp, mode)
   /* Set the orientation appropriately.  */
   if (mode > 0)
     {
+#ifdef _GLIBCPP_USE_WCHAR_T
       struct _IO_codecvt *cc = fp->_codecvt;
 
       fp->_wide_data->_IO_read_ptr = fp->_wide_data->_IO_read_end;
@@ -174,6 +175,9 @@ _IO_fwide (fp, mode)
 
       /* From now on use the wide character callback functions.  */
       ((struct _IO_FILE_plus *) fp)->vtable = fp->_wide_data->_wide_vtable;
+#else /* !defined(_GLIBCPP_USE_WCHAR_T) */
+      mode = fp->_mode;
+#endif /* !defined(_GLIBCPP_USE_WCHAR_T) */
     }
 
   /* Set the mode now.  */
@@ -186,6 +190,7 @@ _IO_fwide (fp, mode)
 weak_alias (_IO_fwide, fwide)
 #endif
 
+#ifdef _GLIBCPP_USE_WCHAR_T
 
 static enum __codecvt_result
 do_out (struct _IO_codecvt *codecvt, __c_mbstate_t *statep,
@@ -467,3 +472,5 @@ do_max_length (struct _IO_codecvt *codecvt)
   return MB_CUR_MAX;
 #endif
 }
+
+#endif /* defined(_GLIBCPP_USE_WCHAR_T) */
index fb404b652838061dcb7cf65b3345fc26395eca91..6e5a3837551978a8c3823d98437e995570f331c6 100644 (file)
@@ -254,7 +254,13 @@ struct _IO_wide_data
   struct _IO_jump_t *_wide_vtable;
 #endif
 };
-#endif
+#else /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */
+/* Because _IO_no_init unconditionally takes a `_IO_wide_data*' as its
+   last parameter we must still define this type.  We intentionally
+   leave it incomplete to prevent any use of this type when we are not
+   supporting wide characters.  */
+struct _IO_wide_data;
+#endif /* !(defined _LIBC || defined _GLIBCPP_USE_WCHAR_T) */
 
 struct _IO_FILE {
   int _flags;          /* High-order word is _IO_MAGIC; rest is flags. */
index 4e4ca67b2d3bb6fd0e4febca1e98f7bb065dfac0..9c05162041485f93c3cfc6083adaf998f8c9d10a 100644 (file)
@@ -46,6 +46,7 @@
 # define _POSIX_SOURCE
 #endif
 #include "libioP.h"
+#ifdef _GLIBCPP_USE_WCHAR_T
 #include <sys/types.h>
 #include <sys/stat.h>
 #ifdef __STDC__
@@ -103,3 +104,5 @@ _IO_wfile_doallocate (fp)
     fp->_flags |= _IO_LINE_BUF;
   return 1;
 }
+
+#endif /* _GLIBCPP_USE_WCHAR_T */
index 376014b2d7c02d1bc2f46127e941f721d48b119d..1dd524a3ffb25d3c0aa438ed6b779743cbb17f2b 100644 (file)
@@ -27,6 +27,7 @@
 
 #include <assert.h>
 #include <libioP.h>
+#ifdef _GLIBCPP_USE_WCHAR_T
 #include <wchar.h>
 #ifdef HAVE_GCONV_H
 #  include <gconv.h>
@@ -749,3 +750,5 @@ struct _IO_jump_t _IO_wfile_jumps =
   JUMP_INIT(showmanyc, _IO_default_showmanyc),
   JUMP_INIT(imbue, _IO_default_imbue)
 };
+
+#endif /* _GLIBCPP_USE_WCHAR_T */
index fa0aab36af050bb7ba58724200e94450d9d9a62f..748545242953f907276edd038c042ddffa4a8a94 100644 (file)
@@ -28,6 +28,7 @@
 /* Generic or default I/O operations. */
 
 #include "libioP.h"
+#ifdef _GLIBCPP_USE_WCHAR_T
 #ifdef __STDC__
 #include <stdlib.h>
 #endif
@@ -751,3 +752,5 @@ _IO_unsave_wmarkers (fp)
   if (_IO_have_backup (fp))
     _IO_free_wbackup_area (fp);
 }
+
+#endif /* _GLIBCPP_USE_WCHAR_T */
index 839a9763167e16340b68a6dbbab775559db5e8cb..688381f07c63dd35b61c33fab29f5b4a50f75ca4 100644 (file)
 
 namespace std {
 
+#ifdef _GLIBCPP_USE_WCHAR_T
   // Definitions for static const data members of __enc_traits.
   const int __enc_traits::_S_max_size;
+#endif /* _GLIBCPP_USE_WCHAR_T */
 
   // codecvt<char, char, mbstate_t> required specialization
   locale::id codecvt<char, char, mbstate_t>::id;
index 3d91e51e36bfa9516c010b4bc6a85c1d771a16a1..ee422c779c89614ab34055f314e3840577b05155 100644 (file)
@@ -223,58 +223,84 @@ namespace std {
   locale::_Impl::_M_construct_collate(const char* __name)
   {
     _M_facet_init(new collate_byname<char>(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new collate_byname<wchar_t>(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
   }
 
   void 
   locale::_Impl::_M_construct_ctype(const char* __name)
   {
     _M_facet_init(new ctype_byname<char>(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new ctype_byname<wchar_t>(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
     _M_facet_init(new codecvt_byname<char, char, mbstate_t>(__name));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new codecvt_byname<wchar_t, char, mbstate_t>(__name));
+#endif /* _GLIBCPP_USE_WCHAR_T */
   }
     
   void 
   locale::_Impl::_M_construct_monetary(const char* __name)
   {
     _M_facet_init(new moneypunct_byname<char, false>(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new moneypunct_byname<wchar_t, false>(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
     _M_facet_init(new moneypunct_byname<char, true >(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new moneypunct_byname<wchar_t, true >(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
 
     _M_replace_facet(locale::_S_classic, &money_get<char>::id);
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_replace_facet(locale::_S_classic, &money_get<wchar_t>::id);
+#endif /* _GLIBCPP_USE_WCHAR_T */
     _M_replace_facet(locale::_S_classic, &money_put<char>::id);
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_replace_facet(locale::_S_classic, &money_put<wchar_t>::id);
+#endif /* _GLIBCPP_USE_WCHAR_T */
   }
     
   void 
   locale::_Impl::_M_construct_numeric(const char* __name)
   {
     _M_facet_init(new numpunct_byname<char>(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new numpunct_byname<wchar_t>(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
 
     _M_replace_facet(locale::_S_classic, &num_get<char>::id);
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_replace_facet(locale::_S_classic, &num_get<wchar_t>::id);
+#endif /* _GLIBCPP_USE_WCHAR_T */
     _M_replace_facet(locale::_S_classic, &num_put<char>::id);
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_replace_facet(locale::_S_classic, &num_put<wchar_t>::id);
+#endif /* _GLIBCPP_USE_WCHAR_T */
   }
     
   void 
   locale::_Impl::_M_construct_time(const char* __name)
   {
     _M_facet_init(new time_get_byname<char>(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new time_get_byname<wchar_t>(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
     _M_facet_init(new time_put_byname<char>(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new time_put_byname<wchar_t>(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
   }
     
   void 
   locale::_Impl::_M_construct_messages(const char* __name)
   {
     _M_facet_init(new messages_byname<char>(__name, 0));
+#ifdef _GLIBCPP_USE_WCHAR_T
     _M_facet_init(new messages_byname<wchar_t>(__name, 0));
+#endif /* _GLIBCPP_USE_WCHAR_T */
   }
 }