\file ResourcesItem.cpp
ResourceItem implementation.
*/
#include "ResourceItem.h"
#include <stdio.h>
#include <string.h>
#include <DataIO.h>
namespace BPrivate {
namespace Storage {
ResourceItem::ResourceItem()
: BMallocIO(),
fOffset(0),
fInitialSize(0),
fType(0),
fID(0),
fName(),
fIsLoaded(false),
fIsModified(false)
{
SetBlockSize(1);
}
ResourceItem::~ResourceItem()
{
}
ssize_t
ResourceItem::WriteAt(off_t pos, const void *buffer, size_t size)
{
ssize_t result = BMallocIO::WriteAt(pos, buffer, size);
if (result >= 0)
SetModified(true);
return result;
}
status_t
ResourceItem::SetSize(off_t size)
{
status_t error = BMallocIO::SetSize(size);
if (error == B_OK)
SetModified(true);
return error;
}
void
ResourceItem::SetLocation(int32 offset, size_t initialSize)
{
SetOffset(offset);
fInitialSize = initialSize;
}
void
ResourceItem::SetIdentity(type_code type, int32 id, const char *name)
{
fType = type;
fID = id;
fName = name;
}
void
ResourceItem::SetOffset(int32 offset)
{
fOffset = offset;
}
int32
ResourceItem::Offset() const
{
return fOffset;
}
size_t
ResourceItem::InitialSize() const
{
return fInitialSize;
}
size_t
ResourceItem::DataSize() const
{
if (IsModified())
return BufferLength();
return fInitialSize;
}
void
ResourceItem::SetType(type_code type)
{
fType = type;
}
type_code
ResourceItem::Type() const
{
return fType;
}
void
ResourceItem::SetID(int32 id)
{
fID = id;
}
int32
ResourceItem::ID() const
{
return fID;
}
void
ResourceItem::SetName(const char *name)
{
fName = name;
}
const char *
ResourceItem::Name() const
{
return fName.String();
}
void *
ResourceItem::Data() const
{
if (DataSize() == 0)
return const_cast<ResourceItem*>(this);
return const_cast<void*>(Buffer());
}
void
ResourceItem::SetLoaded(bool loaded)
{
fIsLoaded = loaded;
}
bool
ResourceItem::IsLoaded() const
{
return (BufferLength() > 0 || fIsLoaded);
}
void
ResourceItem::SetModified(bool modified)
{
fIsModified = modified;
}
bool
ResourceItem::IsModified() const
{
return fIsModified;
}
};
};