mirror of
https://github.com/genodelabs/genode.git
synced 2025-03-10 22:44:30 +00:00
test-spark: rename number_of_bits -> object_size
In the original version, I used 'number_of_bits' because Ada's 'Size returns the size in bits, not bytes. But the values (for objects) are always a multiple of 8. On the C++ side, performing size checks at the granularity of bits is just awkward. The term 'object size' is more natural.
This commit is contained in:
parent
5937492e93
commit
6d11591d83
@ -2,10 +2,10 @@ pragma Ada_2012;
|
||||
|
||||
package body Machinery is
|
||||
|
||||
function Number_Of_Bits (Machinery : Machinery_Type) return Number_Of_Bits_Type is
|
||||
function Object_Size (Machinery : Machinery_Type) return Object_Size_Type is
|
||||
begin
|
||||
return Machinery'Size;
|
||||
end Number_Of_Bits;
|
||||
return Machinery'Size / 8;
|
||||
end Object_Size;
|
||||
|
||||
procedure Initialize (Machinery : out Machinery_Type) is
|
||||
begin
|
||||
|
@ -2,16 +2,16 @@ package Machinery is
|
||||
|
||||
pragma Pure;
|
||||
|
||||
type Number_Of_Bits_Type is mod 2**32 with Size => 32;
|
||||
type Object_Size_Type is mod 2**32 with Size => 32;
|
||||
|
||||
type Temperature_Type is mod 2**32 with Size => 32;
|
||||
|
||||
type Machinery_Type is private;
|
||||
|
||||
function Number_of_bits (Machinery : Machinery_Type) return Number_Of_Bits_Type
|
||||
function Object_Size (Machinery : Machinery_Type) return Object_Size_Type
|
||||
with Export,
|
||||
Convention => C,
|
||||
External_Name => "_ZN5Spark14number_of_bitsERKNS_9MachineryE";
|
||||
External_Name => "_ZN5Spark11object_sizeERKNS_9MachineryE";
|
||||
|
||||
procedure Initialize (Machinery : out Machinery_Type)
|
||||
with Export,
|
||||
@ -32,6 +32,6 @@ private
|
||||
|
||||
type Machinery_Type is record
|
||||
Temperature : Temperature_Type;
|
||||
end record with Size => 32;
|
||||
end record;
|
||||
|
||||
end Machinery;
|
||||
|
@ -17,7 +17,7 @@ namespace Spark {
|
||||
*
|
||||
* \param BYTES size of the SPARK record in bytes
|
||||
*/
|
||||
template <Genode::size_t BYTES>
|
||||
template <Genode::uint32_t BYTES>
|
||||
struct Object
|
||||
{
|
||||
/**
|
||||
@ -25,7 +25,7 @@ namespace Spark {
|
||||
*/
|
||||
struct Object_size_mismatch { };
|
||||
|
||||
static constexpr Genode::size_t bytes() { return BYTES; }
|
||||
static constexpr Genode::uint32_t bytes() { return BYTES; }
|
||||
|
||||
long _space[(BYTES + sizeof(long) - 1)/sizeof(long)] { };
|
||||
};
|
||||
@ -39,12 +39,12 @@ namespace Spark {
|
||||
Genode::uint32_t temperature() const;
|
||||
};
|
||||
|
||||
Genode::size_t number_of_bits(Machinery const &);
|
||||
Genode::uint32_t object_size(Machinery const &);
|
||||
|
||||
template <typename T>
|
||||
static inline void assert_valid_object_size()
|
||||
{
|
||||
if (number_of_bits(*(T *)nullptr) > T::bytes()*8)
|
||||
if (object_size(*(T *)nullptr) > T::bytes())
|
||||
throw typename T::Object_size_mismatch();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user