diff options
author | Alexis211 <alexis211@gmail.com> | 2009-10-18 15:27:34 +0200 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2009-10-18 15:27:34 +0200 |
commit | 323e12f1f9ab33df15dcfed210e807561d98fa8c (patch) | |
tree | 7d76e6932d4a979a1f2bfafc94478b66b1479bbc /Source/Kernel | |
parent | bc2eccdd11c27029096fb3e891073503eb269e27 (diff) | |
download | Melon-323e12f1f9ab33df15dcfed210e807561d98fa8c.tar.gz Melon-323e12f1f9ab33df15dcfed210e807561d98fa8c.zip |
Re-organized everything
Diffstat (limited to 'Source/Kernel')
54 files changed, 50 insertions, 1359 deletions
diff --git a/Source/Kernel/Core/CMem.ns.cpp b/Source/Kernel/Core/CMem.ns.cpp deleted file mode 100644 index c2129ec..0000000 --- a/Source/Kernel/Core/CMem.ns.cpp +++ /dev/null @@ -1,35 +0,0 @@ -#include <Core/common.wtf.h> - -namespace CMem { - -//Standard C functions -u8int *memcpy(u8int *dest, const u8int *src, int count) { - for (int i = 0; i < count; i++) { - dest[i] = src[i]; - } - return dest; -} - -u8int *memset(u8int *dest, u8int val, int count) { - for (int i = 0; i < count; i++) { - dest[i] = val; - } - return dest; -} - -u16int *memsetw(u16int *dest, u16int val, int count) { - for (int i = 0; i < count; i++) { - dest[i] = val; - } - return dest; -} - -u32int strlen(const char *str) { - u32int i = 0; - while (str[i]) { - i++; - } - return i; -} - -} diff --git a/Source/Kernel/Core/CMem.ns.h b/Source/Kernel/Core/CMem.ns.h deleted file mode 100644 index f0c15da..0000000 --- a/Source/Kernel/Core/CMem.ns.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef DEF_COMMON - -#ifndef DEF_CMEM_NS_H -#define DEF_CMEM_NS_H - -//This namespace contains basic memory managment functions - -namespace CMem { - u8int *memcpy(u8int *dest, const u8int *src, int count); - u8int *memset(u8int *dest, u8int val, int count); - u16int *memsetw(u16int *dest, u16int val, int count); - u32int strlen(const char *str); -} - -#endif - -#endif diff --git a/Source/Kernel/Core/Sys.ns.cpp b/Source/Kernel/Core/Sys.ns.cpp index a8a6c91..c99544b 100644 --- a/Source/Kernel/Core/Sys.ns.cpp +++ b/Source/Kernel/Core/Sys.ns.cpp @@ -1,5 +1,5 @@ //This automatically includes Sys.ns.h -#include <Core/common.wtf.h> +#include <common.h> #include <Core/Log.ns.h> #include <VTManager/SimpleVT.class.h> #include <SyscallManager/IDT.ns.h> diff --git a/Source/Kernel/Core/cppsupport.wtf.cpp b/Source/Kernel/Core/cppsupport.wtf.cpp index bad28f2..2cefc39 100644 --- a/Source/Kernel/Core/cppsupport.wtf.cpp +++ b/Source/Kernel/Core/cppsupport.wtf.cpp @@ -1,5 +1,5 @@ //This file just contains a few methods required for some C++ things to work -#include <Core/types.wtf.h> +#include <types.h> extern "C" void __cxa_pure_virtual() {} //Required when using abstract classes diff --git a/Source/Kernel/Core/kmain.wtf.cpp b/Source/Kernel/Core/kmain.wtf.cpp index 87e95de..a8fb002 100644 --- a/Source/Kernel/Core/kmain.wtf.cpp +++ b/Source/Kernel/Core/kmain.wtf.cpp @@ -1,6 +1,6 @@ //This file contains the kernel's main procedure -#include <Core/common.wtf.h> +#include <common.h> #include <Core/multiboot.wtf.h> #include <Devices/Display/VGATextOutput.class.h> @@ -18,8 +18,8 @@ #include <MemoryManager/GDT.ns.h> #include <TaskManager/Task.ns.h> #include <SyscallManager/IDT.ns.h> -#include <Library/String.class.h> -#include <Library/ByteArray.class.h> +#include <String.class.h> +#include <ByteArray.class.h> #include <VFS/Part.ns.h> #include <FileSystems/RamFS/RamFS.class.h> #include <VFS/FileNode.class.h> diff --git a/Source/Kernel/Core/types.wtf.h b/Source/Kernel/Core/types.wtf.h deleted file mode 100644 index ca6f73d..0000000 --- a/Source/Kernel/Core/types.wtf.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef DEF_TYPES_WTF_H -#define DEF_TYPES_WTF_H - -//This file defines base types. It's made to be used also by C programs - -typedef unsigned int addr_t; -typedef unsigned long long u64int; -typedef unsigned int u32int; -typedef unsigned short u16int; -typedef unsigned char u8int; -typedef long long s64int; -typedef int s32int; -typedef short s16int; -typedef char s8int; - -#define U64 unsigned long long -#define S64 long long - -#endif diff --git a/Source/Kernel/DeviceManager/Dev.ns.h b/Source/Kernel/DeviceManager/Dev.ns.h index 7dda56b..aa52e81 100644 --- a/Source/Kernel/DeviceManager/Dev.ns.h +++ b/Source/Kernel/DeviceManager/Dev.ns.h @@ -2,7 +2,7 @@ #define DEF_DEV_NS_H #include <Devices/Device.proto.h> -#include <Library/Vector.class.h> +#include <Vector.class.h> namespace Dev { void handleIRQ(registers_t regs, int irq); diff --git a/Source/Kernel/DeviceManager/Disp.ns.h b/Source/Kernel/DeviceManager/Disp.ns.h index 5a92e69..0eea51d 100644 --- a/Source/Kernel/DeviceManager/Disp.ns.h +++ b/Source/Kernel/DeviceManager/Disp.ns.h @@ -2,7 +2,7 @@ #define DEF_DISP_NS_H #include <Devices/Display/Display.proto.h> -#include <Library/WChar.class.h> +#include <WChar.class.h> namespace Disp { struct mode_t { diff --git a/Source/Kernel/DeviceManager/Kbd.ns.cpp b/Source/Kernel/DeviceManager/Kbd.ns.cpp index 3db0d34..4fbf511 100644 --- a/Source/Kernel/DeviceManager/Kbd.ns.cpp +++ b/Source/Kernel/DeviceManager/Kbd.ns.cpp @@ -1,6 +1,6 @@ #include "Kbd.ns.h" #include <DeviceManager/Dev.ns.h> -#include <Library/Vector.class.h> +#include <Vector.class.h> #include <Devices/Keyboard/Keyboard.proto.h> #include <VTManager/VirtualTerminal.proto.h> #include <Ressources/Keymaps/Keymap.h> diff --git a/Source/Kernel/DeviceManager/Kbd.ns.h b/Source/Kernel/DeviceManager/Kbd.ns.h index 50cd746..2934474 100644 --- a/Source/Kernel/DeviceManager/Kbd.ns.h +++ b/Source/Kernel/DeviceManager/Kbd.ns.h @@ -1,8 +1,8 @@ #ifndef DEF_KBD_NS_H #define DEF_KBD_NS_H -#include <Core/common.wtf.h> -#include <Library/WChar.class.h> +#include <common.h> +#include <WChar.class.h> //Used by variable kbdstatus #define STATUS_SCRL 0x40 diff --git a/Source/Kernel/Devices/Device.proto.h b/Source/Kernel/Devices/Device.proto.h index 4f216ec..b0db514 100644 --- a/Source/Kernel/Devices/Device.proto.h +++ b/Source/Kernel/Devices/Device.proto.h @@ -1,7 +1,7 @@ #ifndef DEF_DEVICE_PROTO_H #define DEF_DEVICE_PROTO_H -#include <Library/String.class.h> +#include <String.class.h> #include <SyscallManager/IDT.ns.h> diff --git a/Source/Kernel/Devices/Display/Display.proto.h b/Source/Kernel/Devices/Display/Display.proto.h index d4bd8fc..2cec616 100644 --- a/Source/Kernel/Devices/Display/Display.proto.h +++ b/Source/Kernel/Devices/Display/Display.proto.h @@ -1,9 +1,9 @@ #ifndef DEF_DISPLAY_PROTO_H #define DEF_DISPLAY_PROTO_H -#include <Core/common.wtf.h> +#include <common.h> #include <Devices/Device.proto.h> -#include <Library/WChar.class.h> +#include <WChar.class.h> class Display : public Device { public: diff --git a/Source/Kernel/Library/BasicString.class.cpp b/Source/Kernel/Library/BasicString.class.cpp deleted file mode 100644 index ae89fe4..0000000 --- a/Source/Kernel/Library/BasicString.class.cpp +++ /dev/null @@ -1,175 +0,0 @@ -#include <Library/Vector.class.h> - -#define FREE if (m_string != 0) delete m_string; -#define ALLOC m_string = new T[m_length]; -#define VRFY if (m_length == 0) { m_string = NULL; return; } - -using namespace CMem; - -template <typename T> -BasicString<T>::BasicString() { - m_string = NULL; - m_length = 0; -} - -template <typename T> -BasicString<T>::BasicString(const T* string, u32int length) { - m_string = NULL; - affect(string, length); -} - -template <typename T> -BasicString<T>::BasicString(const BasicString<T> &other) { - m_string = NULL; - affect(other); -} - -template <typename T> -BasicString<T>::BasicString(const T value, u32int count) { - m_string = NULL; - affect(value, count); -} - -template <typename T> -BasicString<T>::~BasicString() { - FREE; -} - -template <typename T> -void BasicString<T>::affect(const BasicString<T> &other) { - FREE; - m_length = other.m_length; - VRFY; - ALLOC; - memcpy((u8int*)m_string, (u8int*)(other.m_string), m_length * sizeof(T)); -} - -template <typename T> -void BasicString<T>::affect(const T* string, u32int length) { - FREE; - m_length = length; - VRFY; - ALLOC; - memcpy((u8int*)string, (u8int*)string, m_length * sizeof(T)); -} - -template <typename T> -void BasicString<T>::affect(const T value, u32int count) { - FREE; - m_length = count; - VRFY; - ALLOC; - for (u32int i = 0; i < count; i++) { - m_string[i] = value; - } -} - -template <typename T> -bool BasicString<T>::compare(const BasicString<T> &other) const { - if (m_length != other.m_length) return false; - for (u32int i = 0; i < m_length; i++) { - if (m_string[i] != other.m_string[i]) return false; - } - return true; -} - -template <typename T> -bool BasicString<T>::compare(const T* string, u32int length) const { - if (m_length != length) return false; - for (u32int i = 0; i < m_length; i++) { - if (m_string[i] != string[i]) return false; - } - return true; -} - -template <typename T> -BasicString<T> &BasicString<T>::append(const BasicString<T> &other) { - T* newdata = new T[m_length + other.m_length]; - for (u32int i = 0; i < m_length; i++) { - newdata[i] = m_string[i]; - } - for (u32int i = 0; i < other.m_length; i++) { - newdata[i + m_length] = other.m_string[i]; - } - FREE; - m_string = newdata; - m_length += other.m_length; - return *this; -} - -template <typename T> -BasicString<T> &BasicString<T>::append(const T* string, u32int length) { - T* newdata = new T[m_length + length]; - for (u32int i = 0; i < m_length; i++) { - newdata[i] = m_string[i]; - } - for (u32int i = 0; i < length; i++) { - newdata[i + m_length] = string[i]; - } - FREE; - m_string = newdata; - m_length += length; - return *this; -} - -template <typename T> -BasicString<T> &BasicString<T>::append(const T other) { - T* newdata = new T[m_length + 1]; - for (u32int i = 0; i < m_length; i++) { - newdata[i] = m_string[i]; - } - FREE; - m_string = newdata; - m_string[m_length] = other; - m_length++; - return *this; -} - -template <typename T> -BasicString<T> BasicString<T>::concat(const BasicString<T> &other) const { - BasicString<T> ret(*this); - return (ret.append(other)); -} - -template <typename T> -BasicString<T> BasicString<T>::concat(const T* string, u32int length) const { - BasicString<T> ret(*this); - return (ret.append(string, length)); -} - -template <typename T> -BasicString<T> BasicString<T>::concat(const T other) const { - BasicString<T> ret(*this); - return (ret.append(other)); -} - -template <typename T> -void BasicString<T>::clear() { - FREE; - m_string = 0; - m_length = 0; -} - -template <typename T> -Vector< BasicString<T> > BasicString<T>::split(T sep) const { - Vector< BasicString<T> > ret; - ret.push(BasicString<T>()); - for (u32int i = 0; i < m_length; i++) { - if (m_string[i] == sep) { - ret.push(BasicString<T>()); - } else { - ret.back().append(m_string[i]); - } - } - return ret; -} - -template <typename T> -BasicString<T> BasicString<T>::substr(s32int start, u32int size) { - if (start < 0) start = m_length - start; - BasicString<T> ret; - ret.m_string = new T[size + 1]; - ret.m_length = size; - memcpy((u8int*)ret.m_string, (u8int*)(&m_string[start]), size * sizeof(T)); - return ret; -} diff --git a/Source/Kernel/Library/BasicString.class.h b/Source/Kernel/Library/BasicString.class.h deleted file mode 100644 index 5c69d00..0000000 --- a/Source/Kernel/Library/BasicString.class.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef DEF_BASICSTRING_CLASS_H -#define DEF_BASICSTRING_CLASS_H - -#include <Core/common.wtf.h> - -template <typename T> class Vector; - -template <typename T> -class BasicString { - protected: - T *m_string; - u32int m_length; - - public: - BasicString(); - BasicString(const T* string, u32int length); - BasicString(const BasicString<T> &other); - BasicString(const T, u32int count = 1); - virtual ~BasicString(); - - void affect(const BasicString<T> &other); - void affect(const T* string, u32int length); - void affect(const T value, u32int count = 1); - void operator= (const BasicString<T> &other) { affect(other); } - - bool compare(const BasicString<T> &other) const; - bool compare(const T* string, u32int length) const; - bool operator== (const BasicString<T> &other) const { return compare(other); } - bool operator!= (const BasicString<T> &other) const { return !compare(other); } - - BasicString<T>& append(const BasicString<T> &other); - BasicString<T>& append(const T* string, u32int length); - BasicString<T>& append(const T other); - BasicString<T>& operator+= (const BasicString<T> &other) { return append(other); } - BasicString<T>& operator+= (const T other) { return append(other); } - - BasicString<T> concat(const BasicString<T> &other) const; - BasicString<T> concat(const T* string, u32int length) const; - BasicString<T> concat(const T other) const; - - T& operator[] (int index) const { return m_string[index]; } - - u32int size() const { return m_length; } - void clear(); - bool empty() const { return m_length == 0; } - - Vector< BasicString<T> > split(T sep) const; - BasicString<T> substr(s32int start, u32int size); -}; - -#include "BasicString.class.cpp" - -#endif diff --git a/Source/Kernel/Library/Bitset.class.cpp b/Source/Kernel/Library/Bitset.class.cpp deleted file mode 100644 index ec4e62c..0000000 --- a/Source/Kernel/Library/Bitset.class.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "Bitset.class.h" - -Bitset::Bitset() { -} - -Bitset::Bitset(u32int size) { - init(size, (u32int*)Mem::kalloc(INDEX_FROM_BIT(size))); -} - -Bitset::Bitset(u32int size, u32int *ptr) { - init(size, ptr); -} - -Bitset::~Bitset() { - Mem::kfree(m_data); -} - -void Bitset::init(u32int size, u32int *ptr) { - m_size = size; - m_data = ptr; - for (u32int i = 0; i < INDEX_FROM_BIT(m_size); i++) { - m_data[i] = 0; - } - m_usedCount = 0; -} - -void Bitset::setBit(u32int number) { - u32int idx = INDEX_FROM_BIT(number); - u32int off = OFFSET_FROM_BIT(number); - m_data[idx] |= (0x1 << off); - m_usedCount++; -} - -void Bitset::clearBit(u32int number) { - u32int idx = INDEX_FROM_BIT(number); - u32int off = OFFSET_FROM_BIT(number); - m_data[idx] &= ~(0x1 << off); - m_usedCount--; -} - -bool Bitset::testBit(u32int number) { - u32int idx = INDEX_FROM_BIT(number); - u32int off = OFFSET_FROM_BIT(number); - return (m_data[idx] & (0x1 << off)); -} - -u32int Bitset::firstFreeBit() { - for (u32int i = 0; i < INDEX_FROM_BIT(m_size); i++) { - if (m_data[i] != 0xFFFFFFFF) { - for (int j = 0; j < 32; j++) { - if (!(m_data[i] & (0x1 << j))) { - return (i * 4 * 8) + j; - } - } - } - } - return (u32int) - 1; -} - -u32int Bitset::usedBits() { - return m_usedCount; -} diff --git a/Source/Kernel/Library/Bitset.class.h b/Source/Kernel/Library/Bitset.class.h deleted file mode 100644 index 75fde24..0000000 --- a/Source/Kernel/Library/Bitset.class.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef DEF_BITSET_CLASS_H -#define DEF_BITSET_CLASS_H - -#include <Core/common.wtf.h> - -#define INDEX_FROM_BIT(a) (a/(8*4)) -#define OFFSET_FROM_BIT(a) (a%(8*4)) - -class Bitset { - private: - u32int m_size; - u32int *m_data; - u32int m_usedCount; - - public: - Bitset(); - Bitset(u32int size); - Bitset(u32int size, u32int *ptr); - ~Bitset(); - - void init(u32int size, u32int *ptr); - - void setBit(u32int number); - void clearBit(u32int number); - bool testBit(u32int number); - u32int firstFreeBit(); - - u32int usedBits(); -}; - -#endif diff --git a/Source/Kernel/Library/ByteArray.class.cpp b/Source/Kernel/Library/ByteArray.class.cpp deleted file mode 100644 index 9972493..0000000 --- a/Source/Kernel/Library/ByteArray.class.cpp +++ /dev/null @@ -1,63 +0,0 @@ -#include "ByteArray.class.h" - -//Define size of a uchar_repr_t -#define CHARSZ(x) (x.c[0] == 0 ? 0 : (x.c[1] == 0 ? 1 : (x.c[2] == 0 ? 2 : (x.c[3] == 0 ? 3 : 4)))) - -using namespace CMem; - -ByteArray::ByteArray(const char* c) : BasicString<u8int>() { - m_length = strlen(c); - memcpy(m_string, (u8int*)c, m_length); -} - -void ByteArray::affect(const String &string, u8int encoding) { - m_length = 0; - for (u32int i = 0; i < string.size(); i++) { - uchar_repr_t a = string[i].encode(encoding); - m_length += CHARSZ(a); - } - if (m_string != 0) delete m_string; - if (m_length == 0) { - m_string = 0; - return; - } - m_string = new u8int[m_length]; - u32int x = 0; - for (u32int i = 0; i < string.size(); i++) { - uchar_repr_t a = string[i].encode(encoding); - memcpy(m_string + x, (u8int*)a.c, CHARSZ(a)); - x += CHARSZ(a); - } -} - -void ByteArray::resize(u32int size) { - if (size == m_length) return; - if (size == 0) { - delete m_string; - m_length = 0; - m_string = 0; - } - u8int *nd = new u8int[size]; - if (size < m_length) { - memcpy(nd, m_string, size); - } else { - memcpy(nd, m_string, m_length); - memset(nd + m_length, 0, size - m_length); - } - delete m_string; - m_string = nd; - m_length = size; -} - -void ByteArray::dump(VirtualTerminal *vt) { - vt->hexDump(m_string, m_length); -} - -String ByteArray::toString (u8int encoding) { - char* c = new char[m_length + 1]; - memcpy((u8int*)c, m_string, m_length); - c[m_length] = 0; //Add NULL terminator - String r(c, encoding); - delete c; - return r; -} diff --git a/Source/Kernel/Library/ByteArray.class.h b/Source/Kernel/Library/ByteArray.class.h deleted file mode 100644 index a6d594f..0000000 --- a/Source/Kernel/Library/ByteArray.class.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef DEF_BYTEARRAY_CLASS_H -#define DEF_BYTEARRAY_CLASS_H - -#include <Library/String.class.h> -#include <VTManager/VirtualTerminal.proto.h> - -class ByteArray : public BasicString<u8int> { - public: - ByteArray() : BasicString<u8int>() {} - ByteArray(const BasicString<u8int> &bs) : BasicString<u8int>() { - m_length = bs.size(); - m_string = new u8int[m_length]; - for (u32int i = 0; i < m_length; i++) - m_string[i] = bs[i]; - } - ByteArray(const ByteArray& other) : BasicString<u8int>(other) {} - ByteArray(const char* c); - ByteArray(u32int size) : BasicString<u8int>((u8int)0, size) {} - ByteArray(const String &string, u8int encoding = UE_UTF8) : BasicString<u8int>() { affect(string, encoding); } - - void affect(const String& string, u8int encoding = UE_UTF8); - void resize(u32int size); - - void dump(VirtualTerminal *vt); - - String toString(u8int encoding = UE_UTF8); - operator u8int* () { return m_string; } -}; - -#endif diff --git a/Source/Kernel/Library/OrderedArray.class.cpp b/Source/Kernel/Library/OrderedArray.class.cpp deleted file mode 100644 index 8b8f24f..0000000 --- a/Source/Kernel/Library/OrderedArray.class.cpp +++ /dev/null @@ -1,54 +0,0 @@ -template <typename T> -OrderedArray<T>::OrderedArray(u32int max_size) { - m_array = (T*)Memory::alloc(max_size * sizeof(T*)); - m_size = 0; - m_maxSize = max_size; -} - -template <typename T> -OrderedArray<T>::OrderedArray(T **addr, u32int max_size) { - m_array = addr; - memset((u8int*)addr, 0, max_size * sizeof(T*)); - m_size = 0; - m_maxSize = max_size; -} - -template <typename T> -OrderedArray<T>::~OrderedArray() { - //Free memory -} - -template <typename T> -void OrderedArray<T>::insert(T *element) { - if (m_size == m_maxSize) return; //Array is full - u32int iterator = 0; - while (iterator < m_size && *(m_array[iterator]) < *element) { - iterator++; - } - if (iterator == m_size) { - m_array[m_size++] = element; - } else { - u32int pos = iterator; - while (iterator < m_size) { - iterator++; - m_array[iterator] = m_array[iterator - 1]; - } - m_size++; - m_array[pos] = element; - } -} - -template <typename T> -T *OrderedArray<T>::lookup(int index) { - return m_array[index]; -} - -template <typename T> -void OrderedArray<T>::remove(int index) { - m_size--; - while (index < m_size) { - m_array[index] = m_array[index + 1]; - index++; - } -} - diff --git a/Source/Kernel/Library/OrderedArray.class.h b/Source/Kernel/Library/OrderedArray.class.h deleted file mode 100644 index 2a5acdd..0000000 --- a/Source/Kernel/Library/OrderedArray.class.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef DEF_ORDARRAY_CLASS -#define DEF_ORDARRAY_CLASS - -#include <Core/common.wtf.h> - -template <typename T> -class OrderedArray { - private: - T *m_array[]; - u32int m_size; - u32int m_maxSize; - - public: - OrderedArray(u32int max_size); - OrderedArray(T **addr, u32int max_size); - ~OrderedArray(); - - u32int size() { return m_size; } - - void insert(T *element); - T *lookup(int index); - void remove(int index); - - T *operator[] (int index) { return lookup(index); } -}; - -#include "OrderedArray.class.cpp" - -#endif diff --git a/Source/Kernel/Library/Rand.ns.cpp b/Source/Kernel/Library/Rand.ns.cpp deleted file mode 100644 index e568678..0000000 --- a/Source/Kernel/Library/Rand.ns.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "Rand.ns.h" - -namespace Rand { - -u32int m = 2073741824, a = 50000, b = 1534; -u64int current = RANDOM_SEED; - -u64int rand() { - current = (u32int)(a*current + b); - while (current > m) current -= m; - return current; -} - -u64int max() { - return m; -} - -} diff --git a/Source/Kernel/Library/Rand.ns.h b/Source/Kernel/Library/Rand.ns.h deleted file mode 100644 index 3598de0..0000000 --- a/Source/Kernel/Library/Rand.ns.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef DEF_RAND_NS_H -#define DEF_RAND_NS_H - -#include <Core/common.wtf.h> - -namespace Rand { - u64int rand(); - u64int max(); -} - -#endif - diff --git a/Source/Kernel/Library/SimpleList.class.h b/Source/Kernel/Library/SimpleList.class.h deleted file mode 100644 index 64e37aa..0000000 --- a/Source/Kernel/Library/SimpleList.class.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef DEF_SIMPLELIST_CLASS_H -#define DEF_SIMPLELIST_CLASS_H - -/* This class implements a singly linked list. It is also used to represent one of its elements. */ - -template <typename T> -class SimpleList { - protected: - T m_value; - SimpleList<T>* m_next; - - public: - SimpleList(const T& value, SimpleList<T>* next = 0) : m_value(value), m_next(next) {} - ~SimpleList() { - if (m_next != 0) - delete m_next; - } - - T& v() { return m_value; } - T& operator* () { return m_value; } - - SimpleList<T>* cons(const T& value) { - return new SimpleList<T>(value, this); - } - - SimpleList<T>* next() { - return m_next; - } - - SimpleList<T>* last() { - if (m_next == 0) return this; - return m_next->last(); - } - - SimpleList<T>* delThis() { - SimpleList<T>* ret = m_next; - Mem::kfree(this); - return ret; - } - - void delNext() { - if (m_next == 0) return; - SimpleList<T>* temp = m_next; - m_next = m_next->m_next; - Mem::kfree(temp); - } - - SimpleList<T>* removeOnce(const T& value) { - if (value == m_value) return delThis(); - for (SimpleList<T> *iter = this; iter->next() != 0; iter = iter->next()) { - if (iter->next()->v() == value) { - iter->delNext(); - break; - } - } - return this; - } - - bool isEnd() { - return m_next == 0; - } - - u32int size() { - if (m_next == 0) - return 0; - return m_next->size() + 1; - } -}; - -#endif diff --git a/Source/Kernel/Library/String.class.cpp b/Source/Kernel/Library/String.class.cpp deleted file mode 100644 index 693a11a..0000000 --- a/Source/Kernel/Library/String.class.cpp +++ /dev/null @@ -1,181 +0,0 @@ -#include "String.class.h" -#include <Library/Vector.class.h> - -using namespace CMem; //strlen and memcpy - -String String::hex(u32int number) { - String ret; - ret.m_length = 10; - ret.m_string = new WChar[11]; - ret.m_string[0] = '0'; - ret.m_string[1] = 'x'; - ret.m_string[10] = 0; - - char hexdigits[] = "0123456789ABCDEF"; - for (unsigned int j = 0; j < 8; j++) { - ret.m_string[j + 2] = hexdigits[(number & 0xF0000000) >> 28]; - number = number << 4; - } - return ret; -} - -String String::number(s32int number) { - if (number == 0) return String("0"); - bool negative = false; - if (number < 0) { - negative = true; - number = 0 - number; - } - u32int order = 0, temp = number; - char numbers[] = "0123456789"; - while (temp > 0) { - order++; - temp /= 10; - } - - String ret; - ret.m_length = order; - ret.m_string = new WChar[order + 1]; - - for (u32int i = order; i > 0; i--) { - ret.m_string[i - 1] = numbers[number % 10]; - number /= 10; - } - - ret.m_string[order] = 0; - - if (negative) return String("-") += ret; - - return ret; -} - -String::String(const char* string, u8int encoding) { - m_string = 0; - m_length = 0; - affect(string, encoding); -} - -void String::affect (const char* string, u8int encoding) { - m_length = WChar::utfLen(string, encoding); - if (m_string != 0) delete [] m_string; - if (m_length == 0) { - m_string = 0; - return; - } - m_string = new WChar[m_length + 1]; - int i = 0, l = strlen(string), c = 0; - while (i < l) { - i += m_string[c].affect(string + i, encoding); - c++; - } - m_string[m_length] = 0; -} - -bool String::compare (const char* string, u8int encoding) const { - if (m_length != WChar::utfLen(string, encoding)) return false; - int i = 0, l = strlen(string), c = 0; - WChar tmp; - while (i < l) { - i += tmp.affect(string + i, encoding); - if (m_string[c] != tmp) return false; - c++; - } - return true; -} - -String& String::append (const char* other, u8int encoding) { - WChar* newdata = new WChar[m_length + WChar::utfLen(other, encoding) + 1]; - for (u32int i = 0; i < m_length; i++) { - newdata[i] = m_string[i]; - } - int i = 0, l = strlen(other), c = 0; - while (i < l) { - i += newdata[c + m_length].affect(other + i, encoding); - c++; - } - if (m_string != 0) delete [] m_string; - m_string = newdata; - m_length += strlen(other); - m_string[m_length] = 0; - return *this; -} - -String String::concat (const String &other) const { //Can be optimized - String ret(*this); - return (ret += other); -} - -String String::concat (const char* other, u8int encoding) const { //Can be optimized - String ret(*this); - return (ret.append(other, encoding)); -} - -String String::concat (WChar other) const { - String ret(*this); - return (ret += other); -} - -s64int String::toInt() const { - if (m_string == 0) return 0; - s32int pos = 0; - s64int number = 0; - bool negative = false; - if (m_string[0].value == '-') { - negative = true; - pos = 1; - } - while (m_string[pos] >= '0' && m_string[pos] <= '9') { - number *= 10; - number += (m_string[pos].value - '0'); - pos++; - } - if (negative) return 0 - number; - return number; -} - -u64int String::toInt16() const { - if (m_string == 0) return 0; - u32int pos = 0; - u64int number = 0; - if (m_string[0].value == '0' && m_string[1].value == 'x') pos = 2; - while (1) { - char c = m_string[pos]; - pos++; - if (c >= 'a' && c <= 'f') c -= ('a' - 'A'); //To uppercase - if (c >= '0' && c <= '9') { - number *= 16; - number += (c - '0'); - continue; - } - if (c >= 'A' && c <= 'F') { - number *= 16; - number += (c - 'A' + 10); - continue; - } - break; - } - return number; -} - -Vector<String> String::split(WChar c) const { - Vector<String> ret; - ret.push(String("")); - for (u32int i = 0; i < m_length; i++) { - if (m_string[i] == c) { - ret.push(String("")); - } else { - ret.back() += m_string[i]; - } - } - return ret; -} - -String String::substr(s32int start, u32int size) { - if (start < 0) start = m_length - start; - String ret; - ret.m_string = new WChar[size + 1]; - ret.m_length = size; - memcpy((u8int*)ret.m_string, (const u8int*)(m_string + start), size * sizeof(WChar)); - ret.m_string[size] = 0; - return ret; -} diff --git a/Source/Kernel/Library/String.class.h b/Source/Kernel/Library/String.class.h deleted file mode 100644 index db274c9..0000000 --- a/Source/Kernel/Library/String.class.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef DEF_STRING_CLASS -#define DEF_STRING_CLASS - -#include <Core/common.wtf.h> -#include <Library/WChar.class.h> -#include <Library/BasicString.class.h> - -class String : public BasicString<WChar> { - public: - static String hex(u32int number); - static String number(s32int number); - - String(const char* string, u8int encoding = UE_UTF8); - String() : BasicString<WChar>() {} - String(const String &other) : BasicString<WChar> (other) {} - - void affect(const char* string, u8int encoding = UE_UTF8); - void operator= (const char* other) { affect(other); } - void operator= (const String& other) { BasicString<WChar>::affect(other); } - - bool compare(const char* string, u8int encoding = UE_UTF8) const; - bool operator== (const char* other) const { return compare(other); } - bool operator!= (const char* other) { return !compare(other); } - bool operator== (const String& other) const { return BasicString<WChar>::compare(other); } - bool operator!= (const String& other) const { return !BasicString<WChar>::compare(other); } - - String& append(const char* other, u8int encoding = UE_UTF8); - String &operator+= (const String &other) { BasicString<WChar>::append(other); return *this; } - String &operator+= (const char* other) { return append(other); } - String &operator+= (WChar other) { BasicString<WChar>::append(other); return *this; } - - String concat(const String &other) const; - String concat(const char* other, u8int encoding = UE_UTF8) const; - String concat(WChar other) const; - String operator+ (const String &other) const { return concat(other); } - String operator+ (const char* other) const { return concat(other); } - String operator+ (WChar other) const { return concat(other); } - - s64int toInt() const; //Convert from DEC - u64int toInt16() const; //Convert from HEX - - Vector<String> split(WChar c) const; - - String substr(s32int start, u32int size); -}; - -#endif diff --git a/Source/Kernel/Library/Vector.class.cpp b/Source/Kernel/Library/Vector.class.cpp deleted file mode 100644 index 02ae9be..0000000 --- a/Source/Kernel/Library/Vector.class.cpp +++ /dev/null @@ -1,135 +0,0 @@ -using namespace CMem; //strlen and memcpy - -#define DELDATA if (m_data != NULL and m_size != 0) { \ - for (u32int i = 0; i < m_size; i++) { \ - m_data[i].~T(); \ - } \ - Mem::kfree(m_data); \ -} - -template <typename T> -Vector<T>::Vector() { - //DEBUG_HEX((u32int)this); DEBUG(" NEW EMPTY"); - //DEBUG_HEX(sizeof(T)); DEBUG(" sizeof(T)"); - m_data = 0; - m_size = 0; -} - -template <typename T> -Vector<T>::Vector(u32int size) { - //DEBUG_HEX((u32int)this); DEBUG(" NEW ZERO"); - m_data = new T[size]; - m_size = size; -} - -template <typename T> -Vector<T>::Vector(u32int size, const T& value) { - //DEBUG_HEX((u32int)this); DEBUG(" NEW FILLED"); - //m_data = (T*)Mem::kalloc(size * sizeof(T)); - m_data = new T[size]; - m_size = size; - for (u32int i = 0; i < m_size; i++) { - new (&m_data[i]) T(value); - } - /*for (u32int i = 0; i < size; i++) { - m_data[i] = new(&m_data[i]) T(value); - }*/ -} - -template <typename T> -Vector<T>::Vector(const Vector<T> &other) { - //DEBUG_HEX((u32int)this); DEBUG(" COPY REF"); - m_size = other.m_size; - m_data = (T*)Mem::kalloc(m_size * sizeof(T)); - for (u32int i = 0; i < m_size; i++) { - new(&m_data[i]) T(other.m_data[i]); - } -} - -template <typename T> -Vector<T>& Vector<T>::operator= (const Vector<T> &other) { - //DEBUG_HEX((u32int)this); DEBUG(" COPY EQ"); - DELDATA; - m_size = other.m_size; - m_data = (T*)Mem::kalloc(m_size * sizeof(T)); - for (u32int i = 0; i < m_size; i++) { - new(&m_data[i]) T(other.m_data[i]); - } - return *this; -} - -template <typename T> -Vector<T>::~Vector() { - //DEBUG_HEX((u32int)this); DEBUG(" DELETE"); - DELDATA; - //if (m_data != 0) delete[] m_data; -} - -template <typename T> -T& Vector<T>::operator[] (u32int index) const { - return m_data[index]; -} - -template <typename T> -void Vector<T>::push(const T& element) { - T* newdata = (T*)Mem::kalloc((m_size + 1) * sizeof(T)); - if (m_size != 0 and m_data != 0) { - memcpy((u8int*)newdata, (const u8int*) m_data, m_size * sizeof(T)); - } - new(&newdata[m_size]) T(element); //Construct by copy - //newdata[m_size] = element; - m_size++; - Mem::kfree(m_data); - m_data = newdata; -} - -/* template <typename T> -void Vector<T>::push(T& element) { - T* newdata = (T*)Memory::alloc((m_size + 1) * sizeof(T)); - memcpy((u8int*)newdata, (const u8int*) m_data, m_size * sizeof(T)); - //memcpy((u8int*)newdata + (m_size * sizeof(T)), (const u8int*) element, sizeof(T)); //Copy - new(&newdata[m_size]) T(element); //Construct by copy - m_size++; - Memory::free(m_data); - m_data = newdata; -} */ - -template <typename T> -void Vector<T>::pop() { - m_size--; - //delete(&m_data[m_size], &m_data[m_size]); //implicitly call destructor with placement delete - m_data[m_size].~T(); //Call destructor - T* newdata = (T*)Mem::kalloc(m_size * sizeof(T)); - memcpy((u8int*)newdata, (const u8int*) m_data, m_size * sizeof(T)); - Mem::kfree(m_data); - m_data = newdata; -} - -template <typename T> -T& Vector<T>::back() const { - return m_data[m_size - 1]; -} - -template <typename T> -T& Vector<T>::front() const { - return m_data[0]; -} - - -template <typename T> -u32int Vector<T>::size() const { - return m_size; -} - -template <typename T> -bool Vector<T>::empty() const { - return m_size == 0; -} - -template <typename T> -void Vector<T>::clear() { - if (empty()) return; - DELDATA - m_data = 0; - m_size = 0; -} diff --git a/Source/Kernel/Library/Vector.class.h b/Source/Kernel/Library/Vector.class.h deleted file mode 100644 index 61c26a4..0000000 --- a/Source/Kernel/Library/Vector.class.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef DEF_VECTOR_CLASS -#define DEF_VECTOR_CLASS - -#include <Core/common.wtf.h> - -template <typename T> -class Vector { - private: - T *m_data; - u32int m_size; - - public: - Vector(); - Vector(u32int size); - Vector(u32int size, const T& value); - Vector(const Vector<T> &other); - Vector<T>& operator= (const Vector<T> &other); - ~Vector(); - - T& operator[] (u32int index) const; - - void push(const T& element); - //void push(T& element); - void pop(); - - T& back() const; - T& front() const; - - u32int size() const; - bool empty() const; - void clear(); -}; - -#include "Vector.class.cpp" - -#endif diff --git a/Source/Kernel/Library/WChar.class.cpp b/Source/Kernel/Library/WChar.class.cpp deleted file mode 100644 index ee42849..0000000 --- a/Source/Kernel/Library/WChar.class.cpp +++ /dev/null @@ -1,151 +0,0 @@ -#include "WChar.class.h" - -#ifdef THIS_IS_MELON -using namespace CMem; -#endif - -WChar WChar::CP437[] = { //These are the UTF8 equivalents for the 128 extra characters of code page 437 - "Ç", "ü", "é", "â", "ä", "à", "å", "ç", "ê", "ë", "è", "ï", "î", "ì", "Ä", "Å", - "É", "æ", "Æ", "ô", "ö", "ò", "û", "ù", "ÿ", "Ö", "Ü", "¢", "£", "¥", "₧", "ƒ", - "á", "í", "ó", "ú", "ñ", "Ñ", "ª", "º", "¿", "⌐", "¬", "½", "¼", "¡", "«", "»", - "░", "▒", "▓", "│", "┤", "╡", "╢", "╖", "╕", "╣", "║", "╗", "╝", "╜", "╛", "┐", - "└", "┴", "┬", "├", "─", "┼", "╞", "╟", "╚", "╔", "╩", "╦", "╠", "═", "╬", "¤", - "╨", "╤", "╥", "╙", "╘", "╒", "╓", "╫", "╪", "┘", "┌", "█", "▄", "▌", "▐", "▀", - "α", "ß", "Γ", "π", "Σ", "σ", "µ", "τ", "Φ", "Θ", "Ω", "δ", "∞", "φ", "ε", "∩", - "≡", "±", "≥", "≤", "⌠", "⌡", "÷", "≈", "°", "∙", "·", "√", "ⁿ", "²", "■", "⍽" -}; - -WChar::WChar() { - value = 0; -} - -WChar::WChar(char c) { - affectAscii(c); -} - -WChar::WChar(const char* c, u8int encoding) { - if (encoding == UE_UTF8) affectUtf8(c); - if (encoding == UE_UTF16) affectUtf16(c); - if (encoding == UE_UTF32) affectUtf32(c); -} - -u32int WChar::ucharLen(const char* c, u8int encoding) { - if (encoding == UE_UTF8) { - if ((c[0] & 0x80) == 0) return 1; - else if ((c[0] & 0xE0) == 0xC0) return 2; - else if ((c[0] & 0xF0) == 0xE0) return 3; - else if ((c[0] & 0xF8) == 0xF0) return 4; - else return 1; - } else if (encoding == UE_UTF16) { - if ((c[0] & 0xFC) == 0xD8 and (c[2] & 0xFC) == 0xDC) return 4; - else return 2; - } else if (encoding == UE_UTF32) { - return 4; - } - return 1; -} - -u32int WChar::utfLen(const char* c, u8int encoding) { - int i = 0, l = strlen(c), co = 0; - while (i < l) { - i += ucharLen(c + i, encoding); - co++; - } - return co; -} - -void WChar::affectAscii(char c) { - if (c >= 0) value = c; - else value = CP437[c + 128]; -} - -u32int WChar::affectUtf8(const char* c) { //Returns the number of bytes for the character - if ((c[0] & 0x80) == 0) { - value = c[0]; //0x80 = 10000000b - return 1; - } - if ((c[0] & 0xE0) == 0xC0) { // 11100000b, 11000000b - value = ((c[0] & 0x1F) << 6) | (c[1] & 0x3F); - if (value < 128) value = 0; //Bad value - return 2; - } - if ((c[0] & 0xF0) == 0xE0) { // 11110000b, 11100000b - value = ((c[0] & 0x0F) << 12) | ((c[1] & 0x3F) << 6) | (c[2] & 0x3F); - if (value < 2048) value = 0; //Bad value - if (value >= 0xD800 and value <= 0xDFFF) value = 0; //These values are unallowed - if (value >= 0xFFFE and value <= 0xFFFF) value = 0; - return 3; - } - if ((c[0] & 0xF8) == 0xF0) { // 11111000b, 11110000b - value = ((c[0] & 0x0E) << 18) | ((c[1] & 0x3F) << 12) | ((c[2] & 0x3F) << 6) | (c[3] & 0x3F); - if (value < 65536) value = 0; //Bad value - return 4; - } - value = 0; //Something wrong happenned - return 1; -} - -u32int WChar::affectUtf16(const char* c) { - if ((c[0] & 0xFC) == 0xD8 and // 11111100b, 11011000b - (c[2] & 0xFC) == 0xDC) { // 11111100b, 11011100b - u32int w = ((c[0] & 0x03) << 2) | ((c[1] & 0xC0) >> 6); - u32int x = (c[1] & 0x3F); - u32int y = ((c[2] & 0x03) << 8) | (c[2]); - value = ((w + 1) << 16) | (x << 10) | y; - if (value >= 0xD800 and value <= 0xDFFF) value = 0; //These values are unallowed - if (value >= 0xFFFE and value <= 0xFFFF) value = 0; - return 4; - } else { - value = (c[0] << 8) | (c[1]); - if (value >= 0xD800 and value <= 0xDFFF) value = 0; //These values are unallowed - if (value >= 0xFFFE and value <= 0xFFFF) value = 0; - return 2; - } -} - -u32int WChar::affectUtf32(const char* c) { - value = (c[0] << 24) | (c[1] << 16) | (c[2] << 8) | c[3]; - if (value >= 0xD800 and value <= 0xDFFF) value = 0; //These values are unallowed - if (value >= 0xFFFE and value <= 0xFFFF) value = 0; - return 4; -} - -u8int WChar::toAscii() { - if (value < 128) return (char)value; - for (int i = 0; i < 128; i++) { - if (CP437[i] == value) return (i + 128); - } - return '?'; -} - -uchar_repr_t WChar::toUtf8() { - uchar_repr_t r; - r.i = 0; - if (value < 128) { - r.c[0] = value; - } else if (value < 4096) { - r.c[0] = 0xC0 | ((value & 0x07C0) >> 6); - r.c[1] = 0x80 | (value & 0x3F); - } else if (value < 65536) { - r.c[0] = 0xE0 | ((value & 0xF000) >> 12); - r.c[1] = 0x80 | ((value & 0x0FC0) >> 6); - r.c[2] = 0x80 | (value & 0x003F); - } else { - r.c[0] = 0xF0 | ((value & 0x1C0000) >> 18); - r.c[1] = 0x80 | ((value & 0x3F000) >> 12); - r.c[2] = 0x80 | ((value & 0x0FC0) >> 6); - r.c[3] = 0x80 | (value & 0x003F); - } - return r; -} - -//TODO : code WChar::toUtf16 - -uchar_repr_t WChar::toUtf32() { - uchar_repr_t r; - r.c[0] = (value >> 24) & 0xFF; - r.c[1] = (value >> 16) & 0xFF; - r.c[2] = (value >> 8) & 0xFF; - r.c[3] = value & 0xFF; - return r; -} diff --git a/Source/Kernel/Library/WChar.class.h b/Source/Kernel/Library/WChar.class.h deleted file mode 100644 index e4da603..0000000 --- a/Source/Kernel/Library/WChar.class.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef DEF_UCHAR_CLASS_H -#define DEF_UCHAR_CLASS_H - -#include <Core/types.wtf.h> - -#ifndef THIS_IS_NOT_MELON -#include <Core/common.wtf.h> -#endif - -enum { - UE_UTF8, - UE_UTF16, - UE_UTF32, -}; - -union uchar_repr_t { - char c[4]; - u32int i; -}; - -struct WChar { - u32int value; - static WChar CP437[]; //Codepage 437, used for conversion from/to ascii - - WChar(); //Creates a null character - WChar(char c); //From ascii character - WChar(const char* c, u8int encoding = UE_UTF8); //From utf8 string - - static u32int ucharLen(const char* c, u8int encoding = UE_UTF8); //Returns count of bytes in one unicode character - static u32int utfLen(const char* c, u8int encoding = UE_UTF8); //Returns count of utf8 characters in string - - void affectAscii(char c); - u32int affectUtf8(const char* c); - u32int affectUtf16(const char* c); - u32int affectUtf32(const char* c); - - u32int affect(const char* c, u8int encoding = UE_UTF8) { - if (encoding == UE_UTF8) return affectUtf8(c); - if (encoding == UE_UTF16) return affectUtf16(c); - if (encoding == UE_UTF32) return affectUtf32(c); - affectAscii(c[0]); //Default case :/ - return 1; - } - - u8int toAscii(); - - uchar_repr_t toUtf8(); - uchar_repr_t toUtf16(); - uchar_repr_t toUtf32(); - - uchar_repr_t encode(u8int encoding = UE_UTF8) { - if (encoding == UE_UTF8) return toUtf8(); - //if (encoding == UE_UTF16) return toUtf16(); - if (encoding == UE_UTF32) return toUtf32(); - uchar_repr_t x; - x.c[0] = toAscii(); - return x; - } - - inline WChar operator+ (u32int other) { - WChar r; - r.value = value + other; - return r; - } - inline WChar operator- (u32int other) { - WChar r; - r.value = value - other; - return r; - } - inline WChar& operator+= (u32int other) { - value += other; - return *this; - } - inline WChar& operator-= (u32int other) { - value -= other; - return *this; - } - inline bool operator== (u32int other) { - return value == other; - } - inline u32int operator= (u32int v) { - value = v; - return v; - } - - inline operator u32int () { return value; } -}; - -#endif diff --git a/Source/Kernel/Linker/ElfBinary.class.h b/Source/Kernel/Linker/ElfBinary.class.h index 311e2e6..1fb9929 100644 --- a/Source/Kernel/Linker/ElfBinary.class.h +++ b/Source/Kernel/Linker/ElfBinary.class.h @@ -2,7 +2,7 @@ #define DEF_ELFBINARY_CLASS_H #include <Linker/Binary.proto.h> -#include <Library/SimpleList.class.h> +#include <SimpleList.class.h> /* p_type */ #define PT_NULL 0 diff --git a/Source/Kernel/Makefile b/Source/Kernel/Makefile index af1f9db..257c53d 100644 --- a/Source/Kernel/Makefile +++ b/Source/Kernel/Makefile @@ -5,7 +5,7 @@ CXX = g++ LD = ld LDFLAGS = -T Link.ld -Map Map.txt --oformat=elf32-i386 CFLAGS = -nostdlib -nostartfiles -nodefaultlibs -fno-builtin -fno-stack-protector -Wall -Wextra -Werror -I . -CXXFLAGS = -nostartfiles -nostdlib -fno-exceptions -fno-rtti -I . -Wall -Werror -Wno-write-strings -funsigned-char -D THIS_IS_MELON -D RANDOM_SEED=1`date +%N`LL -g +CXXFLAGS = -nostartfiles -nostdlib -fno-exceptions -fno-rtti -I . -I ../Library/Common -Wall -Werror -Wno-write-strings -funsigned-char -D THIS_IS_MELON_KERNEL -D RANDOM_SEED=1`date +%N`LL -g ASM = nasm ASMFLAGS = -f elf @@ -14,7 +14,6 @@ Objects = Core/loader.wtf.o \ Core/kmain.wtf.o \ Core/cppsupport.wtf.o \ Core/Sys.ns.o \ - Core/CMem.ns.o \ Core/Log.ns.o \ MemoryManager/Mem.ns.o \ MemoryManager/Heap.class.o \ @@ -46,11 +45,12 @@ Objects = Core/loader.wtf.o \ Linker/Binary.proto.o \ Linker/MelonBinary.class.o \ Linker/ElfBinary.class.o \ - Library/Bitset.class.o \ - Library/String.class.o \ - Library/ByteArray.class.o \ - Library/WChar.class.o \ - Library/Rand.ns.o \ + ../Library/Common/Bitset.class.o \ + ../Library/Common/String.class.o \ + ../Library/Common/ByteArray.class.o \ + ../Library/Common/WChar.class.o \ + ../Library/Common/Rand.ns.o \ + ../Library/Common/CMem.ns.o \ VFS/Partition.class.o \ VFS/Part.ns.o \ VFS/VFS.ns.o \ diff --git a/Source/Kernel/MemoryManager/GDT.ns.h b/Source/Kernel/MemoryManager/GDT.ns.h index 94306a4..9505433 100644 --- a/Source/Kernel/MemoryManager/GDT.ns.h +++ b/Source/Kernel/MemoryManager/GDT.ns.h @@ -1,7 +1,7 @@ #ifndef DEF_GDT_NS_H #define DEF_GDT_NS_H -#include <Core/common.wtf.h> +#include <common.h> namespace GDT { struct gdt_entry_t { diff --git a/Source/Kernel/MemoryManager/Heap.class.h b/Source/Kernel/MemoryManager/Heap.class.h index 930a589..291c9ce 100644 --- a/Source/Kernel/MemoryManager/Heap.class.h +++ b/Source/Kernel/MemoryManager/Heap.class.h @@ -1,7 +1,7 @@ #ifndef DEF_HEAP_CLASS_H #define DEF_HEAP_CLASS_H -#include <Core/common.wtf.h> +#include <common.h> #include <TaskManager/Mutex.class.h> //Heap minimum size : 2M diff --git a/Source/Kernel/MemoryManager/Mem.ns.cpp b/Source/Kernel/MemoryManager/Mem.ns.cpp index 0698a12..6c64a53 100644 --- a/Source/Kernel/MemoryManager/Mem.ns.cpp +++ b/Source/Kernel/MemoryManager/Mem.ns.cpp @@ -1,4 +1,4 @@ -#include <Core/common.wtf.h> +#include <common.h> #include <MemoryManager/PhysMem.ns.h> #include <MemoryManager/Heap.class.h> diff --git a/Source/Kernel/MemoryManager/PageAlloc.ns.h b/Source/Kernel/MemoryManager/PageAlloc.ns.h index 894defa..d0b376a 100644 --- a/Source/Kernel/MemoryManager/PageAlloc.ns.h +++ b/Source/Kernel/MemoryManager/PageAlloc.ns.h @@ -1,7 +1,7 @@ #ifndef DEF_PAGEALLOC_NS_H #define DEF_PAGEALLOC_NS_H -#include <Core/common.wtf.h> +#include <common.h> namespace PageAlloc { void init(); diff --git a/Source/Kernel/MemoryManager/PageDirectory.class.h b/Source/Kernel/MemoryManager/PageDirectory.class.h index e06b546..14b78ca 100644 --- a/Source/Kernel/MemoryManager/PageDirectory.class.h +++ b/Source/Kernel/MemoryManager/PageDirectory.class.h @@ -1,7 +1,7 @@ #ifndef DEF_PAGEDIRECTORY_CLASS_H #define DEF_PAGEDIRECTORY_CLASS_H -#include <Core/common.wtf.h> +#include <common.h> struct page_t { u32int present : 1; diff --git a/Source/Kernel/MemoryManager/PhysMem.ns.cpp b/Source/Kernel/MemoryManager/PhysMem.ns.cpp index 9e4b36a..25869f1 100644 --- a/Source/Kernel/MemoryManager/PhysMem.ns.cpp +++ b/Source/Kernel/MemoryManager/PhysMem.ns.cpp @@ -1,5 +1,5 @@ #include "PhysMem.ns.h" -#include <Library/Bitset.class.h> +#include <Bitset.class.h> #include <VTManager/VirtualTerminal.proto.h> PageDirectory* kernelPageDirectory; diff --git a/Source/Kernel/Ressources/Keymaps/Keymap.h b/Source/Kernel/Ressources/Keymaps/Keymap.h index 304e52c..9d1079d 100644 --- a/Source/Kernel/Ressources/Keymaps/Keymap.h +++ b/Source/Kernel/Ressources/Keymaps/Keymap.h @@ -1,4 +1,4 @@ -#include <Library/WChar.class.h> +#include <WChar.class.h> struct melon_keymap_t { WChar normal[128]; diff --git a/Source/Kernel/Ressources/Keymaps/MakeMKM.sh b/Source/Kernel/Ressources/Keymaps/MakeMKM.sh index ac54ce8..056abe2 100755 --- a/Source/Kernel/Ressources/Keymaps/MakeMKM.sh +++ b/Source/Kernel/Ressources/Keymaps/MakeMKM.sh @@ -7,11 +7,11 @@ for KM in `ls | grep cxd`; do echo "#define THIS_IS_NOT_MELON" > kmtemp.cpp echo "#include <cstring>" >> kmtemp.cpp - echo "#include <Library/WChar.class.cpp>" >> kmtemp.cpp + echo "#include <WChar.class.cpp>" >> kmtemp.cpp echo "#include \"$KM\"" >> kmtemp.cpp cat WriteKeymap.cpp >> kmtemp.cpp - g++ kmtemp.cpp -o kmtemp -I ../.. + g++ kmtemp.cpp -o kmtemp -I ../../../Library/Common ./kmtemp done diff --git a/Source/Kernel/Shell/KernelShell.class.cpp b/Source/Kernel/Shell/KernelShell.class.cpp index cb6246d..d90fc4c 100644 --- a/Source/Kernel/Shell/KernelShell.class.cpp +++ b/Source/Kernel/Shell/KernelShell.class.cpp @@ -1,8 +1,7 @@ #include "KernelShell.class.h" #include <VTManager/ScrollableVT.class.h> #include <DeviceManager/Kbd.ns.h> -#include <Library/Rand.ns.h> -#include <Library/SimpleList.class.h> +#include <SimpleList.class.h> #include <MemoryManager/PhysMem.ns.h> #include <VFS/VFS.ns.h> #include <TaskManager/Task.ns.h> diff --git a/Source/Kernel/Shell/KernelShell.class.h b/Source/Kernel/Shell/KernelShell.class.h index 48d9704..e7549c2 100644 --- a/Source/Kernel/Shell/KernelShell.class.h +++ b/Source/Kernel/Shell/KernelShell.class.h @@ -4,7 +4,7 @@ #include <VTManager/VirtualTerminal.proto.h> #include <VFS/DirectoryNode.class.h> #include <TaskManager/Thread.class.h> -#include <Library/Vector.class.h> +#include <Vector.class.h> class KernelShell { friend u32int shellRun(void* ks); diff --git a/Source/Kernel/SyscallManager/IDT.ns.h b/Source/Kernel/SyscallManager/IDT.ns.h index 52f1ed5..e73a885 100644 --- a/Source/Kernel/SyscallManager/IDT.ns.h +++ b/Source/Kernel/SyscallManager/IDT.ns.h @@ -1,7 +1,7 @@ #ifndef DEF_IDT_NS_H #define DEF_IDT_NS_H -#include <Core/common.wtf.h> +#include <common.h> struct registers_t { u32int ds; // Data segment selector diff --git a/Source/Kernel/TaskManager/Mutex.class.h b/Source/Kernel/TaskManager/Mutex.class.h index 5545559..1e3f63d 100644 --- a/Source/Kernel/TaskManager/Mutex.class.h +++ b/Source/Kernel/TaskManager/Mutex.class.h @@ -1,7 +1,7 @@ #ifndef DEF_MUTEX_CLASS_H #define DEF_MUTEX_CLASS_H -#include <Core/common.wtf.h> +#include <common.h> #define MUTEX_FALSE 0 #define MUTEX_TRUE 1 diff --git a/Source/Kernel/TaskManager/Process.class.h b/Source/Kernel/TaskManager/Process.class.h index 7cd78fc..fdd1377 100644 --- a/Source/Kernel/TaskManager/Process.class.h +++ b/Source/Kernel/TaskManager/Process.class.h @@ -1,9 +1,9 @@ #ifndef DEF_PROCESS_CLASS_H #define DEF_PROCESS_CLASS_H -#include <Library/String.class.h> -#include <Library/Vector.class.h> -#include <Library/SimpleList.class.h> +#include <String.class.h> +#include <Vector.class.h> +#include <SimpleList.class.h> #include <MemoryManager/PageDirectory.class.h> #include <MemoryManager/Heap.class.h> #include <VTManager/VirtualTerminal.proto.h> diff --git a/Source/Kernel/TaskManager/Task.ns.cpp b/Source/Kernel/TaskManager/Task.ns.cpp index 437d5b4..aef07f3 100644 --- a/Source/Kernel/TaskManager/Task.ns.cpp +++ b/Source/Kernel/TaskManager/Task.ns.cpp @@ -1,5 +1,4 @@ #include "Task.ns.h" -#include <Library/Vector.class.h> #include <MemoryManager/PhysMem.ns.h> #define INVALID_TASK_MAGIC 0xBEEFFEED diff --git a/Source/Kernel/TaskManager/Task.ns.h b/Source/Kernel/TaskManager/Task.ns.h index c7c3d23..056e4c0 100644 --- a/Source/Kernel/TaskManager/Task.ns.h +++ b/Source/Kernel/TaskManager/Task.ns.h @@ -3,7 +3,7 @@ #include <TaskManager/Thread.class.h> #include <VTManager/VirtualTerminal.proto.h> -#include <Library/SimpleList.class.h> +#include <SimpleList.class.h> namespace Task { Thread* currThread(); diff --git a/Source/Kernel/VFS/DirectoryNode.class.h b/Source/Kernel/VFS/DirectoryNode.class.h index 2130458..346c4ab 100644 --- a/Source/Kernel/VFS/DirectoryNode.class.h +++ b/Source/Kernel/VFS/DirectoryNode.class.h @@ -2,7 +2,7 @@ #define DEF_DIRECTORYNODE_CLASS_H #include <VFS/FileNode.class.h> -#include <Library/Vector.class.h> +#include <Vector.class.h> class DirectoryNode : public FSNode { protected: diff --git a/Source/Kernel/VFS/FSNode.proto.h b/Source/Kernel/VFS/FSNode.proto.h index 8773543..c3cd1c1 100644 --- a/Source/Kernel/VFS/FSNode.proto.h +++ b/Source/Kernel/VFS/FSNode.proto.h @@ -1,8 +1,8 @@ #ifndef DEF_FSNODE_PROTO_H #define DEF_FSNODE_PROTO_H -#include <Core/common.wtf.h> -#include <Library/String.class.h> +#include <common.h> +#include <String.class.h> class FSNode; #include <VFS/FileSystem.proto.h> diff --git a/Source/Kernel/VFS/File.class.h b/Source/Kernel/VFS/File.class.h index 7831fb5..f5d0c56 100644 --- a/Source/Kernel/VFS/File.class.h +++ b/Source/Kernel/VFS/File.class.h @@ -2,7 +2,7 @@ #define DEF_FILE_CLASS_H #include <VFS/FileNode.class.h> -#include <Library/ByteArray.class.h> +#include <ByteArray.class.h> enum { FM_READ = 0, //Open for read, put cursor at beginning diff --git a/Source/Kernel/VFS/Part.ns.h b/Source/Kernel/VFS/Part.ns.h index 07a45f9..40a0fb2 100644 --- a/Source/Kernel/VFS/Part.ns.h +++ b/Source/Kernel/VFS/Part.ns.h @@ -2,7 +2,7 @@ #define DEF_PART_NS_H #include <Devices/BlockDevice.proto.h> -#include <Library/Vector.class.h> +#include <Vector.class.h> #include <VFS/Partition.class.h> namespace Part { diff --git a/Source/Kernel/VTManager/VT.ns.cpp b/Source/Kernel/VTManager/VT.ns.cpp index 87586bc..ee7299d 100644 --- a/Source/Kernel/VTManager/VT.ns.cpp +++ b/Source/Kernel/VTManager/VT.ns.cpp @@ -1,5 +1,5 @@ #include "VT.ns.h" -#include <Library/Vector.class.h> +#include <Vector.class.h> #include <DeviceManager/Disp.ns.h> namespace VT { diff --git a/Source/Kernel/VTManager/VT.ns.h b/Source/Kernel/VTManager/VT.ns.h index 55556b9..9390636 100644 --- a/Source/Kernel/VTManager/VT.ns.h +++ b/Source/Kernel/VTManager/VT.ns.h @@ -1,7 +1,7 @@ #ifndef DEF_VT_NS_H #define DEF_VT_NS_H -#include <Core/common.wtf.h> +#include <common.h> #include <VTManager/SimpleVT.class.h> namespace VT { diff --git a/Source/Kernel/VTManager/VirtualTerminal.proto.h b/Source/Kernel/VTManager/VirtualTerminal.proto.h index ea6284f..9d0afa0 100644 --- a/Source/Kernel/VTManager/VirtualTerminal.proto.h +++ b/Source/Kernel/VTManager/VirtualTerminal.proto.h @@ -1,11 +1,11 @@ #ifndef DEF_VIRTUALTERMINAL_CLASS_H #define DEF_VIRTUALTERMINAL_CLASS_H -#include <Core/common.wtf.h> -#include <Library/String.class.h> +#include <common.h> +#include <String.class.h> #include <TaskManager/Mutex.class.h> #include <DeviceManager/Kbd.ns.h> -#include <Library/Vector.class.h> +#include <Vector.class.h> struct vtchr { u8int color; diff --git a/Source/Kernel/Core/common.wtf.h b/Source/Kernel/common.h index 5fb67b4..c6da25e 100644 --- a/Source/Kernel/Core/common.wtf.h +++ b/Source/Kernel/common.h @@ -7,9 +7,9 @@ #define NULL 0 -#include <Core/types.wtf.h> +#include <types.h> -#include <Core/CMem.ns.h> +#include <CMem.ns.h> #include <Core/Sys.ns.h> #include <MemoryManager/Mem.ns.h> |