示例#1
0
int LgScriptWriter::write(State&, const char* p, size_t sz)
{
	if (sz != 0)
	{
		outfile.write(p, sz);
		if (outfile.bad())
			return -1;
	}
	return 0;
}
示例#2
0
int HTTPRequest::copyToFile(ofstream& ofs)
{
	size_t contentLength = atoi(getHTTPHeader("Content-Length").c_str());

	if (ofs.good())
	{
		ofs.write(m_requestBody.c_str(), contentLength);
	}

	if (ofs.bad())
		return -1;

	return 0;
}
示例#3
0
bool TissueState::exportToDbTables(const int ImageHeight, ofstream& framesFile, ofstream &verticesFile, ofstream &cellsFile, ofstream &ignoredCellsFile, ofstream &undirectedBondsFile, ofstream &directedBondsFile, unsigned long &lastVid, unsigned long &lastDbid, unsigned long &lastUbid) const {
  if(contains(Cell::VoidCellId)) {
    std::cout << "Found void cell id " << Cell::VoidCellId << " in frame " << _frameNumber << "!" << std::endl;
    return false;
  }
  
  // add data to frames table
  framesFile << _frameNumber << LogFile::DataSeparator << _time << '\n';
  if(framesFile.bad()) {
    std::cout << "Error writing frame data!" << std::endl;
    return false;
  }
  
  // add data to vertex table and generate map: vertex pointer -> vid
  std::map<Vertex*,unsigned long> vertexPointerToVid;
  for(int i=0; i<numberOfVertices(); ++i) {
    Vertex *v = vertex(i);
    ++lastVid;
    vertexPointerToVid[v] = lastVid;
    // write data:
    verticesFile << _frameNumber << LogFile::DataSeparator << lastVid << LogFile::DataSeparator << v->r.x() << LogFile::DataSeparator << ImageHeight-1-v->r.y() << '\n';
    if(verticesFile.bad()) {
      std::cout << "Error writing vertex data!" << std::endl;
      return false;
    }
  }
  
  // add data to cell table and generate map for bond sorting within cells
  std::map<DirectedBond*,DirectedBond*> leftBondSeenFromCellMap;
  // void cell
  cellsFile << _frameNumber << LogFile::DataSeparator << Cell::VoidCellId
          << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 
          << LogFile::DataSeparator << -1 << LogFile::DataSeparator << -1 << LogFile::DataSeparator << 0 
          << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 
          << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 
          << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 
          << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 << LogFile::DataSeparator << 0 
          << '\n';
  // other cells
  for(TissueState::CellConstIterator it=beginCellIterator(); it!=endCellIterator(); ++it) {
    Cell *c = cell(it);
    for(unsigned int j=0; j<c->bonds.size(); ++j) {
      leftBondSeenFromCellMap[c->bonds[j]] = c->bonds[(j+1)%c->bonds.size()];
    }
    // write data; revert signs of nematic xy components such that the values in the .dat files corresponds to a coordinate system with the y axis pointing upwards
    cellsFile << _frameNumber << LogFile::DataSeparator << c->id
            << LogFile::DataSeparator << (int)c->duringTransitionBefore << LogFile::DataSeparator << (int)c->duringTransitionAfter << LogFile::DataSeparator << c->daughter
            << LogFile::DataSeparator << c->r.x() << LogFile::DataSeparator << ImageHeight-1-c->r.y() << LogFile::DataSeparator << c->area
            << LogFile::DataSeparator << c->elongation.c1() << LogFile::DataSeparator << -c->elongation.c2()
            << LogFile::DataSeparator << c->polarityR.c1() << LogFile::DataSeparator << -c->polarityR.c2() << LogFile::DataSeparator << c->intIntensityR
            << LogFile::DataSeparator << c->polarityG.c1() << LogFile::DataSeparator << -c->polarityG.c2() << LogFile::DataSeparator << c->intIntensityG
            << LogFile::DataSeparator << c->polarityB.c1() << LogFile::DataSeparator << -c->polarityB.c2() << LogFile::DataSeparator << c->intIntensityB
            << '\n';
    if(cellsFile.bad()) {
      std::cout << "Error writing cell data!" << std::endl;
      return false;
    }
  }

  // ignored cells
  for(set<CellIndex>::const_iterator it=_ignoredCells.begin(); it!=_ignoredCells.end(); ++it) {
    // write data:
    ignoredCellsFile << _frameNumber << LogFile::DataSeparator << *it << '\n';
    if(ignoredCellsFile.bad()) {
      std::cout << "Error writing data for ignored cells!" << std::endl;
      return false;
    }
  }

   
  // add data to undirected bonds table and generate map: bond pointer -> dbid
  std::map<DirectedBond*,unsigned long> directedBondPointerToDbid;
  std::map<DirectedBond*,unsigned long> directedBondPointerToUbid;
  std::map<DirectedBond*,unsigned long> newConjBondDbids;
  std::map<DirectedBond*,DirectedBond*> newConjBondLeftOfConjBondAsSeenFromVoidCell;
  for(TissueState::BondConstIterator it=beginBondIterator(); it!=endBondIterator(); ++it) {
    DirectedBond *b = bond(it);
    ++lastDbid;
    directedBondPointerToDbid[b] = lastDbid;
    if(!b->conjBond) {
      ++lastDbid;
      newConjBondDbids[b] = lastDbid;
      
      // conj bond of bond left of conj bond seen from void cell
      Vertex *v = b->rightVertex;
      unsigned int i;
      for(i=0; i<v->bonds.size(); ++i) {
        if(v->bonds[i]==b) break;
      }
      if(i==v->bonds.size()) {
        std::cout << "TissueState::exportToDbTables: bond not found within rightVertex!" << std::endl;
        throw std::exception();
      }
      DirectedBond *oneBondCwAtVertex = v->bonds[ (i+v->bonds.size()-1)%v->bonds.size() ];
      
      Cell *c = oneBondCwAtVertex->cell;
      for(i=0; i<c->bonds.size(); ++i) {
        if(c->bonds[i]==oneBondCwAtVertex) break;
      }
      if(i==c->bonds.size()) {
        std::cout << "TissueState::exportToDbTables: bond not found within cell!" << std::endl;
        throw std::exception();
      }
      DirectedBond *oneBondCwAtCell = c->bonds[ (i+c->bonds.size()-1)%c->bonds.size() ];
      
      newConjBondLeftOfConjBondAsSeenFromVoidCell[b] = oneBondCwAtCell;
    }
    if((!b->conjBond) || (directedBondPointerToUbid.count(b->conjBond)==0)) {
      ++lastUbid;
      directedBondPointerToUbid[b] = lastUbid;
      undirectedBondsFile << _frameNumber << LogFile::DataSeparator << lastUbid << LogFile::DataSeparator << b->length << '\n';
      if(undirectedBondsFile.bad()) {
        std::cout << "Error writing undirectedBond data!" << std::endl;
        return false;
      }     
    } else {
      directedBondPointerToUbid[b] = directedBondPointerToUbid.at(b->conjBond);
    }
  }
  
  // add data to directed bonds table
  for(TissueState::BondConstIterator it=beginBondIterator(); it!=endBondIterator(); ++it) {
    DirectedBond *b = bond(it);
    if(b->conjBond) {
      directedBondsFile << _frameNumber << LogFile::DataSeparator << directedBondPointerToDbid.at(b) << LogFile::DataSeparator << directedBondPointerToDbid.at(b->conjBond) << LogFile::DataSeparator << directedBondPointerToUbid.at(b) << LogFile::DataSeparator << b->cell->id << LogFile::DataSeparator << vertexPointerToVid[b->rightVertex] << LogFile::DataSeparator << directedBondPointerToDbid.at(leftBondSeenFromCellMap.at(b)) << '\n';
      if(directedBondsFile.bad()) {
        std::cout << "Error writing directedBond data!" << std::endl;
        return false;
      }     
    } else {
      // add bond
      directedBondsFile << _frameNumber << LogFile::DataSeparator << directedBondPointerToDbid.at(b) << LogFile::DataSeparator << newConjBondDbids.at(b) << LogFile::DataSeparator << directedBondPointerToUbid.at(b) << LogFile::DataSeparator << b->cell->id << LogFile::DataSeparator << vertexPointerToVid[b->rightVertex] << LogFile::DataSeparator << directedBondPointerToDbid.at(leftBondSeenFromCellMap.at(b)) << '\n';
      if(directedBondsFile.bad()) {
        std::cout << "Error writing directedBond data!" << std::endl;
        return false;
      }
      // add new conj bond
      DirectedBond *conjBondOfLeftBondAsSeenFromVoidCell = newConjBondLeftOfConjBondAsSeenFromVoidCell.at(b);
      if(newConjBondDbids.count(conjBondOfLeftBondAsSeenFromVoidCell)==0) {
        std::cout << "TissueState::exportToDbTables: Problem with margin bonds!" << std::endl;
        throw std::exception();
      }
      directedBondsFile << _frameNumber << LogFile::DataSeparator << newConjBondDbids.at(b) << LogFile::DataSeparator << directedBondPointerToDbid.at(b) << LogFile::DataSeparator << directedBondPointerToUbid.at(b) << LogFile::DataSeparator << Cell::VoidCellId << LogFile::DataSeparator << vertexPointerToVid[b->leftVertex] << LogFile::DataSeparator << newConjBondDbids.at(conjBondOfLeftBondAsSeenFromVoidCell) << '\n';
      if(directedBondsFile.bad()) {
        std::cout << "Error writing directedBond data!" << std::endl;
        return false;
      }     
    }
  }
  
  return true;
}
示例#4
0
int KiCadSCH::patchFile(ofstream &oFile)
{
    string iline, oline, last_oline;
    modiFile_t currentpatch;
    int line_n;
    unsigned i;
    unsigned olineNbr = 0;

    iSCHfile.exceptions(std::ifstream::failbit | std::ifstream::badbit);
    oFile.exceptions(std::ifstream::failbit | std::ifstream::badbit);

    try{
        last_oline = "";
        for(line_n=0; true; line_n++){
            getline(iSCHfile, iline);
            oline = iline;
            currentpatch.add = false;
            currentpatch.del = false;
            currentpatch.line = "";
            currentpatch.lineNbr = 0;
            for(i=0;i<patchvec.size();i++){
                if(line_n == patchvec[i].lineNbr){
                    currentpatch = patchvec[i];
                    patchvec[i].prevline = last_oline;
                    if(currentpatch.add){
                        oFile << currentpatch.line << endl;
                        olineNbr++;
                        patchvec[i].olineNbr = olineNbr;
                    }
                }
            }
            if(!currentpatch.del){
                oFile << oline << endl;
                last_oline = oline;
                olineNbr++;
                if(patchvec.size()>i){ // if patchvec is empty
                    patchvec[i].olineNbr = olineNbr;
                }
            }else{
                if(patchvec.size()<i) patchvec[i].deletedline = oline;
            }
        }
    }
    catch(std::fstream::failure e){
        if(iSCHfile.bad()) return -1;
        if(oFile.bad()) return -2;
        if(iSCHfile.fail()) return -1;
        if(oFile.fail()) return -2;
        if(iSCHfile.eof()){
            iSCHfile.clear();
            iSCHfile.seekg(0, ios::beg);
            return 0;
        }
        if(oFile.eof()) {
            oFile.clear();
            return -2;
        }
        return -255;
    }
    return 0;
}