EXPECTS usage removed

This commit is contained in:
Nekotekina 2016-08-15 16:29:38 +03:00
parent 56b9b38c9c
commit 84d0d396ed
27 changed files with 90 additions and 106 deletions

View file

@ -172,7 +172,7 @@ std::shared_ptr<fs::device_base> fs::get_virtual_device(const std::string& path)
std::shared_ptr<fs::device_base> fs::set_virtual_device(const std::string& name, const std::shared_ptr<device_base>& device)
{
EXPECTS(name.size() > 2 && name[0] == '/' && name[1] == '/' && name.find('/', 2) == -1);
verify(HERE), name.size() > 2, name[0] == '/', name[1] == '/', name.find('/', 2) == -1;
return get_device_manager().set_device(name, device);
}

View file

@ -235,7 +235,7 @@ static EventListener s_listener;
jit_compiler::jit_compiler(std::unique_ptr<llvm::Module>&& _module, std::unordered_map<std::string, std::uintptr_t>&& table)
{
EXPECTS(s_memory);
verify(HERE), s_memory;
std::string result;

View file

@ -62,8 +62,8 @@
#define WRAP_EXPR(...) [&] { return __VA_ARGS__; }
// Ensure that the expression evaluates to true. Obsolete.
#define EXPECTS(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Precondition failed: " #__VA_ARGS__ HERE); } while (0)
#define ENSURES(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Postcondition failed: " #__VA_ARGS__ HERE); } while (0)
//#define EXPECTS(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Precondition failed: " #__VA_ARGS__ HERE); } while (0)
//#define ENSURES(...) do { if (!(__VA_ARGS__)) fmt::raw_error("Postcondition failed: " #__VA_ARGS__ HERE); } while (0)
#define DECLARE(...) decltype(__VA_ARGS__) __VA_ARGS__

View file

@ -1263,7 +1263,7 @@ static std::pair<u32, u32> getNextCommandBufferBeginEnd(u32 current)
static u32 getOffsetFromAddress(u32 address)
{
const u32 upper = offsetTable.ioAddress[address >> 20]; // 12 bits
EXPECTS(upper != 0xFFFF);
verify(HERE), (upper != 0xFFFF);
return (upper << 20) | (address & 0xFFFFF);
}

View file

@ -17,7 +17,7 @@ logs::channel cellPamf("cellPamf", logs::level::notice);
s32 pamfStreamTypeToEsFilterId(u8 type, u8 ch, CellCodecEsFilterId& pEsFilterId)
{
// convert type and ch to EsFilterId
EXPECTS(ch < 16);
verify(HERE), (ch < 16);
pEsFilterId.supplementalInfo1 = type == CELL_PAMF_STREAM_TYPE_AVC;
pEsFilterId.supplementalInfo2 = 0;
@ -117,7 +117,7 @@ s32 pamfStreamTypeToEsFilterId(u8 type, u8 ch, CellCodecEsFilterId& pEsFilterId)
u8 pamfGetStreamType(vm::ptr<CellPamfReader> pSelf, u32 stream)
{
// TODO: get stream type correctly
EXPECTS(stream < (u32)pSelf->pAddr->stream_count);
verify(HERE), (stream < (u32)pSelf->pAddr->stream_count);
auto& header = pSelf->pAddr->stream_headers[stream];
switch (header.type)
@ -138,7 +138,7 @@ u8 pamfGetStreamType(vm::ptr<CellPamfReader> pSelf, u32 stream)
u8 pamfGetStreamChannel(vm::ptr<CellPamfReader> pSelf, u32 stream)
{
// TODO: get stream channel correctly
EXPECTS(stream < (u32)pSelf->pAddr->stream_count);
verify(HERE), (stream < (u32)pSelf->pAddr->stream_count);
auto& header = pSelf->pAddr->stream_headers[stream];
switch (header.type)
@ -146,29 +146,29 @@ u8 pamfGetStreamChannel(vm::ptr<CellPamfReader> pSelf, u32 stream)
case 0x1b: // AVC
case 0x02: // M2V
{
EXPECTS((header.fid_major & 0xf0) == 0xe0 && header.fid_minor == 0);
verify(HERE), (header.fid_major & 0xf0) == 0xe0, header.fid_minor == 0;
return header.fid_major % 16;
}
case 0xdc: // ATRAC3PLUS
{
EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0);
verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0;
return header.fid_minor % 16;
}
case 0x80: // LPCM
{
EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0x40);
verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0x40;
return header.fid_minor % 16;
}
case 0x81: // AC3
{
EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0x30);
verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0x30;
return header.fid_minor % 16;
}
case 0xdd:
{
EXPECTS(header.fid_major == 0xbd && (header.fid_minor & 0xf0) == 0x20);
verify(HERE), header.fid_major == 0xbd, (header.fid_minor & 0xf0) == 0x20;
return header.fid_minor % 16;
}
}
@ -454,7 +454,7 @@ s32 cellPamfReaderGetEsFilterId(vm::ptr<CellPamfReader> pSelf, vm::ptr<CellCodec
// always returns CELL_OK
EXPECTS((u32)pSelf->stream < (u32)pSelf->pAddr->stream_count);
verify(HERE), (u32)pSelf->stream < pSelf->pAddr->stream_count;
auto& header = pSelf->pAddr->stream_headers[pSelf->stream];
pEsFilterId->filterIdMajor = header.fid_major;
pEsFilterId->filterIdMinor = header.fid_minor;
@ -467,7 +467,7 @@ s32 cellPamfReaderGetStreamInfo(vm::ptr<CellPamfReader> pSelf, vm::ptr<void> pIn
{
cellPamf.warning("cellPamfReaderGetStreamInfo(pSelf=*0x%x, pInfo=*0x%x, size=%d)", pSelf, pInfo, size);
EXPECTS((u32)pSelf->stream < (u32)pSelf->pAddr->stream_count);
verify(HERE), (u32)pSelf->stream < pSelf->pAddr->stream_count;
auto& header = pSelf->pAddr->stream_headers[pSelf->stream];
const u8 type = pamfGetStreamType(pSelf, pSelf->stream);
const u8 ch = pamfGetStreamChannel(pSelf, pSelf->stream);

View file

@ -462,8 +462,7 @@ public:
while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
verify(HERE), sync.count <= sq_size, sync.position < sq_size;
if (sync.push_lock)
{
@ -492,9 +491,7 @@ public:
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
EXPECTS(sync.push_lock);
verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.push_lock;
sync.push_lock = 0;
sync.count++;
});
@ -525,8 +522,7 @@ public:
while (u32 res = m_sync.atomic_op([&pos](squeue_sync_var_t& sync) -> u32
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
verify(HERE), sync.count <= sq_size, sync.position < sq_size;
if (!sync.count)
{
@ -555,9 +551,7 @@ public:
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
EXPECTS(sync.pop_lock);
verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.pop_lock;
sync.pop_lock = 0;
sync.position++;
sync.count--;
@ -589,13 +583,12 @@ public:
bool peek(T& data, u32 start_pos, const std::function<bool()>& test_exit)
{
EXPECTS(start_pos < sq_size);
verify(HERE), start_pos < sq_size;
u32 pos = 0;
while (u32 res = m_sync.atomic_op([&pos, start_pos](squeue_sync_var_t& sync) -> u32
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
verify(HERE), sync.count <= sq_size, sync.position < sq_size;
if (sync.count <= start_pos)
{
@ -624,9 +617,7 @@ public:
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
EXPECTS(sync.pop_lock);
verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.pop_lock;
sync.pop_lock = 0;
});
@ -665,7 +656,7 @@ public:
public:
T& operator [] (u32 index)
{
EXPECTS(index < m_count);
verify(HERE), index < m_count;
index += m_pos;
index = index < sq_size ? index : index - sq_size;
return m_data[index];
@ -678,8 +669,7 @@ public:
while (m_sync.atomic_op([&pos, &count](squeue_sync_var_t& sync) -> u32
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
verify(HERE), sync.count <= sq_size, sync.position < sq_size;
if (sync.pop_lock || sync.push_lock)
{
@ -701,9 +691,7 @@ public:
m_sync.atomic_op([](squeue_sync_var_t& sync)
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
EXPECTS(sync.pop_lock && sync.push_lock);
verify(HERE), sync.count <= sq_size, sync.position < sq_size, !!sync.pop_lock, !!sync.push_lock;
sync.pop_lock = 0;
sync.push_lock = 0;
});
@ -716,8 +704,7 @@ public:
{
while (m_sync.atomic_op([](squeue_sync_var_t& sync) -> u32
{
EXPECTS(sync.count <= sq_size);
EXPECTS(sync.position < sq_size);
verify(HERE), sync.count <= sq_size, sync.position < sq_size;
if (sync.pop_lock || sync.push_lock)
{

View file

@ -1319,7 +1319,7 @@ bool ppu_interpreter::VSPLTB(ppu_thread& ppu, ppu_opcode_t op)
bool ppu_interpreter::VSPLTH(ppu_thread& ppu, ppu_opcode_t op)
{
auto& d = ppu.vr[op.vd];
EXPECTS(op.vuimm < 8);
verify(HERE), (op.vuimm < 8);
u16 hword = ppu.vr[op.vb]._u16[7 - op.vuimm];
@ -1369,7 +1369,7 @@ bool ppu_interpreter::VSPLTISW(ppu_thread& ppu, ppu_opcode_t op)
bool ppu_interpreter::VSPLTW(ppu_thread& ppu, ppu_opcode_t op)
{
auto& d = ppu.vr[op.vd];
EXPECTS(op.vuimm < 4);
verify(HERE), (op.vuimm < 4);
u32 word = ppu.vr[op.vb]._u32[3 - op.vuimm];

View file

@ -282,7 +282,7 @@ Function* PPUTranslator::TranslateToIR(const ppu_function& info, be_t<u32>* bin,
Type* PPUTranslator::ScaleType(Type* type, s32 pow2)
{
EXPECTS(type->getScalarType()->isIntegerTy());
verify(HERE), (type->getScalarType()->isIntegerTy());
const auto new_type = m_ir->getIntNTy(type->getScalarSizeInBits() * std::pow(2, pow2));
return type->isVectorTy() ? VectorType::get(new_type, type->getVectorNumElements()) : cast<Type>(new_type);

View file

@ -50,7 +50,7 @@ std::shared_ptr<lv2_event_queue_t> lv2_event_queue_t::find(u64 ipc_key)
void lv2_event_queue_t::push(lv2_lock_t, u64 source, u64 data1, u64 data2, u64 data3)
{
EXPECTS(m_sq.empty() || m_events.empty());
verify(HERE), m_sq.empty() || m_events.empty();
// save event if no waiters
if (m_sq.empty())
@ -90,7 +90,7 @@ void lv2_event_queue_t::push(lv2_lock_t, u64 source, u64 data1, u64 data2, u64 d
lv2_event_queue_t::event_type lv2_event_queue_t::pop(lv2_lock_t)
{
EXPECTS(m_events.size());
verify(HERE), m_events.size();
auto result = m_events.front();
m_events.pop_front();
return result;

View file

@ -57,8 +57,7 @@ struct lv2_lock_t
lv2_lock_t(type& lv2_lock)
: ref(lv2_lock)
{
EXPECTS(ref.owns_lock());
EXPECTS(ref.mutex() == &mutex);
verify(HERE), ref.owns_lock(), ref.mutex() == &mutex;
}
operator type&() const

View file

@ -18,7 +18,7 @@ bool VirtualMemoryBlock::IsInMyRange(const u32 addr, const u32 size)
u32 VirtualMemoryBlock::Map(u32 realaddr, u32 size)
{
EXPECTS(size);
verify(HERE), (size);
for (u32 addr = m_range_start; addr <= m_range_start + m_range_size - 1 - GetReservedAmount() - size;)
{
@ -48,7 +48,7 @@ u32 VirtualMemoryBlock::Map(u32 realaddr, u32 size)
bool VirtualMemoryBlock::Map(u32 realaddr, u32 size, u32 addr)
{
EXPECTS(size);
verify(HERE), (size);
if (!IsInMyRange(addr, size))
{

View file

@ -16,7 +16,7 @@ namespace vm
void waiter_base::initialize(u32 addr, u32 size)
{
EXPECTS(addr && (size & (~size + 1)) == size && (addr & (size - 1)) == 0);
verify(HERE), addr, (size & (~size + 1)) == size, (addr & (size - 1)) == 0;
this->addr = addr;
this->mask = ~(size - 1);

View file

@ -99,8 +99,7 @@ static const char* fmt_reg(u32 reg)
static std::string fmt_shift(u32 type, u32 amount)
{
EXPECTS(type != arm_code::SRType_RRX || amount == 1);
EXPECTS(amount <= 32);
verify(HERE), type != arm_code::SRType_RRX || amount == 1, amount <= 32;
if (amount)
{

View file

@ -48,46 +48,46 @@ struct arm_interpreter
static u32 LSL_C(u32 x, s32 shift, bool& carry_out)
{
EXPECTS(shift > 0);
verify(HERE), (shift > 0);
carry_out = shift <= 32 ? (x & (1 << (32 - shift))) != 0 : false;
return shift < 32 ? x << shift : 0;
}
static u32 LSL_(u32 x, s32 shift)
{
EXPECTS(shift >= 0);
verify(HERE), (shift >= 0);
return shift < 32 ? x << shift : 0;
}
static u32 LSR_C(u32 x, s32 shift, bool& carry_out)
{
EXPECTS(shift > 0);
verify(HERE), (shift > 0);
carry_out = shift <= 32 ? (x & (1 << (shift - 1))) != 0 : false;
return shift < 32 ? x >> shift : 0;
}
static u32 LSR_(u32 x, s32 shift)
{
EXPECTS(shift >= 0);
verify(HERE), (shift >= 0);
return shift < 32 ? x >> shift : 0;
}
static s32 ASR_C(s32 x, s32 shift, bool& carry_out)
{
EXPECTS(shift > 0);
verify(HERE), (shift > 0);
carry_out = shift <= 32 ? (x & (1 << (shift - 1))) != 0 : x < 0;
return shift < 32 ? x >> shift : x >> 31;
}
static s32 ASR_(s32 x, s32 shift)
{
EXPECTS(shift >= 0);
verify(HERE), (shift >= 0);
return shift < 32 ? x >> shift : x >> 31;
}
static u32 ROR_C(u32 x, s32 shift, bool& carry_out)
{
EXPECTS(shift);
verify(HERE), (shift);
const u32 result = x >> shift | x << (32 - shift);
carry_out = (result >> 31) != 0;
return result;
@ -111,7 +111,7 @@ struct arm_interpreter
static u32 Shift_C(u32 value, u32 type, s32 amount, bool carry_in, bool& carry_out)
{
EXPECTS(type != arm_code::SRType_RRX || amount == 1);
verify(HERE), (type != arm_code::SRType_RRX || amount == 1);
if (amount)
{

View file

@ -157,7 +157,7 @@ public:
void write_gpr(u32 n, u32 value, u32 size)
{
EXPECTS(n < 16);
verify(HERE), n <= 15;
if (n < 15)
{
@ -171,7 +171,7 @@ public:
u32 read_gpr(u32 n)
{
EXPECTS(n < 16);
verify(HERE), n <= 15;
if (n < 15)
{

View file

@ -8,7 +8,7 @@
void CgBinaryDisasm::AddCodeAsm(const std::string& code)
{
EXPECTS(m_opcode < 70);
verify(HERE), (m_opcode < 70);
std::string op_name = "";
if (dst.dest_reg == 63)
@ -225,7 +225,7 @@ void CgBinaryDisasm::TaskFP()
{
m_size = 0;
u32* data = (u32*)&m_buffer[m_offset];
EXPECTS((m_buffer_size - m_offset) % sizeof(u32) == 0);
verify(HERE), ((m_buffer_size - m_offset) % sizeof(u32) == 0);
for (u32 i = 0; i < (m_buffer_size - m_offset) / sizeof(u32); i++)
{
data[i] = se_storage<u32>::swap(data[i]); // WTF, cannot use be_t<> there?

View file

@ -6,13 +6,13 @@
void CgBinaryDisasm::AddScaCodeDisasm(const std::string& code)
{
EXPECTS(m_sca_opcode < 21);
verify(HERE), (m_sca_opcode < 21);
m_arb_shader += rsx_vp_sca_op_names[m_sca_opcode] + code + " ";
}
void CgBinaryDisasm::AddVecCodeDisasm(const std::string& code)
{
EXPECTS(m_vec_opcode < 26);
verify(HERE), (m_vec_opcode < 26);
m_arb_shader += rsx_vp_vec_op_names[m_vec_opcode] + code + " ";
}

View file

@ -48,7 +48,7 @@ namespace
void write_vertex_array_data_to_buffer(gsl::span<gsl::byte> raw_dst_span, const gsl::byte *src_ptr, u32 first, u32 count, rsx::vertex_base_type type, u32 vector_element_count, u32 attribute_src_stride, u8 dst_stride)
{
EXPECTS(vector_element_count > 0);
verify(HERE), (vector_element_count > 0);
switch (type)
{
@ -98,7 +98,7 @@ std::tuple<T, T> upload_untouched(gsl::span<to_be_t<const T>> src, gsl::span<T>
T min_index = -1;
T max_index = 0;
EXPECTS(dst.size_bytes() >= src.size_bytes());
verify(HERE), (dst.size_bytes() >= src.size_bytes());
size_t dst_idx = 0;
for (T index : src)
@ -124,7 +124,7 @@ std::tuple<T, T> expand_indexed_triangle_fan(gsl::span<to_be_t<const T>> src, gs
T min_index = -1;
T max_index = 0;
EXPECTS(dst.size() >= 3 * (src.size() - 2));
verify(HERE), (dst.size() >= 3 * (src.size() - 2));
const T index0 = src[0];
if (!is_primitive_restart_enabled || index0 != -1) // Cut
@ -174,7 +174,7 @@ std::tuple<T, T> expand_indexed_quads(gsl::span<to_be_t<const T>> src, gsl::span
T min_index = -1;
T max_index = 0;
EXPECTS(4 * dst.size_bytes() >= 6 * src.size_bytes());
verify(HERE), (4 * dst.size_bytes() >= 6 * src.size_bytes());
size_t dst_idx = 0;
while (!src.empty())

View file

@ -227,7 +227,7 @@ public:
0x6, 0x7, 0x4, 0x5,
0x2, 0x3, 0x0, 0x1);
EXPECTS(dst_buffer.size_bytes() >= ::narrow<int>(I->second.FragmentConstantOffsetCache.size()) * 16);
verify(HERE), (dst_buffer.size_bytes() >= ::narrow<int>(I->second.FragmentConstantOffsetCache.size()) * 16);
size_t offset = 0;
for (size_t offset_in_fragment_program : I->second.FragmentConstantOffsetCache)

View file

@ -157,7 +157,7 @@ public:
{
auto var_blocks = fmt::split(var, { "." });
EXPECTS(var_blocks.size() != 0);
verify(HERE), (var_blocks.size() != 0);
name = var_blocks[0];

View file

@ -21,7 +21,7 @@ namespace
constexpr void copy(gsl::span<T1> dst, gsl::span<T2> src)
{
static_assert(std::is_convertible<T1, T2>::value, "Cannot convert source and destination span type.");
EXPECTS(dst.size() == src.size());
verify(HERE), (dst.size() == src.size());
std::copy(src.begin(), src.end(), dst.begin());
}

View file

@ -91,7 +91,7 @@ std::vector<D3D12_SHADER_RESOURCE_VIEW_DESC> D3D12GSRender::upload_vertex_attrib
u32 vertex_count = get_vertex_count(vertex_ranges);
size_t offset_in_vertex_buffers_buffer = 0;
u32 input_mask = rsx::method_registers.vertex_attrib_input_mask();
EXPECTS(rsx::method_registers.vertex_data_base_index() == 0);
verify(HERE), rsx::method_registers.vertex_data_base_index() == 0;
for (int index = 0; index < rsx::limits::vertex_count; ++index)
{
@ -364,7 +364,7 @@ std::tuple<bool, size_t, std::vector<D3D12_SHADER_RESOURCE_VIEW_DESC>> D3D12GSRe
return std::make_tuple(true, index_count, upload_vertex_attributes(rsx::method_registers.current_draw_clause.first_count_commands, command_list));
}
EXPECTS(rsx::method_registers.current_draw_clause.command == rsx::draw_command::indexed);
verify(HERE), rsx::method_registers.current_draw_clause.command == rsx::draw_command::indexed;
// Index count
size_t index_count = get_index_count(rsx::method_registers.current_draw_clause.primitive, ::narrow<int>(get_vertex_count(rsx::method_registers.current_draw_clause.first_count_commands)));

View file

@ -653,14 +653,14 @@ namespace gl
reserve_and_map((size > 4096) ? size : 4096);
}
EXPECTS(m_mapped_bytes_available >= size);
verify(HERE), m_mapped_bytes_available >= size;
void *ptr = (char*)m_mapped_base + m_mapped_reserve_offset;
u32 offset = m_mapped_reserve_offset + m_mapped_block_offset;
m_mapped_reserve_offset += size;
m_mapped_bytes_available -= size;
EXPECTS((offset & (alignment - 1)) == 0);
verify(HERE), (offset & (alignment - 1)) == 0;
return std::make_pair(ptr, offset);
}

View file

@ -131,7 +131,7 @@ namespace
std::tuple<u32, u32> get_index_array_for_emulated_non_indexed_draw(const std::vector<std::pair<u32, u32>> &first_count_commands, rsx::primitive_type primitive_mode, gl::ring_buffer &dst)
{
u32 vertex_draw_count = 0;
EXPECTS(!gl::is_primitive_native(primitive_mode));
verify(HERE), !gl::is_primitive_native(primitive_mode);
for (const auto &pair : first_count_commands)
{

View file

@ -178,7 +178,7 @@ namespace rsx
}
fmt::throw_exception("Wrong vector size" HERE);
case vertex_base_type::cmp: return sizeof(u16) * 4;
case vertex_base_type::ub256: EXPECTS(size == 4); return sizeof(u8) * 4;
case vertex_base_type::ub256: verify(HERE), (size == 4); return sizeof(u8) * 4;
}
fmt::throw_exception("RSXVertexData::GetTypeSize: Bad vertex data type (%d)!" HERE, (u8)type);
}
@ -575,7 +575,7 @@ namespace rsx
{
const std::tuple<u32, u32> &range = draw_indexed_clause[i];
const std::tuple<u32, u32> &next_range = draw_indexed_clause[i + 1];
EXPECTS(std::get<0>(range) + std::get<1>(range) == std::get<0>(next_range));
verify(HERE), (std::get<0>(range) + std::get<1>(range) == std::get<0>(next_range));
}
u32 first = std::get<0>(draw_indexed_clause.front());
u32 count = std::get<0>(draw_indexed_clause.back()) + std::get<1>(draw_indexed_clause.back()) - first;
@ -591,7 +591,7 @@ namespace rsx
}
else
{
EXPECTS(0);
fmt::throw_exception("Disabled" HERE);
//std::lock_guard<std::mutex> lock{ m_mtx_task };
//internal_task_entry &front = m_internal_tasks.front();

View file

@ -106,7 +106,7 @@ namespace vk
size_t color_format_idx = 0;
size_t depth_format_idx = 0;
EXPECTS(color_count < 5);
verify(HERE), color_count < 5;
switch (color_format)
{

View file

@ -45,8 +45,7 @@ namespace psf
, m_max_size(max_size)
, m_value_string(value)
{
EXPECTS(type == format::string || type == format::array);
EXPECTS(max_size);
verify(HERE), type == format::string || type == format::array, max_size;
}
entry::entry(u32 value)
@ -62,26 +61,26 @@ namespace psf
const std::string& entry::as_string() const
{
EXPECTS(m_type == format::string || m_type == format::array);
verify(HERE), m_type == format::string || m_type == format::array;
return m_value_string;
}
u32 entry::as_integer() const
{
EXPECTS(m_type == format::integer);
verify(HERE), m_type == format::integer;
return m_value_integer;
}
entry& entry::operator =(const std::string& value)
{
EXPECTS(m_type == format::string || m_type == format::array);
verify(HERE), m_type == format::string || m_type == format::array;
m_value_string = value;
return *this;
}
entry& entry::operator =(u32 value)
{
EXPECTS(m_type == format::integer);
verify(HERE), m_type == format::integer;
m_value_integer = value;
return *this;
}
@ -111,41 +110,41 @@ namespace psf
return result;
}
// Check size
EXPECTS(stream.size() >= sizeof(header_t));
// Get header
header_t header;
EXPECTS(stream.read(header));
verify(HERE), stream.read(header);
// Check magic and version
EXPECTS(header.magic == "\0PSF"_u32);
EXPECTS(header.version == 0x101);
EXPECTS(sizeof(header_t) + header.entries_num * sizeof(def_table_t) <= header.off_key_table);
EXPECTS(header.off_key_table <= header.off_data_table);
EXPECTS(header.off_data_table <= stream.size());
verify(HERE),
header.magic == "\0PSF"_u32,
header.version == 0x101,
sizeof(header_t) + header.entries_num * sizeof(def_table_t) <= header.off_key_table,
header.off_key_table <= header.off_data_table,
header.off_data_table <= stream.size();
// Get indices
std::vector<def_table_t> indices;
EXPECTS(stream.read(indices, header.entries_num));
verify(HERE), stream.read(indices, header.entries_num);
// Get keys
std::string keys;
EXPECTS(stream.seek(header.off_key_table) == header.off_key_table);
EXPECTS(stream.read(keys, header.off_data_table - header.off_key_table));
verify(HERE), stream.seek(header.off_key_table) == header.off_key_table;
verify(HERE), stream.read(keys, header.off_data_table - header.off_key_table);
// Load entries
for (u32 i = 0; i < header.entries_num; ++i)
{
EXPECTS(indices[i].key_off < header.off_data_table - header.off_key_table);
verify(HERE), indices[i].key_off < header.off_data_table - header.off_key_table;
// Get key name (null-terminated string)
std::string key(keys.data() + indices[i].key_off);
EXPECTS(result.count(key) == 0);
EXPECTS(indices[i].param_len <= indices[i].param_max);
EXPECTS(indices[i].data_off < stream.size() - header.off_data_table);
EXPECTS(indices[i].param_max < stream.size() - indices[i].data_off);
// Check entry
verify(HERE),
result.count(key) == 0,
indices[i].param_len <= indices[i].param_max,
indices[i].data_off < stream.size() - header.off_data_table,
indices[i].param_max < stream.size() - indices[i].data_off;
// Seek data pointer
stream.seek(header.off_data_table + indices[i].data_off);
@ -154,7 +153,7 @@ namespace psf
{
// Integer data
le_t<u32> value;
EXPECTS(stream.read(value));
verify(HERE), stream.read(value);
result.emplace(std::piecewise_construct,
std::forward_as_tuple(std::move(key)),
@ -164,7 +163,7 @@ namespace psf
{
// String/array data
std::string value;
EXPECTS(stream.read(value, indices[i].param_len));
verify(HERE), stream.read(value, indices[i].param_len);
if (indices[i].param_fmt == format::string)
{