mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 20:42:21 +02:00
Experimental bitfields
This commit is contained in:
parent
f37fb2c1b7
commit
9e80281d1a
7 changed files with 416 additions and 26 deletions
50
IDEHelper/Tests/src/Bitfields.bf
Normal file
50
IDEHelper/Tests/src/Bitfields.bf
Normal file
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
namespace Tests
|
||||
{
|
||||
class Bitfields
|
||||
{
|
||||
enum EnumA
|
||||
{
|
||||
A = -64,
|
||||
B = 12,
|
||||
C = 63
|
||||
}
|
||||
|
||||
struct StructA
|
||||
{
|
||||
[Bitfield<uint8>(.Public, "A")]
|
||||
[Bitfield<uint8>(.Public, .Bits(3), "B")]
|
||||
[Bitfield<EnumA>(.Public, "C")]
|
||||
[Bitfield(.Public, .ValueRange(0..<12), "D")]
|
||||
public int32 mVal;
|
||||
|
||||
[Bitfield<uint8>(.Public, .AutoRev, "E")]
|
||||
[Bitfield<uint8>(.Public, .BitsRev(8), "F")]
|
||||
[Bitfield<uint8>(.Public, .ValueRangeRev(0..<256), "G")]
|
||||
[Bitfield<uint8>(.Public, .BitsAt(8, 0), "H")]
|
||||
public int32 mVal2;
|
||||
}
|
||||
|
||||
[Test]
|
||||
static void TestBasics()
|
||||
{
|
||||
Test.Assert(sizeof(StructA) == 8);
|
||||
StructA sa = .();
|
||||
sa.A = 0x12;
|
||||
sa.B = 7;
|
||||
sa.C = .C;
|
||||
sa.D = 9;
|
||||
sa.E = 0x22;
|
||||
sa.F = 0x33;
|
||||
sa.G = 0x44;
|
||||
sa.H = 0x55;
|
||||
Test.Assert(sa.A == 0x12);
|
||||
Test.Assert(sa.B == 7);
|
||||
Test.Assert(sa.C == .C);
|
||||
Test.Assert(sa.D == 9);
|
||||
|
||||
Test.Assert(sa.mVal == 0x0025FF12);
|
||||
Test.Assert(sa.mVal2 == 0x22334455);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue