Skip to content

Commit

Permalink
Encoding
Browse files Browse the repository at this point in the history
- Switched to niknaks for `decode()`
  • Loading branch information
deavmi committed Oct 2, 2023
1 parent 440ef79 commit aea8ac5
Showing 1 changed file with 4 additions and 25 deletions.
29 changes: 4 additions & 25 deletions source/tristanable/encoding.d
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
module tristanable.encoding;

import std.conv : to;
import niknaks.bits : bytesToIntegral, Order, order;

/**
* Represents a tagged message that has been decoded
Expand Down Expand Up @@ -60,31 +61,9 @@ public final class TaggedMessage
/* The decoded tag */
ulong decodedTag;

/* If on little endian then dump direct */
version(LittleEndian)
{
decodedTag = *cast(ulong*)encodedMessage.ptr;
}
/* If on big endian then reverse received 8 bytes */
else version(BigEndian)
{
/* Base of our tag */
byte* tagHighPtr = cast(byte*)decodedTag.ptr;

*(tagHighPtr+0) = encodedMessage[7];
*(tagHighPtr+1) = encodedMessage[6];
*(tagHighPtr+2) = encodedMessage[5];
*(tagHighPtr+3) = encodedMessage[4];
*(tagHighPtr+4) = encodedMessage[3];
*(tagHighPtr+5) = encodedMessage[2];
*(tagHighPtr+6) = encodedMessage[1];
*(tagHighPtr+7) = encodedMessage[0];
}
/* Blessed is the fruit of thy womb Jesus, hail Mary, mother of God, pray for our sinners - now and at the hour of our death - Amen */
else
{
pragma(msg, "Not too sure about tha 'ey 😳️");
}
/* Take ulong-many bytes and only flip them to LE if not on LE host */
decodedTag = order(bytesToIntegral!(ushort)(cast(ubyte[])encodedMessage), Order.LE);


/* Set the tag */
decodedMessage.setTag(decodedTag);
Expand Down

0 comments on commit aea8ac5

Please sign in to comment.