diff options
author | marha <marha@users.sourceforge.net> | 2013-09-23 09:49:27 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-09-23 09:49:27 +0200 |
commit | b299d73bb416e2a26a642a54d5a15ea9fa30df33 (patch) | |
tree | 4cff827d4348e99d516ee2f1051f92ad5fa3ef8d /mesalib/src/glsl/ralloc.h | |
parent | a5179a42a3376f0d8c1d01456235b044854d8bdc (diff) | |
parent | e4d5a2996e4a03f55bc7d21c493ba1bcbef35aae (diff) | |
download | vcxsrv-b299d73bb416e2a26a642a54d5a15ea9fa30df33.tar.gz vcxsrv-b299d73bb416e2a26a642a54d5a15ea9fa30df33.tar.bz2 vcxsrv-b299d73bb416e2a26a642a54d5a15ea9fa30df33.zip |
Merge remote-tracking branch 'origin/released'
* origin/released:
mesa xserver git update 23 Sep 2013
Conflicts:
mesalib/src/glsl/ast.h
mesalib/src/glsl/glsl_parser_extras.h
mesalib/src/glsl/glsl_symbol_table.cpp
mesalib/src/glsl/ir_constant_expression.cpp
mesalib/src/glsl/list.h
Diffstat (limited to 'mesalib/src/glsl/ralloc.h')
-rw-r--r-- | mesalib/src/glsl/ralloc.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/mesalib/src/glsl/ralloc.h b/mesalib/src/glsl/ralloc.h index 67eb93833..799d3a9b8 100644 --- a/mesalib/src/glsl/ralloc.h +++ b/mesalib/src/glsl/ralloc.h @@ -404,4 +404,30 @@ bool ralloc_vasprintf_append(char **str, const char *fmt, va_list args); } /* end of extern "C" */ #endif +#define _RALLOC_OPS(ALLOC, TYPE) \ + static void* operator new(size_t size, void *mem_ctx) \ + { \ + void *p = ALLOC(mem_ctx, size); \ + assert(p != NULL); \ + return p; \ + } \ + \ + static void operator delete(void *p) \ + { \ + ralloc_free(p); \ + } + +/** + * Declare C++ new and delete operators which use ralloc. + * + * Placing one of these macros in the body of a class makes it possible to do: + * + * TYPE *var = new(mem_ctx) TYPE(...); + * delete var; + * + * which is more idiomatic in C++ than calling ralloc or rzalloc. + */ +#define DECLARE_RALLOC_CXX_OPERATORS(TYPE) _RALLOC_OPS(ralloc_size, TYPE) +#define DECLARE_RZALLOC_CXX_OPERATORS(TYPE) _RALLOC_OPS(rzalloc_size, TYPE) + #endif |