diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/nde/osx/Binary32Field.cpp | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
Diffstat (limited to 'Src/nde/osx/Binary32Field.cpp')
-rw-r--r-- | Src/nde/osx/Binary32Field.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Src/nde/osx/Binary32Field.cpp b/Src/nde/osx/Binary32Field.cpp new file mode 100644 index 00000000..dce7c8cc --- /dev/null +++ b/Src/nde/osx/Binary32Field.cpp @@ -0,0 +1,78 @@ +/* --------------------------------------------------------------------------- + Nullsoft Database Engine + -------------------- + codename: Near Death Experience +--------------------------------------------------------------------------- */ + +/* --------------------------------------------------------------------------- + + Binary32Field Class + +--------------------------------------------------------------------------- */ + +#include "nde.h" +#include "Binary32Field.h" +#include "ndestring.h" +//--------------------------------------------------------------------------- +Binary32Field::Binary32Field(const uint8_t *_Data, size_t len) : BinaryField(_Data, len) +{ + InitField(); +} + +//--------------------------------------------------------------------------- +void Binary32Field::InitField(void) +{ + Type = FIELD_BINARY32; +} + +//--------------------------------------------------------------------------- +Binary32Field::Binary32Field() +{ + InitField(); +} + +//--------------------------------------------------------------------------- +void Binary32Field::ReadTypedData(const uint8_t *data, size_t len) +{ + uint32_t c; + size_t pos = 0; + + CHECK_INT(len); //len-=4; + c = GET_INT(); pos += 4; + if (c && c<=len) + { + size_t size = c; + uint8_t *buf = (uint8_t *)malloc(size); + GET_BINARY(buf, data, c, pos); + Data = CFDataCreateWithBytesNoCopy(NULL, buf, size, kCFAllocatorMalloc); + } +} + +//--------------------------------------------------------------------------- +void Binary32Field::WriteTypedData(uint8_t *data, size_t len) +{ + uint32_t c; + size_t pos = 0; + + CHECK_INT(len); //len-=4; + + size_t Size = CFDataGetLength(Data); + if (Data && Size<=len) + { + c = CFDataGetLength(Data); + PUT_INT(c); pos += 4; + CFDataGetBytes(Data, CFRangeMake(0, Size), data+pos); + } + else + { + PUT_INT(0); + } +} + +//--------------------------------------------------------------------------- +size_t Binary32Field::GetDataSize(void) +{ + if (!Data) + return 4; + return CFDataGetLength(Data) + 4; +} |