aboutsummaryrefslogtreecommitdiff
path: root/Src/id3v2/id3_field_integer.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/id3v2/id3_field_integer.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/id3v2/id3_field_integer.cpp')
-rw-r--r--Src/id3v2/id3_field_integer.cpp81
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;
+}