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;
}
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);
template<typename FileStore>
template<typename FileStore, FsType FS_TYPE>
class FileSystemTemplate: public FileSystem {
private:
@@ -82,8 +82,6 @@ class FileSystemTemplate: public FileSystem {
// static members
static typename FileStore::InodeId_t INODE_ROOT_DIR;
static FsType FS_TYPE;
FileStore *store = nullptr;
public:
@@ -108,21 +106,21 @@ class FileSystemTemplate: public FileSystem {
static uint8_t *format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories);
};
template<typename FileStore>
FileSystemTemplate<FileStore>::FileSystemTemplate(void *buff) {
template<typename FileStore, FsType FS_TYPE>
FileSystemTemplate<FileStore, FS_TYPE>::FileSystemTemplate(void *buff) {
store = (FileStore*) buff;
}
template<typename FileStore>
typename FileStore::InodeId_t FileSystemTemplate<FileStore>::INODE_ROOT_DIR = 2;
template<typename FileStore, FsType FS_TYPE>
typename FileStore::InodeId_t FileSystemTemplate<FileStore, FS_TYPE>::INODE_ROOT_DIR = 2;
template<typename FileStore>
int FileSystemTemplate<FileStore>::mkdir(const char *path) {
template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore, FS_TYPE>::mkdir(const char *path) {
return 0;
}
template<typename FileStore>
FileStat FileSystemTemplate<FileStore>::stat(const char *path) {
template<typename FileStore, FsType FS_TYPE>
FileStat FileSystemTemplate<FileStore, FS_TYPE>::stat(const char *path) {
FileStat stat;
return stat;
}
@@ -130,8 +128,8 @@ FileStat FileSystemTemplate<FileStore>::stat(const char *path) {
#ifdef _MSC_VER
#pragma warning(disable:4244)
#endif
template<typename FileStore>
FileStat FileSystemTemplate<FileStore>::stat(uint64_t inode) {
template<typename FileStore, FsType FS_TYPE>
FileStat FileSystemTemplate<FileStore, FS_TYPE>::stat(uint64_t inode) {
FileStat stat;
auto s = store->stat(inode);
stat.size = s.size;
@@ -146,8 +144,8 @@ FileStat FileSystemTemplate<FileStore>::stat(uint64_t inode) {
#ifdef _MSC_VER
#pragma warning(disable:4244)
#endif
template<typename FileStore>
int FileSystemTemplate<FileStore>::read(uint64_t inode, void *buffer, uint64_t size) {
template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, void *buffer, uint64_t size) {
auto err = 1;
auto s = store->stat(inode);
if (size == s.size) {
@@ -162,8 +160,8 @@ int FileSystemTemplate<FileStore>::read(uint64_t inode, void *buffer, uint64_t s
#ifdef _MSC_VER
#pragma warning(disable:4244)
#endif
template<typename FileStore>
uint8_t *FileSystemTemplate<FileStore>::read(uint64_t inode, uint64_t *size) {
template<typename FileStore, FsType FS_TYPE>
uint8_t *FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, uint64_t *size) {
auto s = store->stat(inode);
auto buff = new uint8_t[s.size];
if (size) {
@@ -182,8 +180,8 @@ uint8_t *FileSystemTemplate<FileStore>::read(uint64_t inode, uint64_t *size) {
#ifdef _MSC_VER
#pragma warning(disable:4244)
#endif
template<typename FileStore>
int FileSystemTemplate<FileStore>::remove(uint64_t inode) {
template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore, FS_TYPE>::remove(uint64_t inode) {
return store->remove(inode);
}
#ifdef _MSC_VER
@@ -193,8 +191,8 @@ int FileSystemTemplate<FileStore>::remove(uint64_t inode) {
#ifdef _MSC_VER
#pragma warning(disable:4244)
#endif
template<typename FileStore>
int FileSystemTemplate<FileStore>::write(uint64_t inode, void *buffer, uint64_t size, uint8_t fileType) {
template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore, FS_TYPE>::write(uint64_t inode, void *buffer, uint64_t size, uint8_t fileType) {
return store->write(inode, buffer, size, fileType);
}
#ifdef _MSC_VER
@@ -204,9 +202,9 @@ int FileSystemTemplate<FileStore>::write(uint64_t inode, void *buffer, uint64_t
#ifdef _MSC_VER
#pragma warning(disable:4244)
#endif
template<typename FileStore>
uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) {
buffer = FileStore::format((uint8_t*) buffer, size, (uint32_t) FileSystemTemplate<FileStore>::FS_TYPE);
template<typename FileStore, FsType FS_TYPE>
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) FS_TYPE);
auto fs = createFileSystem(buffer);
if (buffer && useDirectories) {
@@ -222,9 +220,9 @@ uint8_t *FileSystemTemplate<FileStore>::format(void *buffer, typename FileStore:
#pragma warning(default:4244)
#endif
typedef FileSystemTemplate<FileStore16> FileSystem16;
typedef FileSystemTemplate<FileStore32> FileSystem32;
typedef FileSystemTemplate<FileStore64> FileSystem64;
typedef FileSystemTemplate<FileStore16, OxFS_16> FileSystem16;
typedef FileSystemTemplate<FileStore32, OxFS_32> FileSystem32;
typedef FileSystemTemplate<FileStore64, OxFS_64> FileSystem64;
}
}
+1 -1
View File
@@ -91,7 +91,7 @@ int format(int argc, char **args) {
if (size < sizeof(FileStore64)) {
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) {
+1 -1
View File
@@ -24,7 +24,7 @@ int ox_strcmp(const char *str1, const char *str2) {
return retval;
}
size_t ox_strlen(const char *str1) {
int ox_strlen(const char *str1) {
int len;
for (len = 0; str1[len]; len++);
return len;
+1 -1
View File
@@ -11,6 +11,6 @@
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);
+1 -5
View File
@@ -14,12 +14,8 @@ typedef unsigned short uint16_t;
typedef int int32_t;
typedef unsigned int uint32_t;
typedef unsigned uint_t;
#ifdef _MSC_VER
typedef long long int64_t;
#else
typedef long int64_t;
#endif
typedef unsigned long long uint64_t;
typedef unsigned long uint64_t;
namespace ox {
namespace std {