コード例 #1
0
ファイル: code_generator.cpp プロジェクト: edmundus/casadi
  int CodeGenerator::addSparsity(const Sparsity& sp) {
    // Get the current number of patterns before looking for it
    size_t num_patterns_before = added_sparsities_.size();

    // Get index of the pattern
    const void* h = static_cast<const void*>(sp.get());
    int& ind = added_sparsities_[h];

    // Generate it if it does not exist
    if (added_sparsities_.size() > num_patterns_before) {

      // Compact version of the sparsity pattern
      std::vector<int> sp_compact = sp.compress();

      // Codegen vector
      ind = getConstant(sp_compact, true);
    }

    return ind;
  }
コード例 #2
0
ファイル: code_generator.cpp プロジェクト: edmundus/casadi
 int CodeGenerator::getSparsity(const Sparsity& sp) const {
   const void* h = static_cast<const void*>(sp.get());
   PointerMap::const_iterator it=added_sparsities_.find(h);
   casadi_assert(it!=added_sparsities_.end());
   return it->second;
 }