diff --git a/headers/private/kernel/util/kernel_cpp.h b/headers/private/kernel/util/kernel_cpp.h new file mode 100644 index 0000000000..9b66c1b0fe --- /dev/null +++ b/headers/private/kernel/util/kernel_cpp.h @@ -0,0 +1,59 @@ +#ifndef CPP_H +#define CPP_H +/* cpp - C++ in the kernel +** +** Initial version by Axel Dörfler, axeld@pinc-software.de +** This file may be used under the terms of the OpenBeOS License. +*/ + + +#include +#include + + +// Oh no! C++ in the kernel! Are you nuts? +// +// - no exceptions +// - (almost) no virtuals (well, the Query code now uses them) +// - it's basically only the C++ syntax, and type checking +// - since one tend to encapsulate everything in classes, it has a slightly +// higher memory overhead +// - nicer code +// - easier to maintain + + +inline void * +operator new(size_t size) throw (std::bad_alloc) +{ + // we don't actually throw any exceptions, but we have to + // keep the prototype as specified in , or else GCC 3 + // won't like us + return malloc(size); +} + + +inline void * +operator new[](size_t size) throw (std::bad_alloc) +{ + return malloc(size); +} + + +inline void +operator delete(void *ptr) +{ + free(ptr); +} + + +inline void +operator delete[](void *ptr) +{ + free(ptr); +} + +// we're using virtuals +extern "C" void __pure_virtual(); + + +#endif /* CPP_H */ diff --git a/src/kernel/core/util/Jamfile b/src/kernel/core/util/Jamfile new file mode 100644 index 0000000000..09fc195b41 --- /dev/null +++ b/src/kernel/core/util/Jamfile @@ -0,0 +1,7 @@ +SubDir OBOS_TOP src kernel core util ; + +KernelStaticLibrary libkernel_util : + <$(SOURCE_GRIST)>kernel_cpp.cpp + : + -fno-pic -Wno-unused -D_KERNEL_MODE + ; diff --git a/src/kernel/core/util/kernel_cpp.cpp b/src/kernel/core/util/kernel_cpp.cpp new file mode 100644 index 0000000000..701a1b216a --- /dev/null +++ b/src/kernel/core/util/kernel_cpp.cpp @@ -0,0 +1,16 @@ +/* cpp - C++ in the kernel +** +** Initial version by Axel Dörfler, axeld@pinc-software.de +** This file may be used under the terms of the OpenBeOS License. +*/ + + +#include "util/kernel_cpp.h" + + +extern "C" void +__pure_virtual() +{ + //printf("pure virtual function call"); +} +