* Style cleanup.
* Removed AutoDeleter class and use the shared one instead. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34244 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
4d89dfc712
commit
ff4d0f1c92
@ -1,41 +1,47 @@
|
||||
//----------------------------------------------------------------------
|
||||
// This software is part of the OpenBeOS distribution and is covered
|
||||
// by the OpenBeOS license.
|
||||
//---------------------------------------------------------------------
|
||||
/*
|
||||
* Copyright 2002-2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef _RESOURCE_FILE_H
|
||||
#define _RESOURCE_FILE_H
|
||||
|
||||
|
||||
/*!
|
||||
\file ResourceFile.h
|
||||
ResourceFile interface declaration.
|
||||
*/
|
||||
|
||||
#ifndef _RESOURCE_FILE_H
|
||||
#define _RESOURCE_FILE_H
|
||||
|
||||
#include <ByteOrder.h>
|
||||
|
||||
#include "OffsetFile.h"
|
||||
|
||||
|
||||
struct resource_info;
|
||||
struct PEFContainerHeader;
|
||||
|
||||
|
||||
namespace BPrivate {
|
||||
namespace Storage {
|
||||
|
||||
|
||||
class Exception;
|
||||
struct MemArea;
|
||||
class ResourceItem;
|
||||
struct resource_parse_info;
|
||||
class ResourcesContainer;
|
||||
|
||||
|
||||
/*!
|
||||
\class ResourceFile
|
||||
\brief Represents a file capable of containing resources.
|
||||
|
||||
|
||||
This class provides access to the resources of a file.
|
||||
Basically a ResourceFile object can be set to a file, load infos for the
|
||||
resources without loading their data (InitContainer()), read the data of
|
||||
one (ReadResource()) or all resources (ReadResources()) and write all
|
||||
resources to the file (WriteResources()).
|
||||
|
||||
|
||||
Note, that the object does only provide the I/O functionality, it does
|
||||
not store any information about the resources -- this is done via a
|
||||
ResourcesContainer. We gain flexibility using this approach, since e.g.
|
||||
@ -45,88 +51,90 @@ class ResourcesContainer;
|
||||
of resources to the file.
|
||||
|
||||
\author <a href='mailto:bonefish@users.sf.net'>Ingo Weinhold</a>
|
||||
|
||||
|
||||
\version 0.0.0
|
||||
*/
|
||||
class ResourceFile {
|
||||
public:
|
||||
ResourceFile();
|
||||
virtual ~ResourceFile();
|
||||
ResourceFile();
|
||||
virtual ~ResourceFile();
|
||||
|
||||
status_t SetTo(BFile *file, bool clobber = false);
|
||||
void Unset();
|
||||
status_t InitCheck() const;
|
||||
status_t SetTo(BFile* file, bool clobber = false);
|
||||
void Unset();
|
||||
status_t InitCheck() const;
|
||||
|
||||
status_t InitContainer(ResourcesContainer &container);
|
||||
status_t ReadResource(ResourceItem &resource, bool force = false);
|
||||
status_t ReadResources(ResourcesContainer &container, bool force = false);
|
||||
status_t WriteResources(ResourcesContainer &container);
|
||||
status_t InitContainer(ResourcesContainer& container);
|
||||
status_t ReadResource(ResourceItem& resource,
|
||||
bool force = false);
|
||||
status_t ReadResources(ResourcesContainer& container,
|
||||
bool force = false);
|
||||
status_t WriteResources(ResourcesContainer& container);
|
||||
|
||||
private:
|
||||
void _InitFile(BFile &file, bool clobber);
|
||||
void _InitELFFile(BFile &file);
|
||||
void _InitPEFFile(BFile &file, const PEFContainerHeader &pefHeader);
|
||||
void _ReadHeader(resource_parse_info &parseInfo);
|
||||
void _ReadIndex(resource_parse_info &parseInfo);
|
||||
bool _ReadIndexEntry(resource_parse_info &parseInfo, int32 index,
|
||||
uint32 tableOffset, bool peekAhead);
|
||||
void _ReadInfoTable(resource_parse_info &parseInfo);
|
||||
bool _ReadInfoTableEnd(const void *data, int32 dataSize);
|
||||
const void *_ReadResourceInfo(resource_parse_info &parseInfo,
|
||||
const MemArea &area,
|
||||
const resource_info *info, type_code type,
|
||||
bool *readIndices);
|
||||
void _InitFile(BFile& file, bool clobber);
|
||||
void _InitELFFile(BFile& file);
|
||||
void _InitPEFFile(BFile& file,
|
||||
const PEFContainerHeader& pefHeader);
|
||||
void _ReadHeader(resource_parse_info& parseInfo);
|
||||
void _ReadIndex(resource_parse_info& parseInfo);
|
||||
bool _ReadIndexEntry(resource_parse_info& parseInfo,
|
||||
int32 index, uint32 tableOffset,
|
||||
bool peekAhead);
|
||||
void _ReadInfoTable(resource_parse_info& parseInfo);
|
||||
bool _ReadInfoTableEnd(const void* data,
|
||||
int32 dataSize);
|
||||
const void* _ReadResourceInfo(
|
||||
resource_parse_info& parseInfo,
|
||||
const MemArea& area,
|
||||
const resource_info* info, type_code type,
|
||||
bool* readIndices);
|
||||
|
||||
status_t _WriteResources(ResourcesContainer &container);
|
||||
status_t _MakeEmptyResourceFile();
|
||||
status_t _WriteResources(ResourcesContainer& container);
|
||||
status_t _MakeEmptyResourceFile();
|
||||
|
||||
inline int16 _GetInt16(int16 value);
|
||||
inline uint16 _GetUInt16(uint16 value);
|
||||
inline int32 _GetInt32(int32 value);
|
||||
inline uint32 _GetUInt32(uint32 value);
|
||||
inline int16 _GetInt16(int16 value);
|
||||
inline uint16 _GetUInt16(uint16 value);
|
||||
inline int32 _GetInt32(int32 value);
|
||||
inline uint32 _GetUInt32(uint32 value);
|
||||
|
||||
private:
|
||||
OffsetFile fFile;
|
||||
uint32 fFileType;
|
||||
bool fHostEndianess;
|
||||
bool fEmptyResources;
|
||||
OffsetFile fFile;
|
||||
uint32 fFileType;
|
||||
bool fHostEndianess;
|
||||
bool fEmptyResources;
|
||||
};
|
||||
|
||||
// _GetInt16
|
||||
inline
|
||||
int16
|
||||
|
||||
inline int16
|
||||
ResourceFile::_GetInt16(int16 value)
|
||||
{
|
||||
return (fHostEndianess ? value : B_SWAP_INT16(value));
|
||||
return fHostEndianess ? value : B_SWAP_INT16(value);
|
||||
}
|
||||
|
||||
// _GetUInt16
|
||||
inline
|
||||
uint16
|
||||
|
||||
inline uint16
|
||||
ResourceFile::_GetUInt16(uint16 value)
|
||||
{
|
||||
return (fHostEndianess ? value : B_SWAP_INT16(value));
|
||||
return fHostEndianess ? value : B_SWAP_INT16(value);
|
||||
}
|
||||
|
||||
// _GetInt32
|
||||
inline
|
||||
int32
|
||||
|
||||
inline int32
|
||||
ResourceFile::_GetInt32(int32 value)
|
||||
{
|
||||
return (fHostEndianess ? value : B_SWAP_INT32(value));
|
||||
return fHostEndianess ? value : B_SWAP_INT32(value);
|
||||
}
|
||||
|
||||
// _GetUInt32
|
||||
inline
|
||||
uint32
|
||||
|
||||
inline uint32
|
||||
ResourceFile::_GetUInt32(uint32 value)
|
||||
{
|
||||
return (fHostEndianess ? value : B_SWAP_INT32(value));
|
||||
return fHostEndianess ? value : B_SWAP_INT32(value);
|
||||
}
|
||||
|
||||
|
||||
}; // namespace Storage
|
||||
}; // namespace BPrivate
|
||||
|
||||
|
||||
#endif // _RESOURCE_FILE_H
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user