Changeset ac73d05 in tol


Ignore:
Timestamp:
Nov 3, 2009, 5:31:25 PM (17 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
8450037
Parents:
8a4804f
Message:

Fixed #767

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@1587 be4846ae-f051-483a-831f-b64e7d08527f

Location:
tol/btol/vmatrix_type
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • tol/btol/vmatrix_type/tol_bvmat_bsr.h

    r8a4804f rac73d05  
    375375    return(aux);
    376376  };
    377 
    378377  const BText& BSR();
    379378  int Initialize();
    … …  
    385384  BStruct* NoiseTimeInfo();
    386385  BStruct* MasterInfo();
    387 
    388386  int Parse_Module_Joint(
    389387    const string &          fileName,
    … …  
    397395    BVMat&                  a,
    398396    BVMat&                  A);
    399 
    400397  int Parse_Module_Primary(
    401398    const string &          fileName,
    … …  
    409406    BVMat&                  a,
    410407    BVMat&                  A);
    411 
    412408  int Parse_Module_Master(
    413409    const std::string &     fileName,
    … …  
    415411    std::string &           sampler,
    416412    vector<moduleDef>&      subModules);
    417 
    418413  int Parse_Module(const BText& filePath,
    419                          BText& moduleType,
     414                   const BText& moduleType,
    420415                         BSet& contens_);
    421 
    422416};
    423417
  • tol/btol/vmatrix_type/tol_bvmat_bsr_impl.h

    r8a4804f rac73d05  
    299299
    300300///////////////////////////////////////////////////////////////////////////////
     301class assign_moduleType
     302///////////////////////////////////////////////////////////////////////////////
     303{
     304public:
     305  string* moduleType_;
     306  assign_moduleType(string& moduleType)
     307  : moduleType_(&moduleType)
     308  {}
     309  void action(const std::string& str) const
     310  {
     311    (*moduleType_) = str;
     312  }
     313  void operator()(const std::string& str) const
     314  {
     315    action(str);
     316  }
     317  template<typename IteratorT>
     318  void operator()(IteratorT first, IteratorT last) const
     319  {
     320    std::string str;
     321    str.assign(first, last);
     322    action(str);
     323  }
     324};
     325
     326///////////////////////////////////////////////////////////////////////////////
    301327class assign_extern_var_name
    302328///////////////////////////////////////////////////////////////////////////////
    … …  
    327353  }
    328354};
     355
    329356
    330357///////////////////////////////////////////////////////////////////////////////
    … …  
    12691296
    12701297///////////////////////////////////////////////////////////////////////////////
     1298class assign_var_to_ine_term
     1299///////////////////////////////////////////////////////////////////////////////
     1300{
     1301public:
     1302  symbol_handler<variable_info>* var_;
     1303  var_term*              var_term_info_;
     1304  int*                   nzmax_;
     1305
     1306  assign_var_to_ine_term(
     1307    symbol_handler<variable_info>& var,
     1308    var_term&              var_term_info,
     1309    int&                   nzmax)
     1310  :
     1311  var_(&var),
     1312  var_term_info_(&var_term_info),
     1313  nzmax_(&nzmax)
     1314  {}
     1315
     1316  void action(variable_info& varInfo) const
     1317  {
     1318    assign_var_to_ine_term* t = (assign_var_to_ine_term*)this;
     1319    varInfo.used = true;
     1320    t->var_term_info_->varIndex = varInfo.index;
     1321    (*(t->nzmax_))++;
     1322  }
     1323  void operator()(const boost::reference_wrapper<int>& pos) const
     1324  {
     1325    int n = pos.get();
     1326    action(var_->vec[n]);
     1327  }
     1328  template<typename IteratorT>
     1329  void operator()(IteratorT first, IteratorT last) const
     1330  {
     1331    std::string str;
     1332    str.assign(first, last);
     1333    int* pos = find(var_->table,str.c_str());
     1334    action((var_->vec)[*pos]);
     1335  }
     1336
     1337};
     1338
     1339
     1340///////////////////////////////////////////////////////////////////////////////
    12711341class assign_var_to_equ_term
    12721342///////////////////////////////////////////////////////////////////////////////
    … …  
    12971367  {
    12981368    int n = pos.get();
    1299     action((var_->vec)[n]);
     1369    action(var_->vec[n]);
    13001370  }
    13011371  template<typename IteratorT>
    … …  
    14271497};
    14281498     
    1429 
    1430 ///////////////////////////////////////////////////////////////////////////////
    1431 class assign_var_to_ine_term
    1432 ///////////////////////////////////////////////////////////////////////////////
    1433 {
    1434 public:
    1435   vector<variable_info>* var_vec_;
    1436   var_term*              var_term_info_;
    1437   int*                   nzmax_;
    1438 
    1439   assign_var_to_ine_term(
    1440     vector<variable_info>& var_vec,
    1441     var_term&              var_term_info,
    1442     int&                   nzmax)
    1443   :
    1444   var_vec_(&var_vec),
    1445   var_term_info_(&var_term_info),
    1446   nzmax_(&nzmax)
    1447   {}
    1448   void action(variable_info& varInfo) const
    1449   {
    1450     assign_var_to_ine_term* t = (assign_var_to_ine_term*) this;
    1451     t->var_term_info_->varIndex = varInfo.index;
    1452     (*t->nzmax_)++;
    1453   }
    1454   void operator()(const boost::reference_wrapper<int>& pos) const
    1455   {
    1456     assign_var_to_ine_term* t = (assign_var_to_ine_term*) this;
    1457     int n = pos.get();
    1458     action((*t->var_vec_)[n]);
    1459   }
    1460 };
    14611499
    14621500
    … …  
    17881826  string    moduleType;
    17891827  string    fileName;
    1790   ifstream* file;
     1828//ifstream* file;
    17911829  size_t    fileSize;
    17921830
  • tol/btol/vmatrix_type/tol_bvmat_bsr_run.h

    r8a4804f rac73d05  
    2121 */
    2222
    23 const char* fName = fileName.c_str();
    24 //BOOST_SPIRIT_DEBUG_NODE(bsr);
    25 ifstream in(fName);
    26 if(!in)
    2723{
    28   Error(BSR() + BText("Could not open input file: ") +
    29         fName + "\n");
    30   return(-1);
     24  //BOOST_SPIRIT_DEBUG_NODE(bsr);
     25  BText curPath = BDir::GetCurrent();
     26  const char* fName = fileName.c_str();
     27  BText fullPath = Replace(curPath+"/"+BText(fName),"\\","/");
     28  {
     29    ifstream in(fName);
     30    if(!in)
     31    {
     32      Error(BSR() + BText("Could not open input file: ") +
     33            fName + "\n");
     34      return(-1);
     35    }
     36  }
     37  bsr.fileName = fileName;
     38  bsr.fileSize = GetFileSize(fName);
     39//bsr.file = &in;
     40
     41  skip_grammar skip;
     42  typedef position_iterator< file_iterator<char> > iterator_t;
     43  file_iterator<char> fiter(fullPath.String());
     44  iterator_t begin(fiter, fiter.make_end(), fName);
     45  iterator_t end; 
     46  if(verbose)
     47  {
     48    Std(BSR()+"Parsing BSR file "+fullPath+" with "+(int)bsr.fileSize+" bytes\n");
     49  }
     50  parse_info<iterator_t> result = parse(begin, end, bsr, skip);
     51  if(!result.full && !bsr.endFound_)
     52  {
     53    BText msg = BSR() +fullPath+ " fails parsing\n"+url_parse_bsr();
     54    BText desc;
     55    for (int i = 0; i < 1000; i++)
     56    {
     57      if (result.stop == end) break;
     58      desc += *result.stop++;
     59    }
     60    if(!desc.HasName()) { desc = "Unexpectend end of file"; }
     61    Error(msg+"\nProblem description:'"+desc+"'");
     62    return(-2);
     63  }
    3164}
    32 bsr.fileName = fileName;
    33 bsr.fileSize = GetFileSize(fName);
    34 bsr.file = &in;
    35 
    36 in.unsetf(ios::skipws); //  Turn of white space skipping on the stream
    37 skip_grammar skip;
    38 typedef position_iterator< file_iterator<char> > iterator_t;
    39 file_iterator<char> fiter(fileName);
    40 iterator_t begin(fiter, fiter.make_end(), fName);
    41 iterator_t end; 
    42 Std(BSR()+"Parsing BSR file "+fName+" with "+(int)bsr.fileSize+" bytes\n");
    43 parse_info<iterator_t> result = parse(begin, end, bsr, skip);
    44 if(!result.full && !bsr.endFound_)
    45 {
    46   BText msg = BSR() + BText(fName) + " Fails Parsing\n"+url_parse_bsr();
    47   BText desc;
    48   for (int i = 0; i < 1000; i++)
    49   {
    50     if (result.stop == end) break;
    51     desc += *result.stop++;
    52   }
    53   if(!desc.HasName()) { desc = "Unexpectend end of file"; }
    54   Error(msg+"\nProblem description:'"+desc+"'");
    55   return(-2);
    56 }
  • tol/btol/vmatrix_type/vmat_bsr.cpp

    r8a4804f rac73d05  
    275275    : s ((bys_sparse_reg_moduletype&)s_)
    276276    {
     277      assign_moduleType assign_moduleType_(s.moduleType);
    277278      #include "tol_bvmat_bsr_err.h"     
    278279      endOfSentence = (ch_p(';') | error_comma2Expected);
    … …  
    280281      (
    281282        str_p("Module.Type") >> ch_p('=') >>
    282         (str_p("primary")|str_p("joint")|str_p("master"))[assign_a(s.moduleType)] >>
     283        (str_p("primary")|str_p("joint")|str_p("master"))[assign_moduleType_] >>
    283284        endOfSentence
    284285      );
    … …  
    302303  bys_sparse_reg_moduletype bsr;
    303304  int errCode = 0;
     305  bool verbose = false;
    304306  #include "tol_bvmat_bsr_run.h"
    305307  if(!errCode)
    … …  
    761763////////////////////////////////////////////////////////////////////////////////
    762764int Parse_Module(const BText& filePath,
    763                        BText& moduleType,
     765                 const BText& moduleType,
    764766                 BSet& contens_)
    765767////////////////////////////////////////////////////////////////////////////////
    766768{
    767   if(moduleType=="")
    768   {
    769     Parse_ModuleType(filePath, moduleType);
    770   }
    771   if(moduleType=="master")
     769  BText modTyp = moduleType;
     770  if(modTyp=="")
     771  {
     772    Parse_ModuleType(filePath, modTyp);
     773  }
     774  if(modTyp=="master")
    772775  {
    773776    return(Parse_MasterModule(filePath,contens_));
  • tol/btol/vmatrix_type/vmat_bsr_joint.cpp

    r8a4804f rac73d05  
    5252    equ_info.index = 0;
    5353    ine_info.index = 0;
     54    moduleType = "joint";
    5455  }
    5556   
    … …  
    9091      add_symbol<sigma_info>    add_sig(s.sig);
    9192      add_symbol<noise_info>    add_res(s.noise);
     93      assign_moduleType assign_moduleType_(s.moduleType);
    9294      assign_declared_var_name assign_declared_var_name_(s.var);
    9395      assign_extern_var_name assign_extern_var_name_(s.var);
    … …  
    116118      assign_IsGE_to_ine assign_IsGE_to_ine_(s.ine_info);
    117119      assign_IsLE_to_ine assign_IsLE_to_ine_(s.ine_info);
    118       assign_var_to_ine_term assign_var_to_ine_term_(s.var.vec,s.ine_var_term_info,s.Anzmax_);
     120      assign_var_to_ine_term assign_var_to_ine_term_(s.var,s.ine_var_term_info,s.Anzmax_);
    119121      assign_noise_to_term assign_noise_to_term_(s.noise.vec,s.sig.vec,&s.equ_info);
    120122      add_term_to_equ add_term_to_equ_(s.equ_info.X, s.equ_var_term_info);
    … …  
    403405        signIneVarTerm >>
    404406        (
    405           s.var.table[assign_var_to_ine_term_]
     407          variableExistentOrExtern[assign_var_to_ine_term_]
    406408          |
    407409          (
    408410            knownURealIneTerm >>
    409             (product                              | error_prodExpected     ) >>
    410             (s.var.table[assign_var_to_ine_term_] | error_linBlkVarExpected)
     411            (product                                           | error_prodExpected     ) >>
     412            (variableExistentOrExtern[assign_var_to_ine_term_] | error_linBlkVarExpected)
    411413          )
    412414        )
    … …  
    491493        //header
    492494        (
    493           ((str_p("Module.Type") >> ch_p('=') >> str_p("joint")[assign_a(s.moduleType)] >> endOfSentence) | eps_p) >>
     495          ((str_p("Module.Type") >> ch_p('=') >>
     496                  str_p("joint")[assign_moduleType_] >>
     497           endOfSentence) | eps_p) >>
    494498          model_nameDef >>
    495499          model_descriptionDef >>
    … …  
    684688  bys_sparse_reg_joint bsr;
    685689  int errCode = 0;
     690  bool verbose = true;
    686691  #include "tol_bvmat_bsr_run.h"
    687692  if(!errCode)
  • tol/btol/vmatrix_type/vmat_bsr_master.cpp

    r8a4804f rac73d05  
    4646    currentSubMod()
    4747  {
     48    moduleType = "master";
    4849  }
    4950   
    … …  
    6465    : s ((bys_sparse_reg_master&)s_)
    6566    {
     67      assign_moduleType assign_moduleType_(s.moduleType);
    6668      add_submodule add_submodule_(s.subMod, s.currentSubMod);
    6769      assign_explicit_end assign_explicit_end_(s.endFound_);
    … …  
    8183        (
    8284          str_p("Module.Type") >> ch_p('=') >>
    83           (str_p("master")[assign_a(s.moduleType)]) >>
     85          (str_p("master")[assign_moduleType_]) >>
    8486          endOfSentence
    8587        ) |
    … …  
    258260  bys_sparse_reg_master bsr;
    259261  int errCode = 0;
     262  bool verbose = true;
    260263  #include "tol_bvmat_bsr_run.h"
    261264  if(!errCode)
  • tol/btol/vmatrix_type/vmat_bsr_primary.cpp

    r8a4804f rac73d05  
    5252    descX_ = "Input regression matrix";
    5353    var.info.used = true;
     54    moduleType = "primary";
    5455  }
    5556   
    … …  
    6869      openBracket, closeBracket,
    6970      openKey, closeKey,
    70       identifier_simple, identifier, newIdentifier,
     71      identifier_simple, identifier, nonExistentIdentifier, newIdentifier,
    7172      resSigmaDef, errorTerm,
    7273      signEquVarTerm, signIneVarTerm,
    … …  
    7576      knownURealEquTerm,
    7677      knownURealIneTerm,
    77       variable, missing, arima, noise,
     78      variable, variableExistentOrExtern, missing, arima, noise,
    7879      matOrVMatExpr, output, input,
    7980      ineVarTerm, inequation,
    … …  
    8990      add_symbol<sigma_info>    add_sig(s.sig);
    9091      add_symbol<noise_info>    add_res(s.noise);
     92      assign_moduleType assign_moduleType_(s.moduleType);
    9193      assign_declared_var_name assign_declared_var_name_(s.var);
     94      assign_extern_var_name assign_extern_var_name_(s.var);
    9295      assign_missing_min_neginf assign_missing_min_neginf_(s.mis);
    9396      assign_missing_max_posinf assign_missing_max_posinf_(s.mis);
    … …  
    114117      assign_IsGE_to_ine assign_IsGE_to_ine_(s.ine_info);
    115118      assign_IsLE_to_ine assign_IsLE_to_ine_(s.ine_info);
    116       assign_var_to_ine_term assign_var_to_ine_term_(s.var.vec,s.ine_var_term_info,s.Anzmax_);
     119      assign_var_to_ine_term assign_var_to_ine_term_(s.var,s.ine_var_term_info,s.Anzmax_);
    117120      add_term_to_ine add_term_to_ine_(s.ine_info.A,s.ine_var_term_info);
    118121      add_ine add_ine_(s.ine_vec, s.ine_info);
    … …  
    172175        (*(identifier_simple >> member)) >> identifier_simple;
    173176        ;
     177      nonExistentIdentifier =
     178         (identifier - (s.var.table | s.sig.table | s.mis.table | s.noise.table));
    174179      newIdentifier =
    175180        (
    176           (identifier - (s.var.table | s.sig.table | s.mis.table | s.noise.table)) |
     181          nonExistentIdentifier |
    177182          (identifier >> error_alreadyInUse >> nothing_p >> end_p)
    178183        )
    … …  
    241246        endOfSentence[add_var]
    242247        ;
     248      variableExistentOrExtern =
     249        s.var.table |
     250        (
     251          nonExistentIdentifier[assign_extern_var_name_]
     252                               [add_var]
     253        );
    243254      missing =
    244255        newIdentifier[increment_a(s.mis.info.index)]
    … …  
    372383        signIneVarTerm >>
    373384        (
    374           s.var.table[assign_var_to_ine_term_]
     385          variableExistentOrExtern[assign_var_to_ine_term_]
    375386          |
    376387          (
    377388            knownURealIneTerm >>
    378             (product                              | error_prodExpected     ) >>
    379             (s.var.table[assign_var_to_ine_term_] | error_linBlkVarExpected)
     389            (product                                           | error_prodExpected     ) >>
     390            (variableExistentOrExtern[assign_var_to_ine_term_] | error_linBlkVarExpected)
    380391          )
    381392        )
    … …  
    397408        (
    398409          str_p("Module.Type") >> ch_p('=') >>
    399           str_p("primary")[assign_a(s.moduleType)] >>
     410          str_p("primary")[assign_moduleType_] >>
    400411          endOfSentence
    401412        ) |
    … …  
    636647  bys_sparse_reg_primary bsr;
    637648  int errCode = 0;
     649  bool verbose = true;
    638650  #include "tol_bvmat_bsr_run.h"
    639651  if(!errCode)
Note: See TracChangeset for help on using the changeset viewer.