head	1.8;
access;
symbols;
locks; strict;
comment	@# @;


1.8
date	99.12.18.19.24.23;	author gdr;	state Exp;
branches;
next	1.7;

1.7
date	99.12.18.10.16.41;	author bkoz;	state Exp;
branches;
next	1.6;

1.6
date	99.12.16.07.30.23;	author gdr;	state Exp;
branches;
next	1.5;

1.5
date	99.12.15.04.52.18;	author gdr;	state Exp;
branches;
next	1.4;

1.4
date	99.12.13.23.00.17;	author bkoz;	state Exp;
branches;
next	1.3;

1.3
date	99.10.26.01.52.10;	author gdr;	state Exp;
branches;
next	1.2;

1.2
date	99.05.18.13.40.04;	author gdr;	state Exp;
branches;
next	1.1;

1.1
date	99.05.11.23.50.48;	author bkoz;	state Exp;
branches;
next	;


desc
@@


1.8
log
@1999-12-18  Gabriel Dos Reis  <dosreis@@cmla.ens-cachan.fr>

        * docs/17_intro/TODO: Update
        * docs/17_intro/RELEASE-NOTES (New): Update.
@
text
@- exception specifications need to be reviewed for all parts of the
library support and utility areas, particularly <new>. 

- exception/stdexcept headers will do, but are not cleanly
implemented. Also, some kind of consensus needs to be established on
if the presence of stdexcept should be assumed in iostreams
headers. V3 currently takes the position that references to stdexcept
classes necessitates the inclusion of stdexcept, other library vendors
seem less inclined.

- scoping/linking issues WRT to C structs need to be worked out. See
Nathan's commentary on cantrip, http://www.cantrip.org/cheaders.html

- triglyphs/ciso646: and, and_eq, bitand, bitor, compl, not, not_eq,
or, or_eq, xor, xor_eq, true && 45, true and false, true or 45, etc.
(bool and int), etc.

- operator!= and utility/rel_ops operators need to be made safe with
string and vector iterator classes. basic_string::reverse_iterator may
be implemented incorrectly, or need things like
operator==(__normal_iterator, const char*&), and swap(vector)

- SGI iterator/allocator classes are not strictly conforming. In
particular, raw_storage_iterator, mem_fun1_ref_t are all problem
areas.

- auto_ptr: seems to be some disagreement on what is
standards-conformant behavior, specially on conversion operators.

- vswprintf, vwprintf, wprintf, wscanf, wcsftime, swscanf, fgetws,
fputwc, fputws, fwide, fwprintf, fwscanf, getwc, getwchar, putwc, etc:
C library wchar_t functionality.

- facets heirarchies seem on occasion give odd errors to conformace
tests. Need to test that they are constructed in a strictly-conforming
manner.

- stuff like `LC_CTYPE' is not found. Locale oddness?

- header optimizations to keep compile times reasonable are most
certainly detracting from full conformance, as many templatized
definitions are squired away and pre-instantiated, so that the
compiler doesn't have to parse them. Areas effected: valarray, string,
all of iostreams and locales.

- basic_string<wchar_T> not implemented

- ostreambuf_iterator has not been made standards-conformant (both
char and wchar_t) In particular, look at 
time_put::put(OutIt, ios_base&, char, const tm*, const char*, const
char*) const

- C-related issues WRT to libio and filepos, mbstate_t. Need to
straighten this stuff out with the glibc-2.2 libio. Also may need to
define operators for mbstate_t so that 'mbstate_t& == mbstate_t' is
something that can be done.

- codecvt<wchar_t> has not been adequently handled in terms of the
locale bits. (The io bits are done, with the exception of one
ostream<wchar_t> inserter for char.

- bool locale::operator() looks to be non-conformant

- num_get<char>::do_get<user_defined_type> 
  num_put<char>::do_put<user_defined_type> 
num_put<char, char *>::do_put(char *, ios_base &, char, long double) const
num_put<char, char *>::do_put(char *, ios_base &, char, double) const
num_put<char, char *>::do_put(char *, ios_base &, char, void const *) const
etc.
appear to be broken, or headers mashed, or undefined.

- locale and std::combine not working correctly
 template <class _Facet> class locale locale::combine(const locale &)

- ctype_byname<char>: check to make sure derivation standards-conformant.

- codecvt::unshift not working for char, wchar_t

- no match for money_base::pattern &[int]

- money_get::do_get weirded out for wchar_t

- looks like deque::get_allocator not standards conformant or deque
allocator non-standard.

- list::assignment operator needs const_cast

- a cleaner division between pointers-to-value_type and true iterators
needs to be drawn throughout the entire STL implementation.

- priority_queue conversions may be non-conformant

- istream_iterator uses 2 arguments, should it be 4?

- 'do the right thing' ctor fixing needs to be done for string. This
is still subject to some debate on the library issues list, so I
suggest punting till the dust clears.

- the ctype and "tolower" "isspace" stuff really needs to be sorted
out. A portable, cross platform interface needs to be defined. A
"fixincludes"-like solution needs to be put into place to prune
headers. The "C" functions need to be able to work in std:: and "C"
namespaces.

- complex<float> seems to be the single largest source of internal
compiler errors when compiling the c++ library across non-x86
platforms. Somebody needs to make sure the complex support builtin to
gcc is actually working. Just as a "for-instance" these things give ICEs:
class complex<float>& complex<float>::operator-=<float>(const complex<float> &)
class complex<float>& complex<float>::operator/=<float>(const complex<float> &)
class complex<float>& complex<float>::operator+=<float>(const complex<float> &)
class complex<float>& complex<float>::operator-=<float>(const complex<float> &)
class complex<float>& complex<float>::operator*=<float>(const complex<float> &)

- appears as if the following extraction operators are undefined:
operator>>(istream, complex<float>&)
operator>>(istream, complex<double>&)
operator>>(istream, complex<long double>&)
operator>>(istream, complex<user_defined_type>&)
sqrt (const complex<T>& x)

- Protect valarray::result_type (not Standard) and make it work with
  the various helper classes.

- Make sure `valarray<bool> & == _Expr<_BinClos<logical_or,_ValArray,_ValArray,double,double>,bool>' 
  is defined

- long double std_cmath stuff looks weak

- fwide not declared. C++ wchar_t issues completely unaddressed.

- known issues WRT to io and corner cases with the buffers. This is
still subject to interpretation, and I think the current
implementation is credible.

- All of the Library working group closed issues need to be
addressed. Some of them proposed resolutions are already in the v-3
sources, with macro-guards.

- add deprecated features from Annex D
  - add #ifdef wrappers for all of them, including in each
    C <xxx.h> header
  - replace typedef'd non-deprecated types with more type-safe equivalents.

- add optimization hooks (esp. whitespace eating) to streambuf
  - add _M_begin() and _M_end() to streambuf
  - add algorithm specializations for [io]streambuf_iterator (copy find etc.)

- fix template members of basic_string<> to overload iterators and
  non-iterators properly.  (This is the infamous hack as in vector<> etc
  23.1.1 para 10.)

- write filebuf for wide characters

- replace stl/bits/stl_config 

- add feature-test macros for non-standard extensions

- move major extensions into separate namespace (e.g. stl::)

- create MT abstraction layer

- add MT support for locale, string, istream, ostream

- specialize functions that use_facet<> calls on failure for the required 
  facets, and construct them lazily so unused facets need not be constructed 
  when the locale is. 

- get mknumeric_limits coope with 'exotic' OSes.

- <cmath>: provide missing names. 

- provide testsuites for numerics.

- add FAQ entries -- improve the install instructions

- add HOWTO entries
@


1.7
log
@
1999-12-17  Benjamin Kosnik  <bkoz@@milou.cygnus.com>

	* bits/c++config.h.in (__GLIBCPP__): Bump.
	* docs/17_intro/RELEASE-NOTES: Update, Gaby please add your stuff.
	* docs/17_intro/TODO: Update.

	* bits/locale_facets.h: Touch this too.
	* bits/localefwd.h: Add typedefs for loooooong vector names.
	* bits/locale_facets.tcc (locale::operator()): Need parens.
	(has_facet): Simplify.
	* src/locale-inst.cc: Add instantiations.
	* src/locale.cc: Tweaks.

	* bits/std_streambuf.h: Move indeterminates into. .
	* bits/std_fstream.h: Here.
	* bits/fstream.tcc (underflow): Rewind just for ios_base::out
	streams.
	* bits/sstream.tcc: Very minor formatting tweaks.
	* bits/std_streambuf.h (_M_set_determinate): If exclusively an
	input buffer, set _M_buf to offset.
	* bits/istream.tcc (std): Tweaks.
	* testsuite/27_io/istream_unformatted.cc (test05): More tweaks,
	include fstream.
	* testsuite/27_io/filebuf.cc: Tweaks.

1999-12-13  Benjamin Kosnik  <bkoz@@cygnus.com>

	* bits/istream.tcc (seekg): Don't set _M_gcount.
	(tellg): Same.
	* bits/fstream.tcc (filebuf::underflow): Re-sync
	external byte sequence's input buffer only. . .
	* testsuite/27_io/istream_unformatted.cc (test04): New tests for
	tellg, seekg and filebufs.
	(test05): Same for stringbufs.
	* testsuite/27_io/istream_unformatted-2.tst: New file.
	* testsuite/27_io/istream_unformatted-1.tst: New file.
	* testsuite/27_io/istream_unformatted-1.txt: New file.
	* testsuite/21_strings/inserters_extractors.cc (test05): Change
	output file.
@
text
@d122 2
a123 9
- slice_array<char>::slice_array(const slice_array<char> &)' is private
`gslice_array<char>::gslice_array(const gslice_array<char> &)' is private
`mask_array<char>::mask_array(const mask_array<char> &)' is private
`indirect_array<char>::indirect_array(const indirect_array<char> &)' is private
 cannot derive from these classes, or the copy ctors are not public?

- valarray::result_type is it defined? How about class
_UnBase<logical_not, valarray<double>::result_type? need it for
_UnClos<logical_not, _ValArray, double>
d125 2
a126 5
- valarray + tanh not working for long double?
- valarray + atan2 not working for long double?

- `valarray<bool> & == _Expr<_BinClos<logical_or,_ValArray,_ValArray,double,double>,bool>'
  undefined
d171 1
a171 1
- <cmath>: provide missing names.
d176 2
@


1.6
log
@1999-12-16  Gabriel Dos Reis  <dosreis@@cmla.ens-cachan.fr>

        * bits/valarray_array.h (__valarray_sum): Use operator+=, not
        operator+.
        * docs/17_intro/TODO: Update.
@
text
@a47 11
- locale::operator()<char>(const string&, const string&) not being
found or unimplemented.

- bool has_facet<numpunct<char>>(local const&) not found or
unimplemented.

- ctype<unsigned char>::id undefined reference -- missing instantiation?

- numpunct_byname<wchar_t>::numpunct_byname(const char*, unsigned int)
--missing instantation?

a52 9
- moneypunct_byname<wchar_t, true>::moneypunct_byname(const char*,
unsigned int) undefined reference

- messages_byname<wchar_t, true>::messages_byname(const char*,
unsigned int)
  messages_byname<char, true>::messages_byname(const char*, unsigned
int) 
undefined references

a73 3

- ctype_byname<char>::ctype_byname(char const *, unsigned int)
 undefined reference
@


1.5
log
@1999-12-15  Gabriel Dos Reis  <dosreis@@cmla.ens-cachan.fr>

        * mknumeric_limits (OUT_C): restart only if $OUT_C is present.

        * bits/std_complex.h
        (complex<float>::complex(const complex<double>&),
        complex<float>::complex(const complex<long double>&)): Define.

        * docs/17_intro/TODO: Update.
@
text
@a154 3
- valarray<user_defined_type>::sum() references binary operator +,
none defined.

@


1.4
log
@
1999-12-13  Benjamin Kosnik  <bkoz@@gnu.org>

        Efforts to get -O2 to work with -Winline -Werrors.
        * bits/valarray_array.h (__valarray_fill(_Tp*, size_t, const
        _Tp&): Remove inline declaration, as cannot be inlined and
        -Winline -Werror complains. An interesting question is why this
        cannot be inlined, as I can see no real reason to disqualify it.
        (__valarray_product(const _Tp*, const _Tp*)): Same here.
        * bits/std_valarray.h (valarray::operator[](size_t)): Same here.

        * docs/17_intro/TODO: Update.

1999-12-12  Benjamin Kosnik  <bkoz@@gnu.org>

        * bits/std_fstream.h (seekpos): Tweaks, fixes. Move definition to
        fstream.tcc.
        * bits/basic_file.h (filepos_cur()): Make pointers themselves be
        the resultant position.
        * bits/fstream.tcc (seekoff): Explicitly set return value to
        resultant external byte sequence position, not value returned from
        _M_file->seekoff. Need to make
        (seekpos): New definition.

        * bits/istream.tcc (seekg): As per Library Issues List 136, set to
        just istream. Necessary, or else tellg will give an invalid stream
        position, but seekg will return a valid stream position, which is
        not groovy: see testcase addition.
        * bits/ostream.tcc (seekp): Same.

        * bits/streambuf.tcc (_S_copy_streambufs): Simplify.
        * bits/sstream.tcc: Tweaks.
        * bits/locale_facets.tcc: Tweaks.
        (num_put::do_put(iter_type, ios_base, char_type, const void*)):
        Re-write in a way that is easier for the inliner to work with.
        * bits/ios_base.h: Use explicit static_cast<int>(...) notation.
@
text
@a127 4
- complex<float>::complex(complex<double&)
  complex<float>::complex(complex<long double&)
  are undefined

@


1.3
log
@Update
@
text
@d1 179
a179 16
- templatize iostream
  - finish streambuf
  - finish ostream
  - templatize istream
  - templatize filebuf
  - templatize ifstream
  - templatize ofstream
  - templatize fstream
  - templatize stringbuf
  - templatize stringstream
- move inappropriate inlines out of line
  - in streambuf
  - in istream
  - in ostream
  - in containers
  - in algorithms
d184 1
d188 1
a188 1
- integrate locale num_put FP and num_get into iostream operators <<, >>
d192 1
d194 1
d196 1
d198 1
d200 1
d202 1
d204 1
d208 1
a208 6
- complete numeric_limits<> specializations as appropriate for each
  floating point type.
- fix vector and string to define non-pointer iterator types.  Pointers
  as container iterators are evil.
- <valarray>
  - improve slice_array performance
d210 1
d212 1
d214 1
@


1.2
log
@        * docs/17_intro/CHECKLIST: update.
        * docs/17_intro/TODO: update.
@
text
@d37 1
a37 1
- complete numeric_limits<> specializations appropriate for each
d43 1
a43 3
  - implement a reference-counted gslice
- <complex>
  - provide member definitions of the primary template
d45 2
@


1.1
log
@m
1999-05-11  Benjamin Kosnik  <bkoz@@loony.cygnus.com>
	* stl/bits/stl_config.h (__USE_MALLOC): Change underlying allocator.
	Check __USE_MALLOC before defining specializations containing
	__default_alloc_template.
	* src/stl-inst.cc: Here too.
	* bits/basic_string.h: Change.
	* testsuite/make_check_libfree++: More tweaks.
	* testsuite/21/capacity.cc: New file.
	* src/string.cc: Rename to be consistent with other inst files.
	Rename to string-inst.cc.
	* src/string*.cc: Change include.
	* src/wstring.cc: Rename to wstring-inst.cc.
	* src/wstring*.cc: Ditto.
	* src/Makefile.in: Also here.
	* src/Makefile.am: Ditto.
	* src/traits.cc: Remove.
	* src/wtraits.cc: Same.
	Try a new way of organizing documentation, one with synchronicity
	between testsuites and docs subdirectories, and see who yelps.
	* docs/html: Remove, use chapter and subject specific directories
	instead of forcing things immediately into format of
	documentation.
	* docs/text: Same.
	* docs/image: Same.
	* docs/faq/text, docs/faq/html: Remove, put in the docs/faq
	directory and sort by filename and extension.
	* docs/17_intro, 18_support, 19_diagnostics, 20_util, 21_strings,
	22_locale, 23_containers, 24_iterators, 25_algorithms,
	26_numerics, 27_io: Add.
	* docs/17_intro/*: Populate with all the text files. . .
	* docs/index.html: Construct.
	* testsuite/*: Update with same names as the docs subdir.
	* testsuite/results: Where to stash conformance results for the
	different snapshots, so that progress/size/speed issues can be
	tracked over time.
@
text
@d37 2
a38 2
- compose numeric_limits<> specializations appropriate for each target
  platform.  (Current are *not* correct for any of our target platforms!)
d41 6
@

