mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-16 15:40:43 +08:00
c_io_libio.cc (basic_file<char>::__basic_file): Don't pass a NULL _IO_wide_data to _IO_no_init when...
* 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
This commit is contained in:
parent
f80c00cc55
commit
3c97056f54
@ -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.
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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<>
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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) */
|
||||
|
@ -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. */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
@ -31,8 +31,10 @@
|
||||
|
||||
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;
|
||||
|
@ -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 */
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user