diff --git a/headers/os/support/StackOrHeapArray.h b/headers/os/support/StackOrHeapArray.h new file mode 100644 index 0000000000..af40bf0e1b --- /dev/null +++ b/headers/os/support/StackOrHeapArray.h @@ -0,0 +1,42 @@ +/* + * Copyright 2012, Jonathan Schleifer . All Rights Reserved. + * Distributed under the terms of the MIT License. + */ +#ifndef _SUPPORT_STACKORHEAPARRAY_H +#define _SUPPORT_STACKORHEAPARRAY_H + +#include + +template +class BStackOrHeapArray { +public: + BStackOrHeapArray(size_t count) + { + if (count > StackSize) + fData = new(std::nothrow) Type[count]; + else + fData = fStackData; + } + + ~BStackOrHeapArray() + { + if (fData != fStackData) + delete[] fData; + } + + bool IsValid() const + { + return fData != NULL; + } + + operator Type*() + { + return fData; + } + +private: + Type fStackData[StackSize]; + Type* fData; +}; + +#endif