diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..0375c3a --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,19 @@ +{ + "configurations": [ + { + "name": "Win32", + "includePath": [ + "${workspaceFolder}/**" + ], + "defines": [ + "_DEBUG", + "UNICODE", + "_UNICODE", + "MD_INTELLISENSE_DIRECTIVES" + ], + "windowsSdkVersion": "10.0.22621.0", + "compilerPath": "cl.exe" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/code/dependencies/arch.h b/code/dependencies/arch.h new file mode 100644 index 0000000..e630311 --- /dev/null +++ b/code/dependencies/arch.h @@ -0,0 +1,13 @@ +#if MD_INTELLISENSE_DIRECTIVES +#pragma once +#endif + +#if defined( _WIN64 ) || defined( __x86_64__ ) || defined( _M_X64 ) || defined( __64BIT__ ) || defined( __powerpc64__ ) || defined( __ppc64__ ) || defined( __aarch64__ ) +# ifndef MD_ARCH_64_BIT +# define MD_ARCH_64_BIT 1 +# endif +#else +# ifndef MD_ARCH_32_BIT +# define MD_ARCH_32_BIT 1 +# endif +#endif diff --git a/code/dependencies/base_types.h b/code/dependencies/base_types.h new file mode 100644 index 0000000..5513969 --- /dev/null +++ b/code/dependencies/base_types.h @@ -0,0 +1,128 @@ +#ifdef MD_INTELLISENSE_DIRECTIVES +#pragma once +#include "macros.h" +#endif + +#pragma region Basic Types + +#define MD_U8_MIN 0u +#define MD_U8_MAX 0xffu +#define MD_I8_MIN ( -0x7f - 1 ) +#define MD_I8_MAX 0x7f + +#define MD_U16_MIN 0u +#define MD_U16_MAX 0xffffu +#define MD_I16_MIN ( -0x7fff - 1 ) +#define MD_I16_MAX 0x7fff + +#define MD_U32_MIN 0u +#define MD_U32_MAX 0xffffffffu +#define MD_I32_MIN ( -0x7fffffff - 1 ) +#define MD_I32_MAX 0x7fffffff + +#define MD_U64_MIN 0ull +#define MD_U64_MAX 0xffffffffffffffffull +#define MD_I64_MIN ( -0x7fffffffffffffffll - 1 ) +#define MD_I64_MAX 0x7fffffffffffffffll + +#if defined( MD_ARCH_32_BIT ) +# define MD_USIZE_MIN GEN_U32_MIN +# define MD_USIZE_MAX GEN_U32_MAX +# define MD_ISIZE_MIN GEN_S32_MIN +# define MD_ISIZE_MAX GEN_S32_MAX +#elif defined( MD_ARCH_64_BIT ) +# define MD_USIZE_MIN GEN_U64_MIN +# define MD_USIZE_MAX GEN_U64_MAX +# define MD_ISIZE_MIN GEN_I64_MIN +# define MD_ISIZE_MAX GEN_I64_MAX +#else +# error Unknown architecture size. This library only supports 32 bit and 64 bit architectures. +#endif + +#define MD_F32_MIN 1.17549435e-38f +#define MD_F32_MAX 3.40282347e+38f +#define MD_F64_MIN 2.2250738585072014e-308 +#define MD_F64_MAX 1.7976931348623157e+308 + +#if defined( MD_COMPILER_MSVC ) +# if _MSC_VER < 1300 +typedef unsigned char U8; +typedef signed char S8; +typedef unsigned short U16; +typedef signed short S16; +typedef unsigned int U32; +typedef signed int S32; +# else +typedef unsigned __int8 U8; +typedef signed __int8 S8; +typedef unsigned __int16 U16; +typedef signed __int16 S16; +typedef unsigned __int32 U32; +typedef signed __int32 S32; +# endif +typedef unsigned __int64 U64; +typedef signed __int64 S64; +#else +# include + +typedef uint8_t U8; +typedef int8_t S8; +typedef uint16_t U16; +typedef int16_t S16; +typedef uint32_t U32; +typedef int32_t S32; +typedef uint64_t U64; +typedef int64_t S64; +#endif + +typedef struct U128 U128; +struct U128 { + U64 data[2]; +}; + +static_assert( sizeof( U8 ) == sizeof( S8 ), "sizeof(U8) != sizeof(S8)" ); +static_assert( sizeof( U16 ) == sizeof( S16 ), "sizeof(U16) != sizeof(sS6)" ); +static_assert( sizeof( U32 ) == sizeof( S32 ), "sizeof(U32) != sizeof(sS2)" ); +static_assert( sizeof( U64 ) == sizeof( S64 ), "sizeof(U64) != sizeof(sS4)" ); + +static_assert( sizeof( U8 ) == 1, "sizeof(U8) != 1" ); +static_assert( sizeof( U16 ) == 2, "sizeof(U16) != 2" ); +static_assert( sizeof( U32 ) == 4, "sizeof(U32) != 4" ); +static_assert( sizeof( U64 ) == 8, "sizeof(U64) != 8" ); + +typedef size_t USIZE; +typedef ptrdiff_t SSIZE; + +static_assert( sizeof( USIZE ) == sizeof( SSIZE ), "sizeof(USIZE) != sizeof(SSIZE)" ); + +// NOTE: (u)zpl_intptr is only here for semantic reasons really as this library will only support 32/64 bit OSes. +#if defined( _WIN64 ) +typedef signed __int64 SPTR; +typedef unsigned __int64 UPTR; +#elif defined( _WIN32 ) +// NOTE; To mark types changing their size, e.g. zpl_intptr +# ifndef _W64 +# if ! defined( __midl ) && ( defined( _X86_ ) || defined( _M_IX86 ) ) && _MSC_VER >= 1300 +# define _W64 __w64 +# else +# define _W64 +# endif +# endifk +typedef _W64 signed int SPTR; +typedef _W64 unsigned int UPTR; +#else +typedef uintptr_t UPTR; +typedef intptr_t SPTR; +#endif + +static_assert( sizeof( UPTR ) == sizeof( SPTR ), "sizeof(UPTR) != sizeof(SPTR)" ); + +typedef float F32; +typedef double F64; + +static_assert( sizeof( F32 ) == 4, "sizeof(F32) != 4" ); +static_assert( sizeof( F64 ) == 8, "sizeof(F64) != 8" ); + +typedef S8 B8; +typedef S16 B16; +typedef S32 B32; diff --git a/code/dependencies/compiler.h b/code/dependencies/compiler.h new file mode 100644 index 0000000..bfb6c23 --- /dev/null +++ b/code/dependencies/compiler.h @@ -0,0 +1,65 @@ +#if MD_INTELLISENSE_DIRECTIVES +#pragma once +#endif + +#pragma region Platform Compiler + +#if defined( _MSC_VER ) +# pragma message("Detected MSVC") +// # define MD_COMPILER_CLANG 0 +# define MD_COMPILER_MSVC 1 +// # define MD_COMPILER_GCC 0 +#elif defined( __GNUC__ ) +# pragma message("Detected GCC") +// # define MD_COMPILER_CLANG 0 +// # define MD_COMPILER_MSVC 0 +# define MD_COMPILER_GCC 1 +#elif defined( __clang__ ) +# pragma message("Detected CLANG") +# define MD_COMPILER_CLANG 1 +// # define MD_COMPILER_MSVC 0 +// # define MD_COMPILER_GCC 0 +#else +# error Unknown compiler +#endif + +#if defined( __has_attribute ) +# define MD_HAS_ATTRIBUTE( attribute ) __has_attribute( attribute ) +#else +# define MD_HAS_ATTRIBUTE( attribute ) ( 0 ) +#endif + +#if defined(MD_GCC_VERSION_CHECK) +# undef MD_GCC_VERSION_CHECK +#endif +#if defined(GEN_GCC_VERSION) +# define MD_GCC_VERSION_CHECK(major,minor,patch) (GEN_GCC_VERSION >= GEN_VERSION_ENCODE(major, minor, patch)) +#else +# define MD_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if ! defined(MD_COMPILER_C) +# ifdef __cplusplus +# define MD_COMPILER_C 0 +# define MD_COMPILER_CPP 1 +# else +# if defined(__STDC__) +# define MD_COMPILER_C 1 +# define MD_COMPILER_CPP 0 +# else + // Fallback for very old C compilers +# define MD_COMPILER_C 1 +# define MD_COMPILER_CPP 0 +# endif +# endif +#endif + +#if MD_COMPILER_C +#pragma message("MD: Detected C") +#endif + +#if MD_COMPILER_CPP +#pragma message("MD: Detected CPP") +#endif + +#pragma endregion Platform Compiler diff --git a/code/dependencies/cstd.h b/code/dependencies/cstd.h new file mode 100644 index 0000000..ed46641 --- /dev/null +++ b/code/dependencies/cstd.h @@ -0,0 +1,21 @@ +#if MD_INTELLISENSE_DIRECTIVES +#include "arch.h" +#include "os.h" +#include "compiler.h" +#endif + +#pragma region Mandatory Includes + +# include +# include + +# if defined( MD_SYSTEM_WINDOWS ) +# include +# endif + +#if MD_COMPILER_C +#include +#include +#endif + +#pragma endregion Mandatory Includes diff --git a/code/dependencies/macros.h b/code/dependencies/macros.h new file mode 100644 index 0000000..b2d80a1 --- /dev/null +++ b/code/dependencies/macros.h @@ -0,0 +1,49 @@ +#if MD_INTELLISENSE_DIRECTIVES +#include "cstd.h" +#endif + +#ifndef MD_API +#if MD_COMPILER_MSVC +# ifdef MD_DYN_LINK +# ifdef MD_DYN_EXPORT +# define MD_API __declspec(dllexport) +# else +# define MD_API __declspec(dllimport) +# endif +# else +# define MD_API // Empty for static builds +# endif +#else +# ifdef MD_DYN_LINK +# define MD_API __attribute__((visibility("default"))) +# else +# define MD_API // Empty for static builds +# endif +#endif +#endif // GEN_API + +#ifndef internal +#define internal static +#endif + +#ifndef local_persist +#define local_persist static +#endif + +#if MD_DONT_USE_NAMESPACE || MD_COMPILER_C +# if MD_COMPILER_C +# define MD_NS +# define MD_NS_BEGIN +# define MD_NS_END +# else +# define MD_NS :: +# define MD_NS_BEGIN +# define MD_NS_END +# endif +#else + namespace MD {} + namespace md = MD; +# define MD_NS MD:: +# define MD_NS_BEGIN namespace MD { +# define MD_NS_END } +#endif diff --git a/code/dependencies/os.h b/code/dependencies/os.h new file mode 100644 index 0000000..4e254b7 --- /dev/null +++ b/code/dependencies/os.h @@ -0,0 +1,56 @@ +#if MD_INTELLISENSE_DIRECTIVES +#pragma once +#endif + +#pragma region Platform OS + +#if defined( _WIN32 ) || defined( _WIN64 ) +# ifndef MD_OS_WINDOWS +# define MD_OS_WINDOWS 1 +# endif +#elif defined( __APPLE__ ) && defined( __MACH__ ) +# ifndef MD_OS_OSX +# define MD_OS_OSX 1 +# endif +# ifndef MD_OS_MACOS +# define MD_OS_MACOS 1 +# endif +#elif defined( __unix__ ) +# ifndef MD_OS_UNIX +# define MD_OS_UNIX 1 +# endif +# if defined( ANDROID ) || defined( __ANDROID__ ) +# ifndef MD_OS_ANDROID +# define MD_OS_ANDROID 1 +# endif +# ifndef MD_OS_LINUX +# define MD_OS_LINUX 1 +# endif +# elif defined( __linux__ ) +# ifndef MD_OS_LINUX +# define MD_OS_LINUX 1 +# endif +# elif defined( __FreeBSD__ ) || defined( __FreeBSD_kernel__ ) +# ifndef MD_OS_FREEBSD +# define MD_OS_FREEBSD 1 +# endif +# elif defined( __OpenBSD__ ) +# ifndef MD_OS_OPENBSD +# define MD_OS_OPENBSD 1 +# endif +# elif defined( __EMSCRIPTEN__ ) +# ifndef MD_OS_EMSCRIPTEN +# define MD_OS_EMSCRIPTEN 1 +# endif +# elif defined( __CYGWIN__ ) +# ifndef MD_OS_CYGWIN +# define MD_OS_CYGWIN 1 +# endif +# else +# error This UNIX operating system is not supported +# endif +#else +# error This operating system is not supported +#endif + +#pragma endregion Platform OS diff --git a/code/dependencies/string.h b/code/dependencies/string.h new file mode 100644 index 0000000..32f2016 --- /dev/null +++ b/code/dependencies/string.h @@ -0,0 +1,11 @@ +#if MD_INTELLISENSE_DIRECTIVES +#include "base_types.h" +#endif + +typedef struct String8 String8; +struct String8 +{ + U8 *str; + U64 size; +}; + diff --git a/mdesk/mdesk.c b/code/mdesk/mdesk.c similarity index 99% rename from mdesk/mdesk.c rename to code/mdesk/mdesk.c index ca6d85e..5333d35 100644 --- a/mdesk/mdesk.c +++ b/code/mdesk/mdesk.c @@ -1,17 +1,24 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) +#ifdef MD_INTELLISENSE_DIRECTIVES +#include "mdesk.h" +#endif + //////////////////////////////// //~ rjf: Message Type Functions internal void md_msg_list_push(Arena *arena, MD_MsgList *msgs, MD_Node *node, MD_MsgKind kind, String8 string) { - MD_Msg *msg = push_array(arena, MD_Msg, 1); - msg->node = node; - msg->kind = kind; + MD_Msg* + msg = push_array(arena, MD_Msg, 1); + msg->node = node; + msg->kind = kind; msg->string = string; + SLLQueuePush(msgs->first, msgs->last, msg); + msgs->count += 1; msgs->worst_message_kind = Max(kind, msgs->worst_message_kind); } diff --git a/mdesk/mdesk.h b/code/mdesk/mdesk.h similarity index 90% rename from mdesk/mdesk.h rename to code/mdesk/mdesk.h index cda7cb1..9e9215d 100644 --- a/mdesk/mdesk.h +++ b/code/mdesk/mdesk.h @@ -1,8 +1,10 @@ // Copyright (c) 2024 Epic Games Tools // Licensed under the MIT license (https://opensource.org/license/mit/) -#ifndef MDESK_H -#define MDESK_H +#if MD_INTELLISENSE_DIRECTIVES +#pragma once +#include "dependencies/base_types.h" +#endif //////////////////////////////// //~ rjf: Messages @@ -246,12 +248,12 @@ internal void md_msg_list_concat_in_place(MD_MsgList *dst, MD_MsgList *to_push); //////////////////////////////// //~ rjf: Token Type Functions -internal MD_Token md_token_make(Rng1U64 range, MD_TokenFlags flags); -internal B32 md_token_match(MD_Token a, MD_Token b); -internal String8List md_string_list_from_token_flags(Arena *arena, MD_TokenFlags flags); -internal void md_token_chunk_list_push(Arena *arena, MD_TokenChunkList *list, U64 cap, MD_Token token); +internal MD_Token md_token_make(Rng1U64 range, MD_TokenFlags flags); +internal B32 md_token_match(MD_Token a, MD_Token b); +internal String8List md_string_list_from_token_flags(Arena *arena, MD_TokenFlags flags); +internal void md_token_chunk_list_push(Arena *arena, MD_TokenChunkList *list, U64 cap, MD_Token token); internal MD_TokenArray md_token_array_from_chunk_list(Arena *arena, MD_TokenChunkList *chunks); -internal String8 md_content_string_from_token_flags_str8(MD_TokenFlags flags, String8 string); +internal String8 md_content_string_from_token_flags_str8(MD_TokenFlags flags, String8 string); //////////////////////////////// //~ rjf: Node Type Functions @@ -269,12 +271,12 @@ internal MD_NodeRec md_node_rec_depth_first(MD_Node *node, MD_Node *subtree_root #define md_node_rec_depth_first_pre_rev(node, subtree_root) md_node_rec_depth_first((node), (subtree_root), OffsetOf(MD_Node, last), OffsetOf(MD_Node, prev)) //- rjf: tree building -internal MD_Node *md_push_node(Arena *arena, MD_NodeKind kind, MD_NodeFlags flags, String8 string, String8 raw_string, U64 src_offset); -internal void md_node_insert_child(MD_Node *parent, MD_Node *prev_child, MD_Node *node); -internal void md_node_insert_tag(MD_Node *parent, MD_Node *prev_child, MD_Node *node); -internal void md_node_push_child(MD_Node *parent, MD_Node *node); -internal void md_node_push_tag(MD_Node *parent, MD_Node *node); -internal void md_unhook(MD_Node *node); +internal MD_Node* md_push_node(Arena *arena, MD_NodeKind kind, MD_NodeFlags flags, String8 string, String8 raw_string, U64 src_offset); +internal void md_node_insert_tag(MD_Node *parent, MD_Node *prev_child, MD_Node *node); +internal void md_node_insert_child(MD_Node *parent, MD_Node *prev_child, MD_Node *node); +internal void md_node_push_child(MD_Node *parent, MD_Node *node); +internal void md_node_push_tag(MD_Node *parent, MD_Node *node); +internal void md_unhook(MD_Node *node); //- rjf: tree introspection internal MD_Node * md_node_from_chain_string(MD_Node *first, MD_Node *opl, String8 string, StringMatchFlags flags); @@ -321,5 +323,3 @@ internal MD_ParseResult md_parse_from_text(Arena *arena, String8 filename, Strin //~ rjf: Tree -> Text Functions internal String8List md_debug_string_list_from_tree(Arena *arena, MD_Node *root); - -#endif // MDESK_H diff --git a/metagen/metagen.c b/code/metagen/metagen.c similarity index 100% rename from metagen/metagen.c rename to code/metagen/metagen.c diff --git a/metagen/metagen.h b/code/metagen/metagen.h similarity index 100% rename from metagen/metagen.h rename to code/metagen/metagen.h diff --git a/metagen/metagen_base/metagen_base_arena.c b/code/metagen/metagen_base/metagen_base_arena.c similarity index 100% rename from metagen/metagen_base/metagen_base_arena.c rename to code/metagen/metagen_base/metagen_base_arena.c diff --git a/metagen/metagen_base/metagen_base_arena.h b/code/metagen/metagen_base/metagen_base_arena.h similarity index 100% rename from metagen/metagen_base/metagen_base_arena.h rename to code/metagen/metagen_base/metagen_base_arena.h diff --git a/metagen/metagen_base/metagen_base_command_line.c b/code/metagen/metagen_base/metagen_base_command_line.c similarity index 100% rename from metagen/metagen_base/metagen_base_command_line.c rename to code/metagen/metagen_base/metagen_base_command_line.c diff --git a/metagen/metagen_base/metagen_base_command_line.h b/code/metagen/metagen_base/metagen_base_command_line.h similarity index 100% rename from metagen/metagen_base/metagen_base_command_line.h rename to code/metagen/metagen_base/metagen_base_command_line.h diff --git a/metagen/metagen_base/metagen_base_context_cracking.h b/code/metagen/metagen_base/metagen_base_context_cracking.h similarity index 100% rename from metagen/metagen_base/metagen_base_context_cracking.h rename to code/metagen/metagen_base/metagen_base_context_cracking.h diff --git a/metagen/metagen_base/metagen_base_core.c b/code/metagen/metagen_base/metagen_base_core.c similarity index 100% rename from metagen/metagen_base/metagen_base_core.c rename to code/metagen/metagen_base/metagen_base_core.c diff --git a/metagen/metagen_base/metagen_base_core.h b/code/metagen/metagen_base/metagen_base_core.h similarity index 100% rename from metagen/metagen_base/metagen_base_core.h rename to code/metagen/metagen_base/metagen_base_core.h diff --git a/metagen/metagen_base/metagen_base_entry_point.c b/code/metagen/metagen_base/metagen_base_entry_point.c similarity index 100% rename from metagen/metagen_base/metagen_base_entry_point.c rename to code/metagen/metagen_base/metagen_base_entry_point.c diff --git a/metagen/metagen_base/metagen_base_entry_point.h b/code/metagen/metagen_base/metagen_base_entry_point.h similarity index 100% rename from metagen/metagen_base/metagen_base_entry_point.h rename to code/metagen/metagen_base/metagen_base_entry_point.h diff --git a/metagen/metagen_base/metagen_base_inc.c b/code/metagen/metagen_base/metagen_base_inc.c similarity index 100% rename from metagen/metagen_base/metagen_base_inc.c rename to code/metagen/metagen_base/metagen_base_inc.c diff --git a/metagen/metagen_base/metagen_base_inc.h b/code/metagen/metagen_base/metagen_base_inc.h similarity index 100% rename from metagen/metagen_base/metagen_base_inc.h rename to code/metagen/metagen_base/metagen_base_inc.h diff --git a/metagen/metagen_base/metagen_base_log.c b/code/metagen/metagen_base/metagen_base_log.c similarity index 100% rename from metagen/metagen_base/metagen_base_log.c rename to code/metagen/metagen_base/metagen_base_log.c diff --git a/metagen/metagen_base/metagen_base_log.h b/code/metagen/metagen_base/metagen_base_log.h similarity index 100% rename from metagen/metagen_base/metagen_base_log.h rename to code/metagen/metagen_base/metagen_base_log.h diff --git a/metagen/metagen_base/metagen_base_markup.c b/code/metagen/metagen_base/metagen_base_markup.c similarity index 100% rename from metagen/metagen_base/metagen_base_markup.c rename to code/metagen/metagen_base/metagen_base_markup.c diff --git a/metagen/metagen_base/metagen_base_markup.h b/code/metagen/metagen_base/metagen_base_markup.h similarity index 100% rename from metagen/metagen_base/metagen_base_markup.h rename to code/metagen/metagen_base/metagen_base_markup.h diff --git a/metagen/metagen_base/metagen_base_math.c b/code/metagen/metagen_base/metagen_base_math.c similarity index 100% rename from metagen/metagen_base/metagen_base_math.c rename to code/metagen/metagen_base/metagen_base_math.c diff --git a/metagen/metagen_base/metagen_base_math.h b/code/metagen/metagen_base/metagen_base_math.h similarity index 100% rename from metagen/metagen_base/metagen_base_math.h rename to code/metagen/metagen_base/metagen_base_math.h diff --git a/metagen/metagen_base/metagen_base_profile.c b/code/metagen/metagen_base/metagen_base_profile.c similarity index 100% rename from metagen/metagen_base/metagen_base_profile.c rename to code/metagen/metagen_base/metagen_base_profile.c diff --git a/metagen/metagen_base/metagen_base_profile.h b/code/metagen/metagen_base/metagen_base_profile.h similarity index 100% rename from metagen/metagen_base/metagen_base_profile.h rename to code/metagen/metagen_base/metagen_base_profile.h diff --git a/metagen/metagen_base/metagen_base_strings.c b/code/metagen/metagen_base/metagen_base_strings.c similarity index 100% rename from metagen/metagen_base/metagen_base_strings.c rename to code/metagen/metagen_base/metagen_base_strings.c diff --git a/metagen/metagen_base/metagen_base_strings.h b/code/metagen/metagen_base/metagen_base_strings.h similarity index 100% rename from metagen/metagen_base/metagen_base_strings.h rename to code/metagen/metagen_base/metagen_base_strings.h diff --git a/metagen/metagen_base/metagen_base_thread_context.c b/code/metagen/metagen_base/metagen_base_thread_context.c similarity index 100% rename from metagen/metagen_base/metagen_base_thread_context.c rename to code/metagen/metagen_base/metagen_base_thread_context.c diff --git a/metagen/metagen_base/metagen_base_thread_context.h b/code/metagen/metagen_base/metagen_base_thread_context.h similarity index 100% rename from metagen/metagen_base/metagen_base_thread_context.h rename to code/metagen/metagen_base/metagen_base_thread_context.h diff --git a/metagen/metagen_main.c b/code/metagen/metagen_main.c similarity index 100% rename from metagen/metagen_main.c rename to code/metagen/metagen_main.c diff --git a/metagen/metagen_os/core/linux/metagen_os_core_linux.c b/code/metagen/metagen_os/core/linux/metagen_os_core_linux.c similarity index 100% rename from metagen/metagen_os/core/linux/metagen_os_core_linux.c rename to code/metagen/metagen_os/core/linux/metagen_os_core_linux.c diff --git a/metagen/metagen_os/core/linux/metagen_os_core_linux.h b/code/metagen/metagen_os/core/linux/metagen_os_core_linux.h similarity index 100% rename from metagen/metagen_os/core/linux/metagen_os_core_linux.h rename to code/metagen/metagen_os/core/linux/metagen_os_core_linux.h diff --git a/metagen/metagen_os/core/metagen_os_core.c b/code/metagen/metagen_os/core/metagen_os_core.c similarity index 100% rename from metagen/metagen_os/core/metagen_os_core.c rename to code/metagen/metagen_os/core/metagen_os_core.c diff --git a/metagen/metagen_os/core/metagen_os_core.h b/code/metagen/metagen_os/core/metagen_os_core.h similarity index 100% rename from metagen/metagen_os/core/metagen_os_core.h rename to code/metagen/metagen_os/core/metagen_os_core.h diff --git a/metagen/metagen_os/core/win32/metagen_os_core_win32.c b/code/metagen/metagen_os/core/win32/metagen_os_core_win32.c similarity index 100% rename from metagen/metagen_os/core/win32/metagen_os_core_win32.c rename to code/metagen/metagen_os/core/win32/metagen_os_core_win32.c diff --git a/metagen/metagen_os/core/win32/metagen_os_core_win32.h b/code/metagen/metagen_os/core/win32/metagen_os_core_win32.h similarity index 100% rename from metagen/metagen_os/core/win32/metagen_os_core_win32.h rename to code/metagen/metagen_os/core/win32/metagen_os_core_win32.h diff --git a/metagen/metagen_os/metagen_os_inc.c b/code/metagen/metagen_os/metagen_os_inc.c similarity index 100% rename from metagen/metagen_os/metagen_os_inc.c rename to code/metagen/metagen_os/metagen_os_inc.c diff --git a/metagen/metagen_os/metagen_os_inc.h b/code/metagen/metagen_os/metagen_os_inc.h similarity index 100% rename from metagen/metagen_os/metagen_os_inc.h rename to code/metagen/metagen_os/metagen_os_inc.h diff --git a/docs/mdesk.pur b/docs/mdesk.pur index 1a71d64..136b239 100644 Binary files a/docs/mdesk.pur and b/docs/mdesk.pur differ