diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/id3v2/id3_field_integer.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/id3v2/id3_field_integer.cpp')
-rw-r--r-- | Src/id3v2/id3_field_integer.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/Src/id3v2/id3_field_integer.cpp b/Src/id3v2/id3_field_integer.cpp new file mode 100644 index 00000000..41f06d97 --- /dev/null +++ b/Src/id3v2/id3_field_integer.cpp @@ -0,0 +1,81 @@ +// The authors have released ID3Lib as Public Domain (PD) and claim no copyright, +// patent or other intellectual property protection in this work. This means that +// it may be modified, redistributed and used in commercial and non-commercial +// software and hardware without restrictions. ID3Lib is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. +// +// The ID3Lib authors encourage improvements and optimisations to be sent to the +// ID3Lib coordinator, currently Dirk Mahoney (dirk@id3.org). Approved +// submissions may be altered, and will be included and released under these terms. +// +// Mon Nov 23 18:34:01 1998 +// improved/optimized/whatever 10/30/00 JF +// improved/optimized/whatEVER jan-08-2006 benski + +#include "id3_field.h" + +#if 0 // taking out operators +ID3_Field& ID3_Field::operator=(luint newData) +{ + Set(newData); + + return *this; +} +#endif + + +void ID3_Field::Set(luint newData) +{ + Clear(); + + data = reinterpret_cast<uchar *>(newData); + size = sizeof(luint); + type = ID3FTY_INTEGER; + hasChanged = true; +} + + +luint ID3_Field::Get(void) +{ + return (luint) data; +} + + +luint ID3_Field::ParseInteger(uchar *buffer, luint posn, luint buffSize) +{ + luint bytesUsed = 0; + + if(buffer && buffSize) + { + luint i; + luint temp = 0; + + bytesUsed = 4; + + if(fixedLength != -1) + bytesUsed = MIN(fixedLength, bytesUsed); + + for(i = 0; i < bytesUsed; i++) + temp |=(buffer[ posn + i ] <<(((bytesUsed - i) - 1) * 8)); + + Set(temp); + hasChanged = false; + } + + return bytesUsed; +} + + +luint ID3_Field::RenderInteger(uchar *buffer) +{ + luint bytesUsed = 0; + luint length = BinSize(); + + for(luint i = 0; i < length; i++) + buffer[ i ] = (uchar)((((luint) data) >>(((length - i) - 1) * 8)) & 0xFF); + + bytesUsed = length; + hasChanged = false; + + return bytesUsed; +} |