void Foam::csvTableReader<Type>::operator() ( const fileName& fName, List<Tuple2<scalar, Type>>& data ) { // IFstream in(fName); autoPtr<ISstream> inPtr(fileHandler().NewIFstream(fName)); ISstream& in = inPtr(); DynamicList<Tuple2<scalar, Type>> values; // Skip header if (headerLine_) { string line; in.getLine(line); } while (in.good()) { string line; in.getLine(line); DynamicList<string> split; std::size_t pos = 0; while (pos != std::string::npos) { std::size_t nPos = line.find(separator_, pos); if (nPos == std::string::npos) { split.append(line.substr(pos)); pos=nPos; } else { split.append(line.substr(pos, nPos-pos)); pos=nPos+1; } } if (split.size() <= 1) { break; } scalar time = readScalar(IStringStream(split[timeColumn_])()); Type value = readValue(split); values.append(Tuple2<scalar,Type>(time, value)); } data.transfer(values); }
/////////////////////////////////////////////////////////////////////////// // Write the next N bits // Inputs: // int nbrBits The number of bits to write // const unsigned char* inBuffer Buffer containing the bits, starting // with the LSB of the first byte. /////////////////////////////////////////////////////////////////////////// void BitStreamWrite::WriteBits( int nbrBits, const unsigned char* inBuffer ) { BitCPtr inPtr(inBuffer, 0); while (nbrBits > 0) { int availBits = endPtr - current; if (availBits > nbrBits) { availBits = nbrBits; } nbrBits -= availBits; bitsWritten += availBits; // TODO: Optimize the bit copy using bytewise shift/mask while (availBits != 0) { *current = (int)*inPtr; availBits--; ++current; ++inPtr; } if (nbrBits > 0) { // Buffer must be full; write it out byteWriter->Write(bufferSize, buffer); current = startPtr; } } }
void convertSSBPipedFile(const std::string &tblFolder) { StopWatch watch; watch.init(); scoped_array<char> inPtr(new char[IO_BUFFER_SIZE]); scoped_array<char> outPtr(new char[IO_BUFFER_SIZE]); char *inb = inPtr.get(); char *outb = outPtr.get(); convertOneSSBPipedFile<Customer>(inb, outb, tblFolder, "customer"); convertOneSSBPipedFile<Date>(inb, outb, tblFolder, "date"); convertOneSSBPipedFile<Lineorder>(inb, outb, tblFolder, "lineorder"); convertOneSSBPipedFile<Part>(inb, outb, tblFolder, "part"); convertOneSSBPipedFile<Supplier>(inb, outb, tblFolder, "supplier"); #ifndef _MSC_VER ::sync (); #endif watch.stop(); LOG(INFO) << "converted all SSB tbl files to bin files. " << watch.getElapsed() << " micsosec"; }