Removed offsetof macro.

This commit is contained in:
2016-06-24 01:53:16 -05:00
parent 2527af13f1
commit cbe130050a
2 changed files with 7 additions and 11 deletions
-2
View File
@@ -7,8 +7,6 @@
*/ */
#pragma once #pragma once
#define offsetof(st, m) ((size_t)(&((st *)0)->m))
namespace wombat { namespace wombat {
namespace fs { namespace fs {
+7 -9
View File
@@ -39,8 +39,6 @@ class FileStore {
// The following variables should not be assumed to exist // The following variables should not be assumed to exist
FsSize_t m_id; FsSize_t m_id;
// must be last item
uint8_t m_data;
FsSize_t size(); FsSize_t size();
void setId(InodeId_t); void setId(InodeId_t);
@@ -167,7 +165,7 @@ class FileStore {
template<typename FsSize_t> template<typename FsSize_t>
FsSize_t FileStore<FsSize_t>::Inode::size() { FsSize_t FileStore<FsSize_t>::Inode::size() {
return offsetof(FileStore::Inode, m_id) + dataLen; return sizeof(Inode) + dataLen;
} }
template<typename FsSize_t> template<typename FsSize_t>
@@ -177,7 +175,7 @@ void FileStore<FsSize_t>::Inode::setId(InodeId_t id) {
template<typename FsSize_t> template<typename FsSize_t>
void FileStore<FsSize_t>::Inode::setData(void *data, int size) { void FileStore<FsSize_t>::Inode::setData(void *data, int size) {
memcpy(&m_data, data, size); memcpy(this + 1, data, size);
dataLen = size; dataLen = size;
} }
@@ -217,7 +215,7 @@ int FileStore<FsSize_t>::write(void *data, FsSize_t dataLen) {
template<typename FsSize_t> template<typename FsSize_t>
int FileStore<FsSize_t>::write(InodeId_t id, void *data, FsSize_t dataLen) { int FileStore<FsSize_t>::write(InodeId_t id, void *data, FsSize_t dataLen) {
auto retval = 1; auto retval = 1;
const FsSize_t size = offsetof(Inode, m_id) + dataLen; const FsSize_t size = sizeof(Inode) + dataLen;
auto inode = (Inode*) alloc(size); auto inode = (Inode*) alloc(size);
if (inode) { if (inode) {
inode->m_id = id; inode->m_id = id;
@@ -231,13 +229,13 @@ int FileStore<FsSize_t>::write(InodeId_t id, void *data, FsSize_t dataLen) {
template<typename FsSize_t> template<typename FsSize_t>
int FileStore<FsSize_t>::read(InodeId_t id, void *data, FsSize_t *size) { int FileStore<FsSize_t>::read(InodeId_t id, void *data, FsSize_t *size) {
auto rec = getRecord(m_root, id); auto inode = getRecord(m_root, id);
int retval = 1; int retval = 1;
if (rec) { if (inode) {
if (size) { if (size) {
*size = rec->dataLen; *size = inode->dataLen;
} }
memcpy(data, &rec->m_data, rec->dataLen); memcpy(data, inode + 1, inode->dataLen);
retval = 0; retval = 0;
} }
return retval; return retval;