PATCH to libstdc++/: fix bugs in valarray and friends

Gabriel Dos Reis gdr@codesourcery.com
Sat Jul 15 15:06:00 GMT 2000


This patch basically makes things like

	valarray<valarray<double> > v(100);

	// ...

	v.resize(500, valarray<double>(90));

work properly (even though nobody should be saying
valarray<valarray<T> >, it proves easier to support than to explain
why it is undefined).  In some sense, it lines up with the version found
in libstdc++-v3. 

Bootstrapped and tested on an i686-pc-linux.  Installed.

Jeff, this patch should be considered for the branch as well.

-- Gaby

	
2000-07-15  Gabriel Dos Reis  <gdr@codesourcery.com>

        * std/valarray_array.h (__valarray_get_memory,
        __valarray_get_storage, __valarray_release_storage): New
        functions.
        (_Array_default_ctor, _Array_init_ctor, _Array_copy_ctor,
        _Array_copier): New traits classes.
        (__valarray_default_construct): New function.  Implements valarray
        default construction.
        (__valarray_fill_construct): New function. Implements valarray
        construction with initializer.
        (__valarray_copy_construct): New function.  Implements valarray
        copy construction.
        (__valarray_destroy_elements): New function. 
        (__valarray_copy, __valarray_fill): Tweak.
        (__valarray_sum, __valarray_product): New helper functions.
        (_Array<>::free_data): Remove.
        (_Array<>::_Array): Tweak.

        * std/std_valarray.h (valarray<>::product): Remove.
        (valarray<>::valarray): Use __valarray_get_storage.
        (valarray<>::shift, valarray<>::cshift, valarray<>::resize):
        Tweak. 

        * std/cpp_type_traits.h: New file.

        * valarray.cc (multiplies<>, accumulate, valarray<>::product):
        Remove explicit instantiation. 
        (__valarray_product): New function.
        (_Indexer::_Indexer): Use.

begin 644 v.diff.gz
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
C4+?]0ZMSL)_]+;X'A;*T)H:DQ(D0>2"7Q^#?V*7;>3QT````
`
end


More information about the Gcc-patches mailing list