Changeset 1012 in Sophya for trunk/SophyaLib/HiStats/xntuple.cc


Ignore:
Timestamp:
May 19, 2000, 8:57:58 AM (25 years ago)
Author:
ansari
Message:

int_4 r_4 r_8 ds XNTuple , Reza 19/5/2000

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaLib/HiStats/xntuple.cc

    r1009 r1012  
    4646      idata(NULL), sdata(NULL)
    4747{
    48     if(ndvar) ddata = new double[ndvar*sz] ;
    49     if(nfvar) fdata = new float[nfvar*sz] ;
     48    if(ndvar) ddata = new r_8[ndvar*sz] ;
     49    if(nfvar) fdata = new r_4[nfvar*sz] ;
    5050    if(nivar) idata = new int_4[nivar*sz] ;
    5151    if(nsvar) sdata = new char[nsvar*(strsz+1)*sz] ;
     
    8080   
    8181    if(mD) {
    82         blk->ddata = new double[mD*mBlkSz] ;
    83         fread(blk->ddata, sizeof(double), mD*mBlkSz, swf) ;
     82        blk->ddata = new r_8[mD*mBlkSz] ;
     83        fread(blk->ddata, sizeof(r_8), mD*mBlkSz, swf) ;
    8484    }
    8585    if(mF) {
    86         blk->fdata = new float[mF*mBlkSz] ;
    87         fread(blk->fdata, sizeof(float), mF*mBlkSz, swf) ;
     86        blk->fdata = new r_4[mF*mBlkSz] ;
     87        fread(blk->fdata, sizeof(r_4), mF*mBlkSz, swf) ;
    8888    }
    8989    if(mI) {
    9090        blk->idata = new int_4[mI*mBlkSz] ;
    91         fread(blk->idata, sizeof(int), mI*mBlkSz, swf) ;
     91        fread(blk->idata, sizeof(int_4), mI*mBlkSz, swf) ;
    9292    }
    9393    if(mS) {
     
    111111        mktemp(swf_name) ;
    112112        swf = fopen(swf_name, "w+") ;
    113         if(!swf) THROW(fileErr) ;
     113        if(!swf) throw IOExc("XNTuple::swap() - Error opening swap File");
    114114    }
    115115   
     
    152152    // position debut du bloc
    153153    blk->swoff = ftell(swf) ;
    154     if(blk->ddata) fwrite(blk->ddata, sizeof(double), mD*mBlkSz, swf) ;
    155     if(blk->fdata) fwrite(blk->fdata, sizeof(float),  mF*mBlkSz, swf) ;
    156     if(blk->idata) fwrite(blk->idata, sizeof(int),    mI*mBlkSz, swf) ;
     154    if(blk->ddata) fwrite(blk->ddata, sizeof(r_8), mD*mBlkSz, swf) ;
     155    if(blk->fdata) fwrite(blk->fdata, sizeof(r_4),  mF*mBlkSz, swf) ;
     156    if(blk->idata) fwrite(blk->idata, sizeof(int_4),  mI*mBlkSz, swf) ;
    157157    if(blk->sdata) fwrite(blk->sdata, sizeof(char),   mS*mBlkSz*(mStrSz+1), swf) ;
    158158}
     
    198198// XNTuple(int ndvar, int nfvar, int nivar, int nsvar, char** vnames, -
    199199//         int blk=512, int maxblk=100, int strsz=30)
    200 //      Constructeur - Création d'un XNTuple de "ndvar" variables de type "double", -
    201 //                      "nfvar" de type "float", "nivar" de type "int" et "nsvar" de type -
     200//      Constructeur - Création d'un XNTuple de "ndvar" variables de type "r_8", -
     201//                      "nfvar" de type "r_4", "nivar" de type "int" et "nsvar" de type -
    202202//                      "char*".
    203203//|            * "blk"    = taille blocs de données (en nombre d'entrées)
     
    323323//--
    324324//++
    325 //  void Fill(double* d_data, float* f_data, int* i_data, char** s_data)
     325//  void Fill(r_8* d_data, r_4* f_data, int* i_data, char** s_data)
    326326//      Remplissage d'une ligne dans le NTuple
    327327//  void Show(ostream& os) const
    328 //      Impression de la liste des variables avec min-max sur le flot "oß
     328//      Impression de la liste des variables avec min-max sur le flot "os"
    329329//  void Show() const
    330330//      Identique à "Show(cout)"
     
    332332//      Opérateur égal (=) , copie "nt" dans le premier NTuple
    333333//--
    334 void XNTuple::Fill(double* d_data, float* f_data, long* i_data, char** s_data)
     334void XNTuple::Fill(r_8* d_data, r_4* f_data, int_4* i_data, char** s_data)
    335335{
    336336    // place disponible dans bloc courant ?
     
    343343        mI && !ptr[mBlk]->idata ||
    344344        mS && !ptr[mBlk]->sdata )
    345         THROW(parmErr) ;
    346    
    347     double x ;
     345          throw ParmError("XNTuple::Fill(...) Missing (NULL) argument ");
     346   
     347    r_8 x ;
    348348    // copie variables et update mMin, mMax
    349349    if(mD) {
    350         memcpy(ptr[mBlk]->ddata+mOff*mD, d_data, mD*sizeof(double)) ;
     350        memcpy(ptr[mBlk]->ddata+mOff*mD, d_data, mD*sizeof(r_8)) ;
    351351        for(int i = 0 ; i < mD ; i++) {
    352352            x = d_data[i] ;
     
    357357   
    358358    if(mF) {
    359         memcpy(ptr[mBlk]->fdata+mOff*mF, f_data, mF*sizeof(float)) ;
     359        memcpy(ptr[mBlk]->fdata+mOff*mF, f_data, mF*sizeof(r_4)) ;
    360360        for(int i = 0 ; i < mF ; i++) {
    361361            x = f_data[i] ;
     
    366366
    367367    if(mI) {
    368         memcpy(ptr[mBlk]->idata+mOff*mI, i_data, mI*sizeof(long)) ;
     368        memcpy(ptr[mBlk]->idata+mOff*mI, i_data, mI*sizeof(int_4)) ;
    369369        for(int i = 0 ; i < mI ; i++) {
    370370            x = i_data[i] ;
     
    402402//
    403403//
    404 double XNTuple::GetDVal(int i, int k) const
     404r_8 XNTuple::GetDVal(int i, int k) const
    405405{
    406406    if( i<0 || i>=mNEnt || k<0 || k>=mD )
    407         THROW(rangeCheckErr) ;
     407        throw RangeCheckError("XNTuple::GetDVal() Invalid line/column index");
    408408   
    409409    // Bloc ?
     
    419419//
    420420//
    421 float XNTuple::GetFVal(int i, int k) const
     421r_4 XNTuple::GetFVal(int i, int k) const
    422422{
    423423    if( i<0 || i>=mNEnt || k<mD || k>=(mD+mF) )
    424         THROW(rangeCheckErr) ;
     424        throw RangeCheckError("XNTuple::GetFVal() Invalid line/column index");
    425425    k -= mD ;
    426426   
     
    437437//
    438438//
    439 long XNTuple::GetIVal(int i, int k) const
     439int_4 XNTuple::GetIVal(int i, int k) const
    440440{
    441441    if( i<0 || i>=mNEnt || k<(mD+mF) || k>=(mD+mF+mI) )
    442         THROW(rangeCheckErr) ;
     442        throw RangeCheckError("XNTuple::GetIVal() Invalid line/column index");
     443
    443444    k -= (mD+mF) ;
    444445
     
    459460{
    460461    if( i<0 || i>=mNEnt || k<(mD+mF+mI) || k>=(mD+mF+mI+mS) )
    461         THROW(rangeCheckErr) ;
     462        throw RangeCheckError("XNTuple::GetSVal() Invalid line/column index");
     463
    462464    k -= (mD+mF+mI) ;
    463465   
     
    500502    if(mNVars) {
    501503        mNames = new char[mNVars*(LENNAME+1)] ;
    502         mVarD = new double[mNVars];
     504        mVarD = new r_8[mNVars];
    503505        memcpy(mNames, nt.mNames, mNVars*(LENNAME+1)*sizeof(char)) ;
    504506    }
    505507    // MinMax
    506508    if(nt.mMin) {
    507         mMin = new double[(mD+mF+mI)] ;
    508         memcpy(mMin, nt.mMin, (mD+mF+mI)*sizeof(double)) ;
     509        mMin = new r_8[(mD+mF+mI)] ;
     510        memcpy(mMin, nt.mMin, (mD+mF+mI)*sizeof(r_8)) ;
    509511    }
    510512    if(nt.mMax) {
    511         mMax = new double[(mD+mF+mI)] ;
    512         memcpy(mMax, nt.mMax, (mD+mF+mI)*sizeof(double)) ;
     513        mMax = new r_8[(mD+mF+mI)] ;
     514        memcpy(mMax, nt.mMax, (mD+mF+mI)*sizeof(r_8)) ;
    513515    }
    514516   
     
    521523        if(nt.ptr[i]->sw) nt.read_blk(nt.ptr[i]) ;
    522524        if(mD)
    523             memcpy(ptr[i]->ddata, nt.ptr[i]->ddata, mD*mBlkSz*sizeof(double)) ;
     525            memcpy(ptr[i]->ddata, nt.ptr[i]->ddata, mD*mBlkSz*sizeof(r_8)) ;
    524526        if(mF)
    525             memcpy(ptr[i]->fdata, nt.ptr[i]->fdata, mF*mBlkSz*sizeof(float)) ;
     527            memcpy(ptr[i]->fdata, nt.ptr[i]->fdata, mF*mBlkSz*sizeof(r_4)) ;
    526528        if(mI)
    527             memcpy(ptr[i]->idata, nt.ptr[i]->idata, mF*mBlkSz*sizeof(int)) ;
     529            memcpy(ptr[i]->idata, nt.ptr[i]->idata, mF*mBlkSz*sizeof(int_4)) ;
    528530        if(mS)
    529531            memcpy(ptr[i]->sdata, nt.ptr[i]->sdata, mS*mBlkSz*sizeof(char)*(mStrSz+1)) ;
     
    597599    os << buff ;
    598600   
    599     double min, max ;
     601    r_8 min, max ;
    600602    int i;
    601603    for(i = 0 ; i < mD ; i++) {
     
    625627}
    626628
    627 int    XNTuple::FillFromASCIIFile(string const& fn, double ddval,  float dfval,
     629int    XNTuple::FillFromASCIIFile(string const& fn, r_8 ddval,  r_4 dfval,
    628630                                        int dival, const char * dsval)
    629631//      Remplit le ntuple a partir d'un fichier ASCII.
     
    664666        mVarD[i] = GetDVal(n, i) ;
    665667    for(i = 0 ; i < mF ; i++)
    666         mVarD[i+mD] = (double)GetFVal(n, i+mD) ;
     668        mVarD[i+mD] = (r_8)GetFVal(n, i+mD) ;
    667669    for(i = 0 ; i < mI ; i++)
    668         mVarD[i+mD+mF] = (double)GetIVal(n, i+mD+mF) ;
     670        mVarD[i+mD+mF] = (r_8)GetIVal(n, i+mD+mF) ;
    669671    for(i = 0 ; i < mS ; i++)
    670672        mVarD[i+mD+mF+mI] = atof(GetSVal(n, i+mD+mF+mI).c_str()) ;
     
    743745{
    744746    string rets = "" ;
    745     rets += "/* double type variables */ \n";
    746     // variables double
     747    rets += "/* r_8 type variables */ \n";
     748    // variables r_8
    747749    int i;
    748750    for(i = 0 ; i < mD ; i++) {
     
    754756    if(mD) rets += ";" ;
    755757   
    756     // variables float
    757     rets += "/* float type variables */ \n";
     758    // variables r_4
     759    rets += "/* r_4 type variables */ \n";
    758760    for(i = 0 ; i < mF ; i++) {
    759761        if( i>0 && (i%5)==0 ) rets += ";" ;
     
    813815{
    814816    char buff[32];
    815     double* val;
     817    r_8* val;
    816818    val = GetLineD(n);
    817819    sprintf(buff,"%6d: ",n);
     
    907909  // Noms
    908910  dobj->mNames = new char[dobj->mNVars*(LENNAME+1)] ;
    909   dobj->mVarD = new double[dobj->mNVars];
     911  dobj->mVarD = new r_8[dobj->mNVars];
    910912  ppin.GetBytes(dobj->mNames, dobj->mNVars*(LENNAME+1)) ;
    911913
     
    931933// (protected)
    932934//
    933 void XNTuple::SetDVal(int i, int k, double v) 
    934 {
    935     if( i<0 || i>=mNEnt || k<0 || k>=mD ) 
    936         THROW(rangeCheckErr) ;
     935void XNTuple::SetDVal(int i, int k, r_8 v) 
     936{
     937    if( i<0 || i>=mNEnt || k<0 || k>=mD )
     938        throw RangeCheckError("XNTuple::SetDVal() Invalid line/column index");
    937939   
    938940    // Bloc ?
     
    944946    ptr[blk]->ddata[off*mD+k]=v ;
    945947}
    946 void XNTuple::SetFVal(int i, int k, float v)
     948
     949void XNTuple::SetFVal(int i, int k, r_4 v)
    947950{
    948951    if( i<0 || i>=mNEnt || k<mD || k>=(mD+mF) )
    949         THROW(rangeCheckErr) ;
     952        throw RangeCheckError("XNTuple::SetFVal() Invalid line/column index");
     953
    950954    k -= mD ;
    951955   
     
    961965{
    962966    if( i<0 || i>=mNEnt || k<(mD+mF) || k>=(mD+mF+mI) )
    963         THROW(rangeCheckErr) ;
     967        throw RangeCheckError("XNTuple::SetIVal() Invalid line/column index");
     968
    964969    k -= (mD+mF) ; 
    965970
     
    976981{
    977982    if( i<0 || i>=mNEnt || k<(mD+mF+mI) || k>=(mD+mF+mI+mS) )
    978         THROW(rangeCheckErr) ;
     983        throw RangeCheckError("XNTuple::SetSVal() Invalid line/column index");
     984
    979985    k -= (mD+mF+mI) ;
    980986   
Note: See TracChangeset for help on using the changeset viewer.