mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-11-04 13:26:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
	
		
			697 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
	
		
			697 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "audiere_file.hpp"
 | 
						|
 | 
						|
using namespace audiere;
 | 
						|
using namespace Mangle::Stream;
 | 
						|
 | 
						|
bool AudiereFile::seek(int pos, SeekMode mode)
 | 
						|
{
 | 
						|
  assert(inp->isSeekable);
 | 
						|
  assert(inp->hasPosition);
 | 
						|
 | 
						|
  size_t newPos;
 | 
						|
 | 
						|
  switch(mode)
 | 
						|
    {
 | 
						|
    case BEGIN: newPos = pos; break;
 | 
						|
    case CURRENT: newPos = pos+tell(); break;
 | 
						|
    case END:
 | 
						|
      // Seeking from the end. This requires that we're able to get
 | 
						|
      // the entire size of the stream. The pos also has to be
 | 
						|
      // non-positive.
 | 
						|
      assert(inp->hasSize);
 | 
						|
      assert(pos <= 0);
 | 
						|
      newPos = inp->size() + pos;
 | 
						|
      break;
 | 
						|
    default:
 | 
						|
      assert(0 && "invalid seek mode");
 | 
						|
    }
 | 
						|
 | 
						|
  inp->seek(newPos);
 | 
						|
  return inp->tell() == newPos;
 | 
						|
 | 
						|
}
 |