示例#1
0
//------------------------------------------------------------------------------
/// \brief
//------------------------------------------------------------------------------
std::string SqBcList::impl::SpTableSql ()
{
  std::string str;
  CStr packName = m_pack->GetPackage()->PackageName();
  ColMap &colMap(iSpTableCols());
  if (colMap.find(packName) == colMap.end()) return str;
  std::vector<CStr> &colStrs = colMap[packName].first;
  std::vector<CStr> &colTypes = colMap[packName].second;
  // find any aux variables that we don't create by default
  std::set<CStr> strs;
  strs.insert("K");
  strs.insert("I");
  strs.insert("J");
  for (size_t i=3; i<colStrs.size(); ++i) // skip OID, CELLID, SPID
  {
    CStr tmp = colStrs[i];
    tmp.ToUpper();
    strs.insert(tmp);
  }
  std::vector<CStr> fieldStr = m_pack->m_fieldStrings;
  std::vector<CStr> aux;
  for (size_t i=0; i<fieldStr.size(); ++i)
  {
    CStr tmp = fieldStr[i];
    tmp.ToUpper();
    if (strs.find(tmp) == strs.end())
    {
      colStrs.push_back(fieldStr[i]);
      colTypes.push_back("REAL");
    }
  }

  std::stringstream ss;
  ss << "CREATE TABLE LST_STRESS_PERIODS ("
     << colStrs.front() << " " << colTypes.front();
  for (size_t i=1; i<colStrs.size(); ++i)
    ss << ", " << colStrs[i] << " " << colTypes[i];
  ss << ")";
  return ss.str();
} // SqBcList::impl::SpTableSql