From 3d68fa45e5b3584690c83b2ebc50ef7e0678ad5a Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Mon, 7 Sep 2015 03:25:04 -0500 Subject: [PATCH] Added initFs. --- CMakeLists.txt | 2 ++ src/CMakeLists.txt | 14 +------------- src/memphis/CMakeLists.txt | 15 +++++++++++++++ src/{ => memphis}/_memops.cpp | 0 src/{ => memphis}/_memops.hpp | 0 src/{types.hpp => memphis/_types.hpp} | 0 src/{ => memphis}/memfs.cpp | 6 ++++++ src/{ => memphis}/memfs.hpp | 10 ++++++++-- test/CMakeLists.txt | 2 ++ test/test.cpp | 11 ++++++++++- 10 files changed, 44 insertions(+), 16 deletions(-) create mode 100644 src/memphis/CMakeLists.txt rename src/{ => memphis}/_memops.cpp (100%) rename src/{ => memphis}/_memops.hpp (100%) rename src/{types.hpp => memphis/_types.hpp} (100%) rename src/{ => memphis}/memfs.cpp (95%) rename src/{ => memphis}/memfs.hpp (95%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 31f2b4571..b8822dba9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,8 @@ add_definitions( enable_testing() +include_directories("src") + add_subdirectory(src) add_subdirectory(test) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 28f98abf8..c8e5ca22f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,15 +1,3 @@ cmake_minimum_required(VERSION 2.8.8) -add_library( - Memphis - memfs.cpp - _memops.cpp -) - -install( - FILES - memfs.hpp - _memops.hpp - DESTINATION - include/Memphis -) +add_subdirectory(memphis) diff --git a/src/memphis/CMakeLists.txt b/src/memphis/CMakeLists.txt new file mode 100644 index 000000000..28f98abf8 --- /dev/null +++ b/src/memphis/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 2.8.8) + +add_library( + Memphis + memfs.cpp + _memops.cpp +) + +install( + FILES + memfs.hpp + _memops.hpp + DESTINATION + include/Memphis +) diff --git a/src/_memops.cpp b/src/memphis/_memops.cpp similarity index 100% rename from src/_memops.cpp rename to src/memphis/_memops.cpp diff --git a/src/_memops.hpp b/src/memphis/_memops.hpp similarity index 100% rename from src/_memops.hpp rename to src/memphis/_memops.hpp diff --git a/src/types.hpp b/src/memphis/_types.hpp similarity index 100% rename from src/types.hpp rename to src/memphis/_types.hpp diff --git a/src/memfs.cpp b/src/memphis/memfs.cpp similarity index 95% rename from src/memfs.cpp rename to src/memphis/memfs.cpp index 6776e1410..6cfd9168d 100644 --- a/src/memfs.cpp +++ b/src/memphis/memfs.cpp @@ -15,6 +15,12 @@ namespace memphis { uint32_t MemFs::version = 0; +uint8_t *initFs(uint8_t *buffer, size_t size, bool hasDirectories) { + auto fs = (MemFsHeader*) (buffer ? buffer : malloc(size)); + fs->version = MemFs::version; + return (uint8_t*) fs; +} + MemFsPtr MemFs::Record::size() { return offsetof(MemFs::Record, m_id) + dataLen; } diff --git a/src/memfs.hpp b/src/memphis/memfs.hpp similarity index 95% rename from src/memfs.hpp rename to src/memphis/memfs.hpp index 0b9f1c97e..c7b65bb57 100644 --- a/src/memfs.hpp +++ b/src/memphis/memfs.hpp @@ -8,14 +8,18 @@ #ifndef MEMPHIS_MEMFS_HPP #define MEMPHIS_MEMFS_HPP -#include "types.hpp" +#include "_types.hpp" namespace memphis { typedef uint32_t MemFsPtr; - typedef uint32_t RecordId; +struct MemFsHeader { + uint32_t version; + bool hasDirectories; +}; + class MemFs { public: static uint32_t version; @@ -124,6 +128,8 @@ T MemFs::ptr(MemFsPtr ptr) { return (T) m_begin + ptr; } +uint8_t *initFs(uint8_t *buffer, size_t size, bool hasDirectories); + } #endif diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index d288d22e2..48bcfb4e6 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -4,3 +4,5 @@ add_executable( MemFsTest test.cpp ) + +target_link_libraries(MemFsTest Memphis) diff --git a/test/test.cpp b/test/test.cpp index cb3f7482f..d515e7016 100644 --- a/test/test.cpp +++ b/test/test.cpp @@ -1,3 +1,12 @@ +#include + +using namespace memphis; + int main() { - return 0; + const auto size = 1024; + uint8_t volume[size]; + uint32_t err; + initFs(volume, size, false); + MemFs memfs(volume, volume + size, &err); + return err; }