Changeset 1550 in Sophya


Ignore:
Timestamp:
Jun 27, 2001, 10:13:16 AM (24 years ago)
Author:
ansari
Message:

Extension de l'interface TArray/BaseArray/EnumeratedSequence pour permettre la lecture de fichier ASCII - Reza 27/6/2001

Location:
trunk/SophyaLib/TArray
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/TArray/basarr.h

    r1517 r1550  
    6969
    7070  // Array dimensions
     71  //! Return true if the array was allocated ( Rank() > 0 )
     72  inline bool IsAllocated() const { return( (ndim_ > 0) ? true : false ); }
    7173  //! Return number of dimensions (array rank)
    7274  inline int_4 NbDimensions() const { return( ndim_ ); }
  • trunk/SophyaLib/TArray/tarray.cc

    r1543 r1550  
    10001000  \param maxprt : maximum numer of print
    10011001  \param si : if true,  display attached DvList
     1002  \param ascd : if true, suppresses the display of line numbers,
     1003  suitable for ascii dump format.
    10021004  \sa SetMaxPrint
    1003  */
    1004 template <class T>
    1005 void TArray<T>::Print(ostream& os, int_4 maxprt, bool si) const
     1005  \sa WriteASCII
     1006 */
     1007template <class T>
     1008void TArray<T>::Print(ostream& os, sa_size_t maxprt, bool si, bool ascd) const
    10061009{
    10071010  if (maxprt < 0)  maxprt = max_nprt_;
     
    10111014  sa_size_t k0,k1,k2,k3,k4;
    10121015  for(k4=0; k4<size_[4]; k4++) {
    1013     if (size_[4] > 1) cout << "\n ----- Dimension 5 (U) K4= " << k4 << endl;
     1016    if ((size_[4] > 1) && ascd)
     1017      cout << "\n ----- Dimension 5 (U) K4= " << k4 << endl;
    10141018    for(k3=0; k3<size_[3]; k3++) {
    1015       if (size_[3] > 1) cout << "\n ----- Dimension 4 (T) K3= " << k3 << endl;
     1019      if ((size_[3] > 1) && ascd)
     1020        cout << "\n ----- Dimension 4 (T) K3= " << k3 << endl;
    10161021      for(k2=0; k2<size_[2]; k2++) {
    1017         if (size_[2] > 1) cout << "\n ----- Dimension 3 (Z) K2= " << k2 << endl;
     1022        if ((size_[2] > 1) & ascd)
     1023          cout << "\n ----- Dimension 3 (Z) K2= " << k2 << endl;
    10181024        for(k1=0; k1<size_[1]; k1++) {
    1019           if ( (size_[1] > 1) && (size_[0] > 10) ) cout << "----- Dimension 2 (Y) K1= " << k1 << endl;
     1025          if ( (size_[1] > 1) && (size_[0] > 10) && ascd)
     1026            cout << "----- Dimension 2 (Y) K1= " << k1 << endl;
    10201027          for(k0=0; k0<size_[0]; k0++) {
    1021             if(k0 > 0) os << ", "; 
     1028            if(k0 > 0) os << " "; 
    10221029            os << Elem(k0, k1, k2, k3, k4);     npr++;
    10231030            if (npr >= (sa_size_t) maxprt) {
     
    10401047void TArray<T>::ReadASCII(istream& is)
    10411048{
    1042   cerr << " TArray<T>::ReadASCII() - Pas encore implemente - Reza 12/6/2001 " << endl;
     1049  EnumeratedSequence es;
     1050  sa_size_t nr, nc;
     1051  es.FillFromFile(is, nr, nc);
    10431052}
    10441053
     
    10501059void TArray<T>::WriteASCII(ostream& os) const
    10511060{
    1052   Print(os, Size(), true);
     1061  Print(os, Size(), false, true);
    10531062}
    10541063
  • trunk/SophyaLib/TArray/tarray.h

    r1517 r1550  
    178178// Impression, I/O, ...
    179179  virtual string InfoString() const;   
    180   virtual void   Print(ostream& os, int_4 maxprt=-1, bool si=false) const ;
     180  virtual void   Print(ostream& os, sa_size_t maxprt=-1,
     181                       bool si=false, bool ascd=false) const ;
    181182
    182183// Lecture,Ecriture sur fichier ASCII
  • trunk/SophyaLib/TArray/utilarr.cc

    r1412 r1550  
    144144}
    145145
     146EnumeratedSequence & EnumeratedSequence::Merge(EnumeratedSequence const & seq)
     147{
     148  for(int k=0; k<seq.vecv_.size(); k++)
     149    vecv_.push_back(seq.vecv_[k]);
     150  return(*this);
     151}
     152
     153void EnumeratedSequence::Print(ostream& os) const
     154{
     155  os << " EnumeratedSequence::Print() - Size()= " << Size() << endl;
     156  for(int k=0; k<vecv_.size(); k++) {
     157    os << vecv_[k];
     158    if ((k > 0) && (k%10 == 0))  os << endl;
     159    else os << " " ;
     160  }
     161  return;
     162}
     163
     164sa_size_t EnumeratedSequence::FillFromString(string const & str)
     165{
     166  cerr << " EnumeratedSequence::FillFromString() pas implemente !" << endl;
     167  return (0);
     168}
     169
     170sa_size_t EnumeratedSequence::FillFromFile(istream& is,
     171                                           sa_size_t& nr, sa_size_t& nc)
     172{
     173  cerr << " EnumeratedSequence::FillFromFile() pas implemente !" << endl;
     174  return (0);
     175}
     176
    146177//////////////////////////////////////////////////////////
    147178/*!
  • trunk/SophyaLib/TArray/utilarr.h

    r1517 r1550  
    8888};
    8989
     90//////////////////////////////////////////////////////////
     91//! Class for creation and handling of an explicitly defined list of values
     92
    9093class EnumeratedSequence : public Sequence  {
    9194public:
     
    9396  virtual ~EnumeratedSequence();
    9497  virtual MuTyV & Value(sa_size_t k) const ;
     98
     99  inline sa_size_t Size() const { return vecv_.size(); }
     100
    95101  EnumeratedSequence & operator , (MuTyV const & v);
    96102  EnumeratedSequence & operator = (MuTyV const & v);
     103
     104  EnumeratedSequence & Merge(EnumeratedSequence const & seq);
     105  inline  void         Clear()  { vecv_.clear(); }     
     106  void                 Print(ostream& os) const;
     107
     108  sa_size_t            FillFromString(string const & str);
     109  sa_size_t            FillFromFile(istream& is, sa_size_t& nr, sa_size_t& nc);
     110
    97111private:
    98112  vector<MuTyV> vecv_;
    99113  mutable MuTyV retv_;
    100114};
     115
     116inline ostream& operator << (ostream& os, const EnumeratedSequence& a)
     117                            { a.Print(os);    return(os);    }
    101118
    102119  //inline EnumeratedSequence operator , (MuTyV const & a, MuTyV const & b)
Note: See TracChangeset for help on using the changeset viewer.