00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #if defined HAVE_CONFIG_H
00028 #include <config.h>
00029 #endif
00030
00031
00032 #include "field_impl.h"
00033 #include "utils.h"
00034 #include "io_helpers.h"
00035
00036 using namespace dami;
00037
00052 void ID3_FieldImpl::Set(uint32 val)
00053 {
00054 this->SetInteger(val);
00055 }
00056
00057 void ID3_FieldImpl::SetInteger(uint32 val)
00058 {
00059 if (this->GetType() == ID3FTY_INTEGER)
00060 {
00061 this->Clear();
00062
00063 _integer = val;
00064 _changed = true;
00065 }
00066 }
00067
00077 uint32 ID3_FieldImpl::Get() const
00078 {
00079 return this->GetInteger();
00080 }
00081
00082 uint32 ID3_FieldImpl::GetInteger() const
00083 {
00084 uint32 val = 0;
00085 if (this->GetType() == ID3FTY_INTEGER)
00086 {
00087 val = _integer;
00088 }
00089 return val;
00090 }
00091
00092 bool ID3_FieldImpl::ParseInteger(ID3_Reader& reader)
00093 {
00094 ID3D_NOTICE( "ID3_FieldImpl::ParseInteger(): beg = " << reader.getBeg() );
00095 ID3D_NOTICE( "ID3_FieldImpl::ParseInteger(): cur = " << reader.getCur() );
00096 ID3D_NOTICE( "ID3_FieldImpl::ParseInteger(): end = " << reader.getEnd() );
00097 bool success = false;
00098 if (!reader.atEnd())
00099 {
00100 this->Clear();
00101 size_t fixed = this->Size();
00102 size_t nBytes = (fixed > 0) ? fixed : sizeof(uint32);
00103 this->Set(io::readBENumber(reader, nBytes));
00104 _changed = false;
00105 success = true;
00106 }
00107 return success;
00108 }
00109
00110 void ID3_FieldImpl::RenderInteger(ID3_Writer& writer) const
00111 {
00112 io::writeBENumber(writer, _integer, this->Size());
00113 }