// lib/prec_stl/valarray #pragma ifndef PREC_STL_VALARRAY #pragma define PREC_STL_VALARRAY #pragma link off global PREC_STL_VALARRAY; #pragma link C++ nestedtypedef; #pragma link C++ nestedclass; #if defined(G__HP_aCC) || defined(G__SUNPRO_C) #pragma mask_newdelete 0x1c; #else #pragma mask_newdelete 0x10; #endif // Imported from ANSI/ISO C++ 1997/Nov draft // Got some ideas from Scott Snyder, Fermi-lab // Modified by Masaharu Goto // G__NOINTOPR to be implemented, 1999/10/10 gotom #include template class valarray { public: typedef T value_type; // _lib.valarray.cons_ construct/destroy: valarray(); #ifdef __CINT__ valarray(size_t); #else explicit valarray(size_t); #endif valarray(const T&, size_t); valarray(const T*, size_t); valarray(const valarray&); #if 0 valarray(const slice_array&); valarray(const gslice_array&); valarray(const mask_array&); valarray(const indirect_array&); #endif ~valarray(); // _lib.valarray.assign_ assignment: valarray& operator=(const valarray&); valarray& operator=(const T&); #if 0 valarray& operator=(const slice_array&); valarray& operator=(const gslice_array&); valarray& operator=(const mask_array&); valarray& operator=(const indirect_array&); #endif // _lib.valarray.access_ element access: //T operator[](size_t) const; T& operator[](size_t); // _lib.valarray.sub_ subset operations: #if 0 valarray operator[](slice) const; slice_array operator[](slice); valarray operator[](const gslice&) const; gslice_array operator[](const gslice&); valarray operator[](const valarray&) const; mask_array operator[](const valarray&); valarray operator[](const valarray&) const; indirect_array operator[](const valarray&); #endif #ifndef G__VISUAL // _lib.valarray.unary_ unary operators: valarray operator+() const; valarray operator-() const; #if !defined(G__BORLAND) && !defined(G__KCC) valarray operator~() const; valarray operator!() const; #endif // _lib.valarray.cassign_ computed assignment: valarray& operator*= (const T&); valarray& operator/= (const T&); valarray& operator+= (const T&); valarray& operator-= (const T&); valarray& operator*= (const valarray&); valarray& operator/= (const valarray&); valarray& operator+= (const valarray&); valarray& operator-= (const valarray&); #if !defined(G__BORLAND) && !defined(G__KCC) valarray& operator%= (const T&); valarray& operator^= (const T&); valarray& operator&= (const T&); valarray& operator|= (const T&); valarray& operator<<=(const T&); valarray& operator>>=(const T&); valarray& operator%= (const valarray&); valarray& operator^= (const valarray&); valarray& operator|= (const valarray&); valarray& operator&= (const valarray&); valarray& operator<<=(const valarray&); valarray& operator>>=(const valarray&); #endif #endif // _lib.valarray.members_ member functions: size_t size() const; T sum() const; #if defined(G__BORLAND) || defined(G__KCC) friend T min(const valarray&) const; friend T max(const valarray&) const; #else T min() const; T max() const; #endif valarray shift (int) const; valarray cshift(int) const; #ifdef __CINT__ valarray apply(T (*func)(T)) const; valarray apply(T (*func)(const T&)) const; #else valarray apply(T func(T)) const; valarray apply(T func(const T&)) const; #endif void resize(size_t sz, T c = T()); friend valarray operator*(const valarray&, const valarray&); friend valarray operator* (const valarray&, const T&); friend valarray operator* (const T&, const valarray&); friend valarray operator/ (const valarray&, const valarray&); friend valarray operator/ (const valarray&, const T&); friend valarray operator/ (const T&, const valarray&); #ifdef G__NEVER // logical operator does not work for floating number friend valarray operator% (const valarray&, const valarray&); friend valarray operator% (const valarray&, const T&); friend valarray operator% (const T&, const valarray&); #endif friend valarray operator+ (const valarray&, const valarray&); friend valarray operator+ (const valarray&, const T&); friend valarray operator+ (const T&, const valarray&); friend valarray operator- (const valarray&, const valarray&); friend valarray operator- (const valarray&, const T&); friend valarray operator- (const T&, const valarray&); #ifdef G__NEVER // logical operator does not work for floating number friend valarray operator^ (const valarray&, const valarray&); friend valarray operator^ (const valarray&, const T&); friend valarray operator^ (const T&, const valarray&); friend valarray operator& (const valarray&, const valarray&); friend valarray operator& (const valarray&, const T&); friend valarray operator& (const T&, const valarray&); friend valarray operator| (const valarray&, const valarray&); friend valarray operator| (const valarray&, const T&); friend valarray operator| (const T&, const valarray&); friend valarray operator<< (const valarray&, const valarray&); friend valarray operator<<(const valarray&, const T&); friend valarray operator<<(const T&, const valarray&); friend valarray operator>> (const valarray&, const valarray&); friend valarray operator>>(const valarray&, const T&); friend valarray operator>>(const T&, const valarray&); #endif friend valarray operator&& (const valarray&, const valarray&); #if defined(G__BORLAND) || defined(G__KCC) friend valarray operator&&(const valarray&, const T&); friend valarray operator&&(const T&, const valarray&); #else friend valarray operator&&(const valarray&, const T&); friend valarray operator&&(const T&, const valarray&); #endif friend valarray operator|| (const valarray&, const valarray&); #if defined(G__BORLAND) || defined(G__KCC) friend valarray operator||(const valarray&, const T&); friend valarray operator||(const T&, const valarray&); #else friend valarray operator||(const valarray&, const T&); friend valarray operator||(const T&, const valarray&); #endif friend valarray operator==(const valarray&, const valarray&); friend valarray operator==(const valarray&, const T&); friend valarray operator==(const T&, const valarray&); friend valarray operator!=(const valarray&, const valarray&); friend valarray operator!=(const valarray&, const T&); friend valarray operator!=(const T&, const valarray&); friend valarray operator< (const valarray&, const valarray&); friend valarray operator< (const valarray&, const T&); friend valarray operator< (const T&, const valarray&); friend valarray operator> (const valarray&, const valarray&); friend valarray operator> (const valarray&, const T&); friend valarray operator> (const T&, const valarray&); friend valarray operator<=(const valarray&, const valarray&); friend valarray operator<=(const valarray&, const T&); friend valarray operator<=(const T&, const valarray&); friend valarray operator>=(const valarray&, const valarray&); friend valarray operator>=(const valarray&, const T&); friend valarray operator>=(const T&, const valarray&); friend valarray abs (const valarray&); friend valarray acos (const valarray&); friend valarray asin (const valarray&); friend valarray atan (const valarray&); friend valarray atan2 (const valarray&, const valarray&); friend valarray atan2(const valarray&, const T&); friend valarray atan2(const T&, const valarray&); friend valarray cos (const valarray&); friend valarray cosh (const valarray&); friend valarray exp (const valarray&); friend valarray log (const valarray&); friend valarray log10(const valarray&); friend valarray pow(const valarray&, const valarray&); friend valarray pow(const valarray&, const T&); friend valarray pow(const T&, const valarray&); friend valarray sin (const valarray&); friend valarray sinh (const valarray&); friend valarray sqrt (const valarray&); friend valarray tan (const valarray&); friend valarray tanh (const valarray&); #ifdef G__VISUAL // Visual C++ 6.0 , FATAL BUG C1001 INTERNAL COMPILER ERROR, workaround #pragma link MACRO function abs(valarray); #pragma link MACRO function acos(valarray); #pragma link MACRO function asin(valarray); #pragma link MACRO function atan(valarray); #pragma link MACRO function atan2(valarray,valarray); #pragma link MACRO function atan2(valarray,T); #pragma link MACRO function atan2(T,valarray); #pragma link MACRO function cos(valarray); #pragma link MACRO function cosh(valarray); #pragma link MACRO function exp(valarray); #pragma link MACRO function log(valarray); #pragma link MACRO function log10(valarray); #pragma link MACRO function pow(valarray,valarray); #pragma link MACRO function pow(valarray,T); #pragma link MACRO function pow(T,valarray); #pragma link MACRO function sin(valarray); #pragma link MACRO function sinh(valarray); #pragma link MACRO function sqrt(valarray); #pragma link MACRO function tan(valarray); #pragma link MACRO function tanh(valarray); #endif }; #pragma endif