From fb68886768ccbab73550eb23c62eaabcc843904c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 27 Jun 2003 22:58:58 +0000 Subject: [PATCH] C++ for the kernel. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3701 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/kernel/util/kernel_cpp.h | 59 ++++++++++++++++++++++++ src/kernel/core/util/Jamfile | 7 +++ src/kernel/core/util/kernel_cpp.cpp | 16 +++++++ 3 files changed, 82 insertions(+) create mode 100644 headers/private/kernel/util/kernel_cpp.h create mode 100644 src/kernel/core/util/Jamfile create mode 100644 src/kernel/core/util/kernel_cpp.cpp 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"); +} +