コード例 #1
0
ファイル: Collidable.cpp プロジェクト: Burnsidious/FSGDEngine
    void BoundingVolume::ReadBV(fstream &fin, BoundingVolume* &bvPtr)
    {
        unsigned int bvType;
        fin.read( (char*)&bvType, sizeof(unsigned int) );

        switch(bvType)
        {
        case EDCO_SPHERE:
            {
				bvPtr = new Sphere;
                Sphere* spherePtr = (Sphere*)bvPtr;

                fin.read( (char*)spherePtr->center.v, sizeof(Float3) );
                fin.read( (char*)&spherePtr->radius, sizeof(float) );
            }
            break;
        case EDCO_AABB:
            {
				bvPtr = new Aabb;
                Aabb* aabbPtr = (Aabb*)bvPtr;

                fin.read( (char*)aabbPtr->min.v, sizeof(Float3) );
                fin.read( (char*)aabbPtr->max.v, sizeof(Float3) );
            }
            break;
        default:
            break;
        }
    }
コード例 #2
0
ファイル: scalebarobject.cpp プロジェクト: Elavina6/drishti
void
ScaleBarObject::load(fstream& fin)
{
  clear();

  int len;
  bool done = false;
  char keyword[100];
  while (!done)
    {
      fin.getline(keyword, 100, 0);

      if (strcmp(keyword, "scalebarobjectend") == 0)
	done = true;
      else if (strcmp(keyword, "position") == 0)
	{
	  float x, y;
	  fin.read((char*)&x, sizeof(float));
	  fin.read((char*)&y, sizeof(float));
	  m_pos = QPointF(x,y);
	}
      else if (strcmp(keyword, "voxels") == 0)
	fin.read((char*)&m_voxels, sizeof(float));
      else if (strcmp(keyword, "type") == 0)
	fin.read((char*)&m_type, sizeof(bool));
      else if (strcmp(keyword, "textpos") == 0)
	fin.read((char*)&m_textpos, sizeof(bool));
    }
}
コード例 #3
0
/**********************************************************************
 Wczytuje bufor atrybutow dla mesh'a z pliku. Bufor atrybutow ma
 postac: indeks macierzy, waga, indeks macierzy, waga...
**********************************************************************/
void SkinnedMesh::loadAttributes(fstream &file)
{
	//Maksymalna ilosc kosci, wplywajacych na wierzcholek.
	file.read((char*)&wmax,sizeof(int));

	abuf=new float[vnum*wmax*2];
	file.read((char*)abuf,sizeof(float)*wmax*vnum*2);

	//Przygotowanie VBO dla buforow atrybutow.
	avbo=new GLuint[wmax];

	glGenBuffersARB(wmax, avbo);

	unsigned int offset=0;
	for(unsigned int i=0; i<wmax; i++)
	{
		glBindBufferARB(GL_ARRAY_BUFFER_ARB,avbo[i]);
		glBufferDataARB(GL_ARRAY_BUFFER_ARB,vnum*2*sizeof(float),abuf+offset,GL_STATIC_DRAW_ARB);
		offset+=vnum*2;
	}

	//Deaktywacja buforow.
	glBindBufferARB(GL_ARRAY_BUFFER_ARB,0);

	if(abuf) { delete[] abuf; abuf=NULL; }
}
コード例 #4
0
void BLOCK::read(fstream &fp){
	fp.read((char*)&bytesUsed, sizeof(bytesUsed));
	for(int i = 0; i < bytesUsed; i++){
		fp.read((char*)&data[i], sizeof(char));
	}
	fp.read((char*)&next, sizeof(next));
}
コード例 #5
0
// create formatted text file for printing
void createTextFile(fstream &readFromFile)
{
	// create text file
	ofstream outPrintFile("print.txt", ios::out);

	// exit program if ofstream cannot create file
	if (!outPrintFile)
	{
		cerr << "File could not be created" << endl;
		exit(1);
	} // end if

	outPrintFile << left << setw(10) << "Account" << setw(16)
		<< "Last name" << setw(11) << "First Name" << right << setw(10)
		<< "Balance" << endl;

	// ** SET FILE POSITION POINTER TO BEGINNING OF readFromFile
	readFromFile.seekg(0);

	// read first record from record file
	ClientData client;
	readFromFile.read( reinterpret_cast<char *>(&client), sizeof ( ClientData) );

	// copy all records from record file into text file
	while (!readFromFile.eof() ) // While not the end of file
	{
		// Write single record to text file
		if (client.getAccountNumber() != 0) // skip empty records
			outputLine(outPrintFile, client);

		// read next record from record file
		readFromFile.read(reinterpret_cast<char * >(&client), sizeof( ClientData ) );
	} // end while
} // end function createTextFile
コード例 #6
0
ファイル: CCoder.cpp プロジェクト: metopa/BWT-RLE-Huffman
bool CCoder::decodeRLE( fstream& in, CFastOStream& out ) {
	uint32_t blockSize = 0;
	uint32_t lastBlockSize = 0;
	uint32_t blockCount = 0;
	in.seekg( -12, in.end );
	logger.setFileSize( (size_t) in.tellg() + 12 );

	in.read( (char *) &blockSize, 4 );
	in.read( (char *) &lastBlockSize, 4 );
	in.read( (char *) &blockCount, 4 );

	in.seekg( -12 - (int64_t)blockCount * 4, in.end );

	vector<uint32_t> header;
	header.resize( blockCount, 0 );

	in.read( (char *) &header.front(), blockCount * 4 );

	if ( in.fail() )
		return false;

	logger.updateInput( blockCount * 4 + 12 );
	in.clear();
	in.seekg( 0, in.beg );
	CFISFromStream inStream( in );

	return decodeRLE( inStream, out, header, blockSize, lastBlockSize, blockCount );
}
コード例 #7
0
void update1()            //sorted file,sorted emp.no;
{
 table temp;
 char tname[15];
 cout<<"Enter temporary filename:";
 gets(tname);
 f.open(fname,ios::in);
 fstream f1;
 f1.open(tname,ios::out);
 int EMPNO;
 f.read((char*)&temp,s);
 cout<<"Enter Employee number whose record to be updated:";
 cin>>EMPNO;
 while(f)
 {
  if(temp.empno==EMPNO)
  {
   cout<<"Give new data:\n";
   getdata(temp);
   cout<<"Enter next Employee number, which is to be updated "
       <<"(0 if no more updation):";
   cin>>EMPNO;
  }
  f1.write((char*)&temp,s);
  f.read((char*)&temp,s);
 }
コード例 #8
0
//----------------------------------------------------------------------------------------------
int ObjectSerializer::DeserializeBasicType(char* pMem, TypeNode* pType, fstream& eye)
{
	int size = m_basicTypeSize[pType->Type];
	bool isNull = false;

	if (pType->Indirection)
	{
		eye.read(reinterpret_cast<char*>(&isNull), sizeof(bool));
		char* memChunk = NULL;
		if (!isNull)
		{
			memChunk = new char[size];
			eye.read(memChunk, size);
		}

		unsigned* addr32 = reinterpret_cast<unsigned*>(pMem);
		*addr32 = reinterpret_cast<unsigned>(memChunk);

		size = sizeof(unsigned);
	}
	else
	{
		eye.read(pMem, size);
	}

	return size;
}
コード例 #9
0
// Create formatted text file for printing
void textFile( fstream &readFromFile )
{
   ofstream outPrintFile( "print.txt", ios::out );

   if ( !outPrintFile ) {
      cerr << "File could not be opened." << endl;
      exit( 1 );
   }

   outPrintFile << setiosflags( ios::left ) << setw( 10 ) 
       << "Account" << setw( 16 ) << "Last Name" << setw( 11 )
       << "First Name" << resetiosflags( ios::left ) 
       << setw( 10 ) << "Balance" << endl;
   readFromFile.seekg( 0 );

   clientData client;
   readFromFile.read( reinterpret_cast<char *>( &client ),
                      sizeof( clientData ) );

   while ( !readFromFile.eof() ) {
      if ( client.accountNumber != 0 )
         outputLine( outPrintFile, client );

      readFromFile.read( reinterpret_cast<char *>( &client ), 
                         sizeof( clientData ) );
   }
}
コード例 #10
0
ファイル: rubik_tr.cpp プロジェクト: s4p3r-c1n0s/CPP_projects
void write_comb_c(fstream &f)
{
cout<<"Combinations are being processed.........\nPlease Wait........";
char cb[6][3][3],cb_n[6][3][3],cb_o[6][3][3];
int max_mv=0;
long int s=0,cur_rec;
cb_comb c,c_n,c_o;
f.open("combinat.dat",ios::in|ios::binary|ios::nocreate);
f.seekg(-sizeof(c),ios::end);
f.read((char*)(&c),sizeof(c));
f.close();
max_mv=c.r_moves()-1;
f.open("combinat.dat",ios::in|ios::binary|ios::nocreate);
f.seekg(0);
while(f.read((char*)(&c),sizeof(c)))
if(max_mv==c.r_moves())
	{
	cur_rec=(f.tellg()/sizeof(c))-1;
	break;
	}
f.close();
cout<<cur_rec;
getch();
c.cpy_cube(cb);
while(max_mv==c.r_moves())
	{
	for(int i=0;i<6;i++)
	for(int j=0;j<2;j++)
		{
		c_n.new_comb(cb,v[i],dr[j],max_mv);
		c_n.cpy_cube(cb_n);
		s=0;
		f.open("combinat.dat",ios::in|ios::binary|ios::nocreate);
		f.seekg(0);
		while(f.read((char*)(&c_o),sizeof(c)))
			{
			c_o.cpy_cube(cb_o);
			if(c_o.r_moves()<=c_n.r_moves())
			s+=cmp_cb(cb_n,cb_o);
			if(s>0)
			break;
			}
		f.close();
		if(s==0)
			{
			f.open("combinat.dat",ios::app|ios::binary|ios::nocreate);
			f.write((char*)(&c_n),sizeof(c));
			f.close();
			}
		}
	cur_rec++;
	f.open("combinat.dat",ios::in|ios::binary|ios::nocreate);
	f.seekg(sizeof(c)*cur_rec);
	f.read((char*)(&c),sizeof(c));
	c.cpy_cube(cb);
	f.close();
	}
return;
}
コード例 #11
0
void Henchman::read(fstream& saveFile){
	StringRead(saveFile,Tag);
	powers.read(saveFile);
	saveFile.read((char *) &CharacterLevel,4);
	saveFile.read((char *) &TalentPoints,4);
	currentLoadout.read(saveFile);
	StringRead(saveFile,MappedPower);
}
コード例 #12
0
//----------------------------------------------------------------------------------------------
int ObjectSerializer::DeserializeUserDefinedType(char* p_fieldAddress, TypeNode* p_type, bool p_isPtr, fstream& p_eye)
{
    int     size = 0;
    UserObject* object = NULL;
    bool    isNull = false;

    if(p_isPtr)
    {
        unsigned* addr32;
        p_eye.read(reinterpret_cast<char*>(&isNull), sizeof(bool));
        addr32 = reinterpret_cast<unsigned*>(p_fieldAddress);

        if(!isNull)
        {
            string  typeName;
            char    buffer[MaxTypeNameLength + 1];

            p_eye.read(buffer, MaxTypeNameLength + 1);
            typeName = buffer;
            object = static_cast<UserObject*>(g_ObjectFactory.GetObject(typeName)->Prototype());

            PerformLateBinding(object, p_type);

            object->InitializeAddresses();

            Iterator* addresses = object->GetIterator();
            unsigned* addr32;
            for(int memberIdx = 0; addresses->MoveNext(); ++memberIdx)
            {
                _ASSERTE(memberIdx < p_type->Children.size());
                addr32 = reinterpret_cast<unsigned*>(addresses->Current());
                DeserializeType(reinterpret_cast<char*>(*addr32), p_type->Children[memberIdx].Ptr32, p_eye);
            }
        }

        *addr32 = reinterpret_cast<unsigned>(object);
        size = sizeof(unsigned);
    }
    else
    {
        object = reinterpret_cast<UserObject*>(p_fieldAddress);
        object->InitializeAddresses();

        Iterator* addresses = object->GetIterator();
        unsigned* addr32;
        for(int memberIdx = 0; addresses->MoveNext(); ++memberIdx)
        {
            _ASSERTE(memberIdx < p_type->Children.size());
            addr32 = reinterpret_cast<unsigned*>(addresses->Current());
            DeserializeType(reinterpret_cast<char*>(*addr32), p_type->Children[memberIdx].Ptr32, p_eye);
        }

        size = object->TypeSize();
    }

    return size;
}
コード例 #13
0
void Chunk::Read(fstream &InputFile)
{
	InputFile.read(ChunkID, sizeof(ChunkID));
	InputFile.read((char *)&ChunkSize, sizeof(ChunkSize));
#ifdef WAVEFILE_DEBUG
	cout << "  Chunk ID  : \"" << ChunkID[0] << ChunkID[1] << ChunkID[2] << ChunkID[3] << "\"" << endl;
	cout << "  Chunk Size: " << ChunkSize << endl;
#endif
}
コード例 #14
0
//----------------------------------------------------------------------------------------------
int ObjectSerializer::DeserializeUserDefinedType(ISerializable* pMem, TypeNode* pType, bool isPtr, fstream& eye)
{
	int     size = 0;
	ISerializable* pObj = NULL;
	bool    isNull = false;

	if (isPtr)
	{
		unsigned* addr32;
		eye.read(reinterpret_cast<char*>(&isNull), sizeof(bool));
		addr32 = reinterpret_cast<unsigned*>(pMem);

		if (!isNull)
		{
			string  typeName;
			char    buffer[MaxTypeNameLength + 1];

			eye.read(buffer, MaxTypeNameLength + 1);
			typeName = buffer;
			pObj = static_cast<ISerializable*>(g_ObjectFactory.Create(typeName));

			PerformLateBinding(pObj, pType);

			auto objLayout = pObj->GetObjectLayout();
			Iterator* addresses = objLayout.GetIterator();
			unsigned* addr32;
			for (int memberIdx = 0; addresses->MoveNext(); ++memberIdx)
			{
				_ASSERTE(memberIdx < pType->Children.size());
				addr32 = reinterpret_cast<unsigned*>(addresses->Current());
				DeserializeType(reinterpret_cast<char*>(*addr32), pType->Children[memberIdx].Ptr32, eye);
			}
		}

		*addr32 = reinterpret_cast<unsigned>(pObj);
		size = sizeof(unsigned);
	}
	else
	{
		pObj = reinterpret_cast<ISerializable*>(pMem);

		auto objLayout = pObj->GetObjectLayout();
		Iterator* addresses = objLayout.GetIterator();
		unsigned* addr32;
		for (int memberIdx = 0; addresses->MoveNext(); ++memberIdx)
		{
			_ASSERTE(memberIdx < pType->Children.size());
			addr32 = reinterpret_cast<unsigned*>(addresses->Current());
			DeserializeType(reinterpret_cast<char*>(*addr32), pType->Children[memberIdx].Ptr32, eye);
		}

		size = objLayout.TypeSize();
	}

	return size;
}
コード例 #15
0
void Weapon::read(fstream& saveFile){
	StringRead(saveFile,name);
	saveFile.read((char *) &AmmoUsedCount,4);
	saveFile.read((char *) &TotalAmmo,4);
	saveFile.read((char *) &CurrentWeapon,1);
	std::cout << "Skipping ===>" << saveFile.seekg(3,ios_base::cur)<<"<=== on Line: " << __LINE__ << endl;
	saveFile.read((char *) &LastWeapon,1);
	std::cout << "Skipping ===>" << saveFile.seekg(3,ios_base::cur)<<"<=== on Line: " << __LINE__ << endl;
	StringRead(saveFile,ammoName);
}
コード例 #16
0
ファイル: hme_tree.cpp プロジェクト: DragoonXen/HMEmodel
void Hme_tree::init(fstream &load_stream, double leaves_error_multiplier) {
	load_stream.read((char*) &parameters_count_, sizeof(parameters_count_));
	bool root_is_leaf = false;
	load_stream.read((char*) &root_is_leaf, sizeof(root_is_leaf));
	if (root_is_leaf) {
		root_node_ = new Hme_tree_expert(load_stream, parameters_count_, leaves_error_multiplier);
	} else {
		root_node_ = new Hme_tree_gateway(load_stream, parameters_count_, leaves_error_multiplier);
	}
}
コード例 #17
0
ファイル: evaipseeker.cpp プロジェクト: MagicGroup/eva
//get the Index arrange of the Index area from infile
//param: fstream& infile
//return: true or false
bool EvaIPSeeker::getIndexOffset(fstream& infile)
{
  infile.seekg(ios::beg);
  infile.read(byte4, 4);
  firstIndexOffset = READINT4(byte4);
  infile.read(byte4, 4);
  lastIndexOffset = READINT4(byte4);
  if(( firstIndexOffset == -1 )||( lastIndexOffset == -1 ))
  {
    return false;
  }
  return true;
}
コード例 #18
0
ファイル: configfile.cpp プロジェクト: alexdantas/19hz
void Configuration::readBin_ (fstream& f, Configuration& dest)
{
	size_t tmp1, tmp2;
	char* s;
	string name;
	Configuration buf;
	string value;
	
	// reading all Configuration type variables
	f.read ( (char*) &tmp1, sizeof ( tmp1 ) );
	for ( size_t i = 0; i < tmp1; i++ )
	{
		// reading the size and then the name itself
		f.read ( (char*) &tmp2, sizeof ( tmp2 ) );
		s = new char[ tmp2 + 1 ];
		f.read ( s, tmp2 );
		s[ tmp2 ] = '\0';
		name = s;
		delete[] s;
		
		readBin_ ( f, buf );
		
		try {
			dest.insertConfig ( name, buf );
		}
		catch (VarAlreadyExisting& e)
		{
			dest.setConfig ( name, buf );
		}
	}
	
	// reading all data variables
	f.read ( (char*) &tmp1, sizeof ( tmp1 ) );
	for ( size_t i = 0; i < tmp1; i++ )
	{
		// reading the size and then the name itself
		f.read ( (char*) &tmp2, sizeof ( tmp2 ) );
		s = new char[ tmp2 + 1 ];
		f.read ( s, tmp2 );
		s[ tmp2 ] = '\0';
		name = s;
		delete[] s;
		
		// reading the size and then the value itself of data variable
		f.read ( (char*) &tmp2, sizeof ( tmp2 ) );
		s = new char[ tmp2 + 1 ];
		f.read ( s, tmp2 );
		s[ tmp2 ] = '\0';
		value = s;
		delete[] s;
		
		try {
			dest.insertStr ( name, value );
		}
		catch (VarAlreadyExisting& e)
		{
			dest.setStr ( name, value );
		}
	}
}
コード例 #19
0
ファイル: HELP.CPP プロジェクト: NithinBiliya/Chess
void pic(char name[30])                //  for picture
{     fstream file;
      file.open(name,ios::binary|ios::in);
      if(!file)
      { outtextxy(250,150,"Unable to open");
	getch();
	exit(0); }
      unsigned color;
      file.read((char*)&color,sizeof(color));
      for(int i=0;i<getmaxx();i++)
       for(int j=0;j<getmaxy();j++)
       { putpixel(i,j,color);
	 file.read((char*)&color,sizeof(color)); }
      putpixel(i,j,color);
      file.close();  }
コード例 #20
0
ファイル: ribbonLife.cpp プロジェクト: crabminister/Coffee
int main(int argc, char **argv) {
	if(argc == 1) {
		cout << "<RibbonLife.exe> <M2 file>\n";
		return 1;
	}
	if(strstr(argv[1], ".m2")) {
		m2File.open(argv[1], ios::in | ios::out | ios::binary);
		if(!m2File) {
			cout << "File could not be opened!\n";
			return 1;
		}

		m2File.seekg(0x134);

		m2File.read(reinterpret_cast<char *>(&nRibbons), sizeof(unsigned int));
		if(nRibbons == 0) {
			cout << "No ribbons exist in the model!\n";
			return 1;
		}
		m2File.read(reinterpret_cast<char *>(&ofsRibbons), sizeof(unsigned int));

		int offset = 0x94;
		for(int i = 0; i < nRibbons; i++, offset += 0xDC) {
			m2File.seekg(ofsRibbons + offset);

			m2File.read(reinterpret_cast<char *>(&life1), sizeof(float));
			m2File.read(reinterpret_cast<char *>(&life2), sizeof(float));

			cout << "Ribbon #" << i + 1 << ":\n"
				<<"\nLife1: " << life1
				<<"\nLife2: " << life2 << '\n';

			float newLife = -1;
			while(newLife < 0 || newLife > 100) {
				cout << "\nEnter a new life (0 to 100): ";
				cin >> newLife;
			}
			life1 = life2 = newLife;
			m2File.seekp(ofsRibbons + offset);

			m2File.write(reinterpret_cast<const char *>(&life1), sizeof(float));
			m2File.write(reinterpret_cast<const char *>(&life2), sizeof(float));

			cout << '\n';
		}

		cout << "\n   *** Lives both written. Saving file...\n\n";
	}
コード例 #21
0
ファイル: main.cpp プロジェクト: kenalv/Datos2
int main()
{
//insertar Arcos
    struct arcoArch reg1;

    strcpy(reg1.destino, "Ana");
    strcpy(reg1.dirigido, "TRUE");
    reg1.distancia = 100;
    reg1.velocidad = 80;
    reg1.sig=-1;
    archivoArcos.write(reinterpret_cast<char *>(&reg1),sizeof(reg1));
//Insertar Archivo Ciudades


    struct conductoresArch reg2;

    strcpy(reg2.nombreConductor, "Kenneth");
    strcpy(reg2.tipoVehiculo, "New");
    reg2.der=3;
    reg2.izq = -1;
    reg2.id = 30;
    archivoConductores.write(reinterpret_cast<char *>(&reg2),sizeof(reg2));

        archivoArcos.seekg(sizeof(0,ios::beg));
        archivoArcos.read(reinterpret_cast<char*>(&reg1),sizeof(reg1));
    cout<<sizeof(reg1);
    return 0;
}
コード例 #22
0
// function that lists tools in file
void listTools( fstream &fRef )
{
   Tool temp;

   // display column headings
   cout << setw( 7 ) << "Record#" << "    " << left 
      << setw( 30 ) << "Tool name" << left 
      << setw( 13 ) << "Quantity" << left << setw( 10 ) << "Cost" << endl;

   // continue until 100 tools are displayed or end of file reached
   for ( int count = 0; count < 100 && !fRef.eof(); count++ ) 
   {
      // set file position pointer and begin reading
      fRef.seekg( count * sizeof( Tool ) );      
      fRef.read( reinterpret_cast< char * >( &temp ), sizeof( Tool ) );

      // if part number is valid, display Tool information
      if ( temp.getPartNumber() >= 0 && temp.getPartNumber() < 100 ) 
      {
         cout << fixed << showpoint;
         cout << left << setw( 7 ) << temp.getPartNumber() << "    " 
            << left << setw( 30 ) << temp.getToolName() << left 
            << setw( 13 ) << temp.getInStock() << setprecision( 2 )
            << left << setw( 10 ) << temp.getUnitPrice() << '\n';
      } // end if
   } // end for
} // end function listTools
コード例 #23
0
ファイル: Fig17_15.cpp プロジェクト: tecmilenio/computacion2
// update balance in record
void updateRecord( fstream &updateFile )
{
   // obtain number of account to update
   int accountNumber = getAccount( "Enter account to update" );

   // move file-position pointer to correct record in file
   updateFile.seekg( ( accountNumber - 1 ) * sizeof( ClientData ) );

   // read first record from file
   ClientData client;
   updateFile.read( reinterpret_cast< char * >( &client ), 
      sizeof( ClientData ) );

   // update record
   if ( client.getAccountNumber() != 0 ) 
   {
      outputLine( cout, client ); // display the record

      // request user to specify transaction
      cout << "\nEnter charge (+) or payment (-): ";
      double transaction; // charge or payment
      cin >> transaction;

      // update record balance
      double oldBalance = client.getBalance();
      client.setBalance( oldBalance + transaction );
      outputLine( cout, client ); // display the record

      // move file-position pointer to correct record in file
      updateFile.seekp( ( accountNumber - 1 ) * sizeof( ClientData ) );

      // write updated record over old record in file
      updateFile.write( reinterpret_cast< const char * >( &client ), 
         sizeof( ClientData ) );
   } // end if
コード例 #24
0
ファイル: main.cpp プロジェクト: qingping95/ACM
void read_bmp_data()
{
    src_buff=new unsigned char[bih.biHeight*bih.biWidth*3];

    input_file.read((char*)src_buff,sizeof(unsigned char)*bih.biHeight*bih.biWidth*3);

}
コード例 #25
0
ファイル: cofffilereader.cpp プロジェクト: danielvilas/vcpkg
        static OffsetsArray read(fstream& fs, const uint32_t offset_count)
        {
            static constexpr uint32_t OFFSET_WIDTH = 4;

            std::string raw_offsets;
            const uint32_t raw_offset_size = offset_count * OFFSET_WIDTH;
            raw_offsets.resize(raw_offset_size);
            fs.read(&raw_offsets[0], raw_offset_size);

            OffsetsArray ret;
            for (uint32_t i = 0; i < offset_count; ++i)
            {
                const std::string value_as_string = raw_offsets.substr(OFFSET_WIDTH * static_cast<size_t>(i),
                                                                       OFFSET_WIDTH * (static_cast<size_t>(i) + 1));
                const auto value = reinterpret_bytes<uint32_t>(value_as_string.c_str());

                // Ignore offsets that point to offset 0. See vcpkg github #223 #288 #292
                if (value != 0)
                {
                    ret.data.push_back(value);
                }
            }

            // Sort the offsets, because it is possible for them to be unsorted. See vcpkg github #292
            std::sort(ret.data.begin(), ret.data.end());
            return ret;
        }
コード例 #26
0
void display()
{
 table temp;
 f.open(fname,ios::in);
 cout<<"Content(s) of "<<fname<<" is/are ........\n";
 f.read((char*)&temp,s);
 while(f)
 {
  cout<<"\nEmployee number:"<<temp.empno<<"\nEmployee name:"<<temp.name
      <<"\nEmployee designation:"<<temp.desig;
  f.read((char*)&temp,s);
 }
 f.close();
 cout<<"\nPress any key to continue";
 getch();
}
コード例 #27
0
ファイル: HardwareStore.cpp プロジェクト: rosen90/GitHub
void listTools(fstream &fRef)
{
	Tool temp;

	cout << setw(7) << "Record#" << "  " << left
		<< setw(30) << "Tool name" << left
		<< setw(13) << "Quantity" << left << setw(10) << "  Cost" << endl;


	for(int count = 0; count < 100 && !fRef.eof(); count++)
	{

		fRef.seekg(count * sizeof(Tool));
		fRef.read(reinterpret_cast<char *>(&temp), sizeof(Tool));


		if(temp.getPartNumber() >= 0 && temp.getPartNumber() < 100)
		{
			cout << fixed << showpoint;
			cout << left << setw(10) << temp.getPartNumber() << " "
				<< left << setw(30) << temp.getToolName() << left
				<< setw(13) << temp.getInStock() << setprecision(2)
				<< left << setw( 10 ) << temp.getUnitPrice() << '\n';
		}
	}
}
コード例 #28
0
int Initialize(int argc, char *argv[])
{
	g_mode = atoi(argv[1]);
	if (g_mode != 1 && g_mode != 2)
	{
		cout << "mode must be 1 or 2" << endl;
		return 0;
	}

	g_fileIn.open(argv[2], ios::binary | _IOS_Nocreate | ios::in);
	if (!g_fileIn)
	{
		cout << argv[1] << " can not be open!\n";
		return 0;
	}
	
	strcpy_s(g_flvFile, argv[3]);

	g_fileIn.seekg(0, ios::end);
	std::streampos ps = g_fileIn.tellg();
	g_nFileSize = ps;
	g_fileIn.seekg(0, ios_base::beg);

	g_pBufferIn = new unsigned char[g_nFileSize];
	g_pBufferOut = new unsigned char[g_nFileSize];
	if (g_pBufferIn == NULL && g_pBufferOut == NULL)
		return 0;

	g_fileIn.read((char *)g_pBufferIn, g_nFileSize);
	if (g_nFileSize != g_fileIn.gcount())
		return 0;

	return 1;
}
コード例 #29
0
ファイル: primetbl.cpp プロジェクト: heavilessrose/my-sync
Boolean PrimesTable::TableBuffer::RetrieveBlock(Ulong Index_, long Offset_, fstream& Fin_)
{
  Ulong BlockNum_ = Index_ / PrimesTable::TABLESIZE;

  Fin_.seekg(0, ios::end);
  Fin_.clear();

  long StartPos_ = BlockNum_ * TABLESIZE * sizeof(long);
  long Fsize_ = Fin_.tellg();
  Fsize_ -= Offset_;

  if (StartPos_ < Fsize_)    
    if (Fin_.seekg(StartPos_ + Offset_).good())
    {
      Fin_.read((char*)_Table, TABLESIZE * sizeof(long));

      size_t i;
      long BufSize_ = TABLESIZE;

      for (i = TABLESIZE - 1; i != size_t(-1); --i)
        if (!_Table[i])
          --BufSize_;
        else
          break;

      if (BufSize_)
      {
        StartPos_ /= sizeof(long);
        SetLimit(StartPos_, BufSize_);
        return Fin_.good();
      }
    }

  return FALSE;
}
コード例 #30
0
ファイル: cofffilereader.cpp プロジェクト: danielvilas/vcpkg
 static CoffFileHeader read(fstream& fs)
 {
     CoffFileHeader ret;
     ret.data.resize(HEADER_SIZE);
     fs.read(&ret.data[0], HEADER_SIZE);
     return ret;
 }