Fix compiler warnings with static vars undefined in template

This commit is contained in:
2016-12-14 23:11:22 -06:00
parent c9a1310e11
commit 946853628b
6 changed files with 29 additions and 42 deletions
-7
View File
@@ -29,12 +29,5 @@ FileSystem *createFileSystem(void *buff) {
return fs; return fs;
} }
template<>
FsType FileSystemTemplate<FileStore16>::FS_TYPE = OxFS_16;
template<>
FsType FileSystemTemplate<FileStore32>::FS_TYPE = OxFS_32;
template<>
FsType FileSystemTemplate<FileStore64>::FS_TYPE = OxFS_64;
} }
} }
+25 -27
View File
@@ -49,7 +49,7 @@ class FileSystem {
FileSystem *createFileSystem(void *buff); FileSystem *createFileSystem(void *buff);
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
class FileSystemTemplate: public FileSystem { class FileSystemTemplate: public FileSystem {
private: private:
@@ -82,8 +82,6 @@ class FileSystemTemplate: public FileSystem {
// static members // static members
static typename FileStore::InodeId_t INODE_ROOT_DIR; static typename FileStore::InodeId_t INODE_ROOT_DIR;
static FsType FS_TYPE;
FileStore *store = nullptr; FileStore *store = nullptr;
public: public:
@@ -108,21 +106,21 @@ class FileSystemTemplate: public FileSystem {
static uint8_t *format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories); static uint8_t *format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories);
}; };
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
FileSystemTemplate<FileStore>::FileSystemTemplate(void *buff) { FileSystemTemplate<FileStore, FS_TYPE>::FileSystemTemplate(void *buff) {
store = (FileStore*) buff; store = (FileStore*) buff;
} }
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
typename FileStore::InodeId_t FileSystemTemplate<FileStore>::INODE_ROOT_DIR = 2; typename FileStore::InodeId_t FileSystemTemplate<FileStore, FS_TYPE>::INODE_ROOT_DIR = 2;
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore>::mkdir(const char *path) { int FileSystemTemplate<FileStore, FS_TYPE>::mkdir(const char *path) {
return 0; return 0;
} }
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
FileStat FileSystemTemplate<FileStore>::stat(const char *path) { FileStat FileSystemTemplate<FileStore, FS_TYPE>::stat(const char *path) {
FileStat stat; FileStat stat;
return stat; return stat;
} }
@@ -130,8 +128,8 @@ FileStat FileSystemTemplate<FileStore>::stat(const char *path) {
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(disable:4244) #pragma warning(disable:4244)
#endif #endif
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
FileStat FileSystemTemplate<FileStore>::stat(uint64_t inode) { FileStat FileSystemTemplate<FileStore, FS_TYPE>::stat(uint64_t inode) {
FileStat stat; FileStat stat;
auto s = store->stat(inode); auto s = store->stat(inode);
stat.size = s.size; stat.size = s.size;
@@ -146,8 +144,8 @@ FileStat FileSystemTemplate<FileStore>::stat(uint64_t inode) {
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(disable:4244) #pragma warning(disable:4244)
#endif #endif
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore>::read(uint64_t inode, void *buffer, uint64_t size) { int FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, void *buffer, uint64_t size) {
auto err = 1; auto err = 1;
auto s = store->stat(inode); auto s = store->stat(inode);
if (size == s.size) { if (size == s.size) {
@@ -162,8 +160,8 @@ int FileSystemTemplate<FileStore>::read(uint64_t inode, void *buffer, uint64_t s
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(disable:4244) #pragma warning(disable:4244)
#endif #endif
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
uint8_t *FileSystemTemplate<FileStore>::read(uint64_t inode, uint64_t *size) { uint8_t *FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, uint64_t *size) {
auto s = store->stat(inode); auto s = store->stat(inode);
auto buff = new uint8_t[s.size]; auto buff = new uint8_t[s.size];
if (size) { if (size) {
@@ -182,8 +180,8 @@ uint8_t *FileSystemTemplate<FileStore>::read(uint64_t inode, uint64_t *size) {
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(disable:4244) #pragma warning(disable:4244)
#endif #endif
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore>::remove(uint64_t inode) { int FileSystemTemplate<FileStore, FS_TYPE>::remove(uint64_t inode) {
return store->remove(inode); return store->remove(inode);
} }
#ifdef _MSC_VER #ifdef _MSC_VER
@@ -193,8 +191,8 @@ int FileSystemTemplate<FileStore>::remove(uint64_t inode) {
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(disable:4244) #pragma warning(disable:4244)
#endif #endif
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore>::write(uint64_t inode, void *buffer, uint64_t size, uint8_t fileType) { int FileSystemTemplate<FileStore, FS_TYPE>::write(uint64_t inode, void *buffer, uint64_t size, uint8_t fileType) {
return store->write(inode, buffer, size, fileType); return store->write(inode, buffer, size, fileType);
} }
#ifdef _MSC_VER #ifdef _MSC_VER
@@ -204,9 +202,9 @@ int FileSystemTemplate<FileStore>::write(uint64_t inode, void *buffer, uint64_t
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(disable:4244) #pragma warning(disable:4244)
#endif #endif
template<typename FileStore> template<typename FileStore, FsType FS_TYPE>
uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) { uint8_t *FileSystemTemplate<FileStore, FS_TYPE>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) {
buffer = FileStore::format((uint8_t*) buffer, size, (uint32_t) FileSystemTemplate<FileStore>::FS_TYPE); buffer = FileStore::format((uint8_t*) buffer, size, (uint32_t) FS_TYPE);
auto fs = createFileSystem(buffer); auto fs = createFileSystem(buffer);
if (buffer && useDirectories) { if (buffer && useDirectories) {
@@ -222,9 +220,9 @@ uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore:
#pragma warning(default:4244) #pragma warning(default:4244)
#endif #endif
typedef FileSystemTemplate<FileStore16> FileSystem16; typedef FileSystemTemplate<FileStore16, OxFS_16> FileSystem16;
typedef FileSystemTemplate<FileStore32> FileSystem32; typedef FileSystemTemplate<FileStore32, OxFS_32> FileSystem32;
typedef FileSystemTemplate<FileStore64> FileSystem64; typedef FileSystemTemplate<FileStore64, OxFS_64> FileSystem64;
} }
} }
+1 -1
View File
@@ -91,7 +91,7 @@ int format(int argc, char **args) {
if (size < sizeof(FileStore64)) { if (size < sizeof(FileStore64)) {
err = 1; err = 1;
fprintf(stderr, "File system size %llu too small, must be at least %llu\n", (uint64_t) size, (uint64_t) sizeof(FileStore64)); fprintf(stderr, "File system size %lu too small, must be at least %lu\n", (uint64_t) size, (uint64_t) sizeof(FileStore64));
} }
if (!err) { if (!err) {
+1 -1
View File
@@ -24,7 +24,7 @@ int ox_strcmp(const char *str1, const char *str2) {
return retval; return retval;
} }
size_t ox_strlen(const char *str1) { int ox_strlen(const char *str1) {
int len; int len;
for (len = 0; str1[len]; len++); for (len = 0; str1[len]; len++);
return len; return len;
+1 -1
View File
@@ -11,6 +11,6 @@
int ox_strcmp(const char *str1, const char *str2); int ox_strcmp(const char *str1, const char *str2);
size_t ox_strlen(const char *str1); int ox_strlen(const char *str1);
int ox_atoi(const char *str); int ox_atoi(const char *str);
+1 -5
View File
@@ -14,12 +14,8 @@ typedef unsigned short uint16_t;
typedef int int32_t; typedef int int32_t;
typedef unsigned int uint32_t; typedef unsigned int uint32_t;
typedef unsigned uint_t; typedef unsigned uint_t;
#ifdef _MSC_VER
typedef long long int64_t;
#else
typedef long int64_t; typedef long int64_t;
#endif typedef unsigned long uint64_t;
typedef unsigned long long uint64_t;
namespace ox { namespace ox {
namespace std { namespace std {