コード例 #1
0
void MemoryStream::seek(int64 offset, int whence)
{
 int64 new_position;

 switch(whence)
 {
    case SEEK_SET:
       new_position = offset;
       break;

    case SEEK_CUR:
       new_position = position + offset;
       break;

    case SEEK_END:
       new_position = data_buffer_size + offset;
       break;
 }

 if(new_position < 0)
  throw MDFN_Error(ErrnoHolder(EINVAL));
 else
  grow_if_necessary(new_position);

 position = new_position;
}
コード例 #2
0
ファイル: rq_array.c プロジェクト: stimuli/riskquantify
RQ_EXPORT void
rq_array_push_back(rq_array_t v, void *obj)
{
    grow_if_necessary(v);

    v->array[v->size] = obj;
    v->size++;
}
コード例 #3
0
void MemoryStream::write(const void *data, uint64 count)
{
 uint64 nrs = position + count;

 if(nrs < position)
  throw MDFN_Error(ErrnoHolder(EFBIG));

 grow_if_necessary(nrs);

 memmove(&data_buffer[position], data, (size_t)count);
 position += count;
}
コード例 #4
0
ファイル: rq_array.c プロジェクト: stimuli/riskquantify
RQ_EXPORT void
rq_array_insert_at(rq_array_t v, unsigned long offset, void *obj)
{
    unsigned long i;

    grow_if_necessary(v);

    for (i = v->size-1; i >= offset; i--)
        v->array[i+1] = v->array[i];
    v->array[offset] = obj;
    v->size++;
}
コード例 #5
0
void ExtMemStream::write(const void *data, uint64 count)
{
 uint64 nrs = position + count;

 if(ro)
  throw MDFN_Error(EINVAL, _("Write attempted to read-only ExtMemStream."));

 if(nrs < position)
  throw MDFN_Error(ErrnoHolder(EFBIG));

 grow_if_necessary(nrs, position);

 memmove(&data_buffer[position], data, count);
 position += count;
}
コード例 #6
0
//
// Don't add code to reduce the amount of memory allocated(when possible) without providing a 
// per-stream setting to disable that behavior.
//
void MemoryStream::truncate(uint64 length)
{
 grow_if_necessary(length, length);

 data_buffer_size = length;
}