diff options
author | Nick Kralevich <nnk@google.com> | 2010-09-16 11:32:17 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-16 11:32:17 -0700 |
commit | cb487e4c5295d0d9bb96ddd3a27372ffad41ae5b (patch) | |
tree | 2b4c5412391bf31f6a54b237ea83bfde05ec3802 /include/freetype/internal/ftmemory.h | |
parent | f2873c598230898219f9481ffb43edc5e4d3f806 (diff) | |
parent | aacb8e1368a883fcbc9fe64fd0e460cef9c9b20c (diff) | |
download | android_external_freetype-cb487e4c5295d0d9bb96ddd3a27372ffad41ae5b.tar.gz android_external_freetype-cb487e4c5295d0d9bb96ddd3a27372ffad41ae5b.tar.bz2 android_external_freetype-cb487e4c5295d0d9bb96ddd3a27372ffad41ae5b.zip |
am aacb8e13: upgrade freetype to 2.4.2.
Merge commit 'aacb8e1368a883fcbc9fe64fd0e460cef9c9b20c'
* commit 'aacb8e1368a883fcbc9fe64fd0e460cef9c9b20c':
upgrade freetype to 2.4.2.
Diffstat (limited to 'include/freetype/internal/ftmemory.h')
-rw-r--r-- | include/freetype/internal/ftmemory.h | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/include/freetype/internal/ftmemory.h b/include/freetype/internal/ftmemory.h index 2010ca9..026aa63 100644 --- a/include/freetype/internal/ftmemory.h +++ b/include/freetype/internal/ftmemory.h @@ -4,7 +4,7 @@ /* */ /* The FreeType memory management macros (specification). */ /* */ -/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007 by */ +/* Copyright 1996-2001, 2002, 2004, 2005, 2006, 2007, 2010 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -58,15 +58,27 @@ FT_BEGIN_HEADER /* - * C++ refuses to handle statements like p = (void*)anything; where `p' - * is a typed pointer. Since we don't have a `typeof' operator in - * standard C++, we have to use ugly casts. + * C++ refuses to handle statements like p = (void*)anything, with `p' a + * typed pointer. Since we don't have a `typeof' operator in standard + * C++, we have to use a template to emulate it. */ #ifdef __cplusplus -#define FT_ASSIGNP( p, val ) *((void**)&(p)) = (val) + + extern "C++" + template <typename T> inline T* + cplusplus_typeof( T*, + void *v ) + { + return static_cast <T*> ( v ); + } + +#define FT_ASSIGNP( p, val ) (p) = cplusplus_typeof( (p), (val) ) + #else + #define FT_ASSIGNP( p, val ) (p) = (val) + #endif |