Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: add a macro to specify the string format in assert macros #474

Merged
merged 2 commits into from
Oct 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions includes/acl/compression/impl/convert_rotation.transform.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ namespace acl
// Drop W, we just ensure it is positive and write it back, the W component can be ignored afterwards
return rtm::quat_to_vector(rtm::quat_ensure_positive_w(rtm::vector_to_quat(rotation)));
default:
ACL_ASSERT(false, "Invalid or unsupported rotation format: %s", get_rotation_format_name(to));
ACL_ASSERT(false, "Invalid or unsupported rotation format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_rotation_format_name(to));
return rotation;
}
}
Expand Down Expand Up @@ -92,7 +92,7 @@ namespace acl
rotation = rtm::quat_ensure_positive_w(rotation);
break;
default:
ACL_ASSERT(false, "Invalid or unsupported rotation format: %s", get_rotation_format_name(high_precision_format));
ACL_ASSERT(false, "Invalid or unsupported rotation format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_rotation_format_name(high_precision_format));
break;
}

Expand Down
14 changes: 7 additions & 7 deletions includes/acl/compression/impl/quantize.transform.h
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ namespace acl
break;
case rotation_format8::quatf_drop_w_variable:
default:
ACL_ASSERT(false, "Invalid or unsupported rotation format: %s", get_rotation_format_name(rotation_format));
ACL_ASSERT(false, "Invalid or unsupported rotation format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_rotation_format_name(rotation_format));
break;
}
}
Expand Down Expand Up @@ -439,7 +439,7 @@ namespace acl
{
// We expect all our samples to have the same width of sizeof(rtm::vector4f)
ACL_ASSERT(raw_stream.get_sample_size() == sizeof(rtm::vector4f), "Unexpected translation sample size. %u != %zu", raw_stream.get_sample_size(), sizeof(rtm::vector4f));
ACL_ASSERT(raw_stream.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: %s", get_vector_format_name(raw_stream.get_vector_format()));
ACL_ASSERT(raw_stream.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(raw_stream.get_vector_format()));

const uint32_t num_samples = raw_stream.get_num_samples();
const uint32_t sample_size = get_packed_vector_size(translation_format);
Expand All @@ -458,7 +458,7 @@ namespace acl
break;
case vector_format8::vector3f_variable:
default:
ACL_ASSERT(false, "Invalid or unsupported vector format: %s", get_vector_format_name(translation_format));
ACL_ASSERT(false, "Invalid or unsupported vector format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(translation_format));
break;
}
}
Expand Down Expand Up @@ -489,7 +489,7 @@ namespace acl

// We expect all our samples to have the same width of sizeof(rtm::vector4f)
ACL_ASSERT(lossy_translations.get_sample_size() == sizeof(rtm::vector4f), "Unexpected translation sample size. %u != %zu", lossy_translations.get_sample_size(), sizeof(rtm::vector4f));
ACL_ASSERT(lossy_translations.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: %s", get_vector_format_name(lossy_translations.get_vector_format()));
ACL_ASSERT(lossy_translations.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(lossy_translations.get_vector_format()));

const uint32_t num_samples = is_constant_bit_rate(bit_rate) ? 1 : lossy_translations.get_num_samples();
const uint32_t sample_size = sizeof(uint64_t) * 2;
Expand Down Expand Up @@ -555,7 +555,7 @@ namespace acl
{
// We expect all our samples to have the same width of sizeof(rtm::vector4f)
ACL_ASSERT(raw_stream.get_sample_size() == sizeof(rtm::vector4f), "Unexpected scale sample size. %u != %zu", raw_stream.get_sample_size(), sizeof(rtm::vector4f));
ACL_ASSERT(raw_stream.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: %s", get_vector_format_name(raw_stream.get_vector_format()));
ACL_ASSERT(raw_stream.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(raw_stream.get_vector_format()));

const uint32_t num_samples = raw_stream.get_num_samples();
const uint32_t sample_size = get_packed_vector_size(scale_format);
Expand All @@ -574,7 +574,7 @@ namespace acl
break;
case vector_format8::vector3f_variable:
default:
ACL_ASSERT(false, "Invalid or unsupported vector format: %s", get_vector_format_name(scale_format));
ACL_ASSERT(false, "Invalid or unsupported vector format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(scale_format));
break;
}
}
Expand Down Expand Up @@ -605,7 +605,7 @@ namespace acl

// We expect all our samples to have the same width of sizeof(rtm::vector4f)
ACL_ASSERT(lossy_scales.get_sample_size() == sizeof(rtm::vector4f), "Unexpected scale sample size. %u != %zu", lossy_scales.get_sample_size(), sizeof(rtm::vector4f));
ACL_ASSERT(lossy_scales.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: %s", get_vector_format_name(lossy_scales.get_vector_format()));
ACL_ASSERT(lossy_scales.get_vector_format() == vector_format8::vector3f_full, "Expected a vector3f_full vector format, found: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(lossy_scales.get_vector_format()));

const uint32_t num_samples = is_constant_bit_rate(bit_rate) ? 1 : lossy_scales.get_num_samples();
const uint32_t sample_size = sizeof(uint64_t) * 2;
Expand Down
12 changes: 6 additions & 6 deletions includes/acl/compression/impl/sample_streams.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ namespace acl
return unpack_vector3_uXX_unsafe(num_bits_at_bit_rate, ptr, 0);
}
default:
ACL_ASSERT(false, "Invalid or unsupported rotation format: %s", get_rotation_format_name(format));
ACL_ASSERT(false, "Invalid or unsupported rotation format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_rotation_format_name(format));
return rtm::vector_zero();
}
}
Expand All @@ -98,7 +98,7 @@ namespace acl
return unpack_vector3_uXX_unsafe(num_bits_at_bit_rate, ptr, 0);
}
default:
ACL_ASSERT(false, "Invalid or unsupported vector format: %s", get_vector_format_name(format));
ACL_ASSERT(false, "Invalid or unsupported vector format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(format));
return rtm::vector_zero();
}
}
Expand All @@ -115,7 +115,7 @@ namespace acl
// isn't very accurate on small inputs, we need to normalize
return rtm::quat_normalize(rtm::quat_from_positive_w(rotation));
default:
ACL_ASSERT(false, "Invalid or unsupported rotation format: %s", get_rotation_format_name(format));
ACL_ASSERT(false, "Invalid or unsupported rotation format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_rotation_format_name(format));
return rtm::quat_identity();
}
}
Expand Down Expand Up @@ -232,7 +232,7 @@ namespace acl
packed_rotation = rotation;
break;
default:
ACL_ASSERT(false, "Invalid or unsupported rotation format: %s", get_rotation_format_name(desired_format));
ACL_ASSERT(false, "Invalid or unsupported rotation format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_rotation_format_name(desired_format));
packed_rotation = rtm::vector_zero();
break;
}
Expand Down Expand Up @@ -373,7 +373,7 @@ namespace acl
packed_translation = translation;
break;
default:
ACL_ASSERT(false, "Invalid or unsupported vector format: %s", get_vector_format_name(desired_format));
ACL_ASSERT(false, "Invalid or unsupported vector format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(desired_format));
packed_translation = rtm::vector_zero();
break;
}
Expand Down Expand Up @@ -512,7 +512,7 @@ namespace acl
packed_scale = scale;
break;
default:
ACL_ASSERT(false, "Invalid or unsupported vector format: %s", get_vector_format_name(desired_format));
ACL_ASSERT(false, "Invalid or unsupported vector format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(desired_format));
packed_scale = scale;
break;
}
Expand Down
2 changes: 1 addition & 1 deletion includes/acl/compression/impl/track_stream.h
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ namespace acl
// isn't very accurate on small inputs, we need to normalize
return rtm::quat_normalize(rtm::quat_from_positive_w(rotation));
default:
ACL_ASSERT(false, "Invalid or unsupported rotation format: %s", get_rotation_format_name(m_format.rotation));
ACL_ASSERT(false, "Invalid or unsupported rotation format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_rotation_format_name(m_format.rotation));
return rtm::vector_to_quat(rotation);
}
};
Expand Down
11 changes: 11 additions & 0 deletions includes/acl/core/error.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,22 @@ ACL_IMPL_FILE_PRAGMA_PUSH
// #define ACL_ON_ASSERT_CUSTOM
// #define ACL_ASSERT(expression, format, ...) checkf(expression, ANSI_TO_TCHAR(format), #__VA_ARGS__)
//
// [Custom String Format Specifier]
// Note that if you use a custom function, you may need to override the ACL_ASSERT_STRING_FORMAT_SPECIFIER
// to properly handle ANSI/Unicode support. The C++11 standard does not support a way to say that '%s'
// always means an ANSI string (with 'const char*' as type). MSVC does support '%hs' but other compilers
// do not.
//
// No checks:
// By default if no macro mentioned above is defined, all asserts will be stripped
// at compile time.
//////////////////////////////////////////////////////////////////////////

// See [Custom String Format Specifier] for details
#if !defined(ACL_ASSERT_STRING_FORMAT_SPECIFIER)
#define ACL_ASSERT_STRING_FORMAT_SPECIFIER "%s"
#endif

#if defined(ACL_ON_ASSERT_ABORT)

#include "acl/version.h"
Expand Down
4 changes: 2 additions & 2 deletions includes/acl/decompression/impl/decompression.scalar.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ namespace acl
template<class decompression_settings_type, class database_settings_type>
inline bool initialize_v0(persistent_scalar_decompression_context_v0& context, const compressed_tracks& tracks, const database_context<database_settings_type>* database)
{
ACL_ASSERT(tracks.get_algorithm_type() == algorithm_type8::uniformly_sampled, "Invalid algorithm type [%s], expected [%s]", get_algorithm_name(tracks.get_algorithm_type()), get_algorithm_name(algorithm_type8::uniformly_sampled));
ACL_ASSERT(tracks.get_algorithm_type() == algorithm_type8::uniformly_sampled, "Invalid algorithm type [" ACL_ASSERT_STRING_FORMAT_SPECIFIER "], expected [" ACL_ASSERT_STRING_FORMAT_SPECIFIER "]", get_algorithm_name(tracks.get_algorithm_type()), get_algorithm_name(algorithm_type8::uniformly_sampled));

if (database != nullptr)
return false; // Database decompression is not supported for scalar tracks
Expand Down Expand Up @@ -504,7 +504,7 @@ namespace acl
const sample_rounding_policy rounding_policy = static_cast<sample_rounding_policy>(context.rounding_policy);
const sample_rounding_policy rounding_policy_ = writer.get_rounding_policy(rounding_policy, track_index);
ACL_ASSERT(rounding_policy_ != sample_rounding_policy::per_track, "track_writer::get_rounding_policy() cannot return per_track");

interpolation_alpha = rtm::scalar_set(apply_rounding_policy(context.interpolation_alpha, rounding_policy_));
}

Expand Down
8 changes: 4 additions & 4 deletions includes/acl/decompression/impl/decompression.transform.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ namespace acl
template<class decompression_settings_type, class database_settings_type>
inline bool initialize_v0(persistent_transform_decompression_context_v0& context, const compressed_tracks& tracks, const database_context<database_settings_type>* database)
{
ACL_ASSERT(tracks.get_algorithm_type() == algorithm_type8::uniformly_sampled, "Invalid algorithm type [%s], expected [%s]", get_algorithm_name(tracks.get_algorithm_type()), get_algorithm_name(algorithm_type8::uniformly_sampled));
ACL_ASSERT(tracks.get_algorithm_type() == algorithm_type8::uniformly_sampled, "Invalid algorithm type [" ACL_ASSERT_STRING_FORMAT_SPECIFIER "], expected [" ACL_ASSERT_STRING_FORMAT_SPECIFIER "]", get_algorithm_name(tracks.get_algorithm_type()), get_algorithm_name(algorithm_type8::uniformly_sampled));

using translation_adapter = acl_impl::translation_decompression_settings_adapter<decompression_settings_type>;
using scale_adapter = acl_impl::scale_decompression_settings_adapter<decompression_settings_type>;
Expand All @@ -98,9 +98,9 @@ namespace acl
const vector_format8 translation_format = get_vector_format<translation_adapter>(packed_translation_format);
const vector_format8 scale_format = get_vector_format<scale_adapter>(packed_scale_format);

ACL_ASSERT(rotation_format == packed_rotation_format, "Statically compiled rotation format (%s) differs from the compressed rotation format (%s)!", get_rotation_format_name(rotation_format), get_rotation_format_name(packed_rotation_format));
ACL_ASSERT(translation_format == packed_translation_format, "Statically compiled translation format (%s) differs from the compressed translation format (%s)!", get_vector_format_name(translation_format), get_vector_format_name(packed_translation_format));
ACL_ASSERT(scale_format == packed_scale_format, "Statically compiled scale format (%s) differs from the compressed scale format (%s)!", get_vector_format_name(scale_format), get_vector_format_name(packed_scale_format));
ACL_ASSERT(rotation_format == packed_rotation_format, "Statically compiled rotation format (" ACL_ASSERT_STRING_FORMAT_SPECIFIER ") differs from the compressed rotation format (" ACL_ASSERT_STRING_FORMAT_SPECIFIER ")!", get_rotation_format_name(rotation_format), get_rotation_format_name(packed_rotation_format));
ACL_ASSERT(translation_format == packed_translation_format, "Statically compiled translation format (" ACL_ASSERT_STRING_FORMAT_SPECIFIER ") differs from the compressed translation format (" ACL_ASSERT_STRING_FORMAT_SPECIFIER ")!", get_vector_format_name(translation_format), get_vector_format_name(packed_translation_format));
ACL_ASSERT(scale_format == packed_scale_format, "Statically compiled scale format (" ACL_ASSERT_STRING_FORMAT_SPECIFIER ") differs from the compressed scale format (" ACL_ASSERT_STRING_FORMAT_SPECIFIER ")!", get_vector_format_name(scale_format), get_vector_format_name(packed_scale_format));

// Context is always the first member and versions should always match
const database_context_v0* db = reinterpret_cast<const database_context_v0*>(database);
Expand Down
2 changes: 1 addition & 1 deletion includes/acl/math/vector4_packing.h
Original file line number Diff line number Diff line change
Expand Up @@ -1147,7 +1147,7 @@ namespace acl
case vector_format8::vector3f_full: return sizeof(float) * 3;
case vector_format8::vector3f_variable:
default:
ACL_ASSERT(false, "Invalid or unsupported vector format: %s", get_vector_format_name(format));
ACL_ASSERT(false, "Invalid or unsupported vector format: " ACL_ASSERT_STRING_FORMAT_SPECIFIER, get_vector_format_name(format));
return 0;
}
}
Expand Down