2012-07-25 01:16:56 +02:00
|
|
|
/*
|
|
|
|
* Copyright (C) 1998-2004 David Turner and Werner Lemberg
|
|
|
|
* Copyright (C) 2006 Behdad Esfahbod
|
|
|
|
*
|
|
|
|
* This is part of HarfBuzz, an OpenType Layout engine library.
|
|
|
|
*
|
|
|
|
* Permission is hereby granted, without written agreement and without
|
|
|
|
* license or royalty fees, to use, copy, modify, and distribute this
|
|
|
|
* software and its documentation for any purpose, provided that the
|
|
|
|
* above copyright notice and the following two paragraphs appear in
|
|
|
|
* all copies of this software.
|
|
|
|
*
|
|
|
|
* IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
|
|
|
|
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
|
|
|
|
* ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
|
|
|
|
* IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
|
|
|
* DAMAGE.
|
|
|
|
*
|
|
|
|
* THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
|
|
|
|
* BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
|
|
|
|
* ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
|
|
|
|
* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef HARFBUZZ_IMPL_H
|
|
|
|
#define HARFBUZZ_IMPL_H
|
|
|
|
|
|
|
|
#include "harfbuzz-global.h"
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
HB_BEGIN_HEADER
|
|
|
|
|
|
|
|
#ifndef HB_INTERNAL
|
2012-07-26 22:06:16 +02:00
|
|
|
# ifndef __MINGW32__
|
|
|
|
# define HB_INTERNAL __attribute__((__visibility__("hidden")))
|
|
|
|
# else
|
|
|
|
# define HB_INTERNAL
|
|
|
|
# endif
|
2012-07-25 01:16:56 +02:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef NULL
|
|
|
|
# define NULL ((void *)0)
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef FALSE
|
|
|
|
# define FALSE 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef TRUE
|
|
|
|
# define TRUE 1
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef TTAG_GDEF
|
|
|
|
# define TTAG_GDEF HB_MAKE_TAG( 'G', 'D', 'E', 'F' )
|
|
|
|
#endif
|
|
|
|
#ifndef TTAG_GPOS
|
|
|
|
# define TTAG_GPOS HB_MAKE_TAG( 'G', 'P', 'O', 'S' )
|
|
|
|
#endif
|
|
|
|
#ifndef TTAG_GSUB
|
|
|
|
# define TTAG_GSUB HB_MAKE_TAG( 'G', 'S', 'U', 'B' )
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef HB_UNUSED
|
|
|
|
# define HB_UNUSED(arg) ((arg) = (arg))
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#define HB_LIKELY(cond) (cond)
|
|
|
|
#define HB_UNLIKELY(cond) (cond)
|
|
|
|
|
|
|
|
#define ARRAY_LEN(Array) ((int)(sizeof (Array) / sizeof (Array)[0]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define HB_IsHighSurrogate(ucs) \
|
|
|
|
(((ucs) & 0xfc00) == 0xd800)
|
|
|
|
|
|
|
|
#define HB_IsLowSurrogate(ucs) \
|
|
|
|
(((ucs) & 0xfc00) == 0xdc00)
|
|
|
|
|
|
|
|
#define HB_SurrogateToUcs4(high, low) \
|
|
|
|
(((HB_UChar32)(high))<<10) + (low) - 0x35fdc00;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define ALLOC(_ptr,_size) \
|
|
|
|
( (_ptr) = _hb_alloc( _size, &error ), error != 0 )
|
|
|
|
|
|
|
|
#define REALLOC(_ptr,_newsz) \
|
|
|
|
( (_ptr) = _hb_realloc( (_ptr), (_newsz), &error ), error != 0 )
|
|
|
|
|
|
|
|
#define FREE(_ptr) \
|
|
|
|
do { \
|
|
|
|
if ( (_ptr) ) \
|
|
|
|
{ \
|
|
|
|
_hb_free( _ptr ); \
|
|
|
|
_ptr = NULL; \
|
|
|
|
} \
|
|
|
|
} while (0)
|
|
|
|
|
|
|
|
#define ALLOC_ARRAY(_ptr,_count,_type) \
|
|
|
|
ALLOC(_ptr,(_count)*sizeof(_type))
|
|
|
|
|
|
|
|
#define REALLOC_ARRAY(_ptr,_newcnt,_type) \
|
|
|
|
REALLOC(_ptr,(_newcnt)*sizeof(_type))
|
|
|
|
|
|
|
|
#define MEM_Copy(dest,source,count) memcpy( (char*)(dest), (const char*)(source), (size_t)(count) )
|
|
|
|
|
|
|
|
#define ERR(err) _hb_err (err)
|
|
|
|
|
|
|
|
|
|
|
|
HB_INTERNAL HB_Pointer
|
|
|
|
_hb_alloc( size_t size,
|
|
|
|
HB_Error *perror_ );
|
|
|
|
|
|
|
|
HB_INTERNAL HB_Pointer
|
|
|
|
_hb_realloc( HB_Pointer block,
|
|
|
|
size_t new_size,
|
|
|
|
HB_Error *perror_ );
|
|
|
|
|
|
|
|
HB_INTERNAL void
|
|
|
|
_hb_free( HB_Pointer block );
|
|
|
|
|
|
|
|
|
|
|
|
/* helper func to set a breakpoint on */
|
|
|
|
HB_INTERNAL HB_Error
|
|
|
|
_hb_err (HB_Error code);
|
|
|
|
|
|
|
|
|
|
|
|
HB_END_HEADER
|
|
|
|
|
|
|
|
#endif /* HARFBUZZ_IMPL_H */
|