Miscellaneous Macros

Miscellaneous Macros — macros used in liblangtag

Synopsis

#define             LT_ALIGNED_TO                       (_x_,
                                                         _y_)
#define             LT_ALIGNED_TO_POINTER               (_x_)
#define             LT_BEGIN_DECLS
#define             LT_BREAKPOINT
#define             LT_DIR_SEPARATOR
#define             LT_DIR_SEPARATOR_S
#define             LT_END_DECLS
#define             LT_GNUC_NULL_TERMINATED
#define             LT_GNUC_PRINTF                      (format_idx,
                                                         arg_idx)
#define             LT_INLINE_FUNC
#define             LT_LIKELY                           (_e_)
#define             LT_MAX
#define             LT_MIN
#define             LT_N_ELEMENTS                       (_x_)
#define             LT_PATH_MAX
#define             LT_SEARCHPATH_SEPARATOR
#define             LT_SEARCHPATH_SEPARATOR_S
#define             LT_STMT_END
#define             LT_STMT_START
#define             LT_UNLIKELY                         (_e_)
#define             inline
typedef             lt_bool_t;
int                 (*lt_compare_func_t)                (const lt_pointer_t v1,
                                                         const lt_pointer_t v2);
lt_pointer_t        (*lt_copy_func_t)                   (lt_pointer_t data);
void                (*lt_destroy_func_t)                (lt_pointer_t data);
typedef             lt_pointer_t;
typedef             ssize_t;

Description

These macros provide more specialized features which are not needed so often by application programmers.

Details

LT_ALIGNED_TO()

#define LT_ALIGNED_TO(_x_,_y_)		(((_x_) + (_y_) - 1) & ~((_y_) - 1))


LT_ALIGNED_TO_POINTER()

#define LT_ALIGNED_TO_POINTER(_x_) LT_ALIGNED_TO ((_x_), ALIGNOF_VOID_P)


LT_BEGIN_DECLS

#  define LT_BEGIN_DECLS extern "C" {

Used (along with LT_END_DECLS) to bracket header files. If the compiler in use is a C++ compiler, adds extern "C" around the header.


LT_BREAKPOINT

#define             LT_BREAKPOINT()


LT_DIR_SEPARATOR

#  define LT_DIR_SEPARATOR		'\\'


LT_DIR_SEPARATOR_S

#  define LT_DIR_SEPARATOR_S		"\\"


LT_END_DECLS

#  define LT_END_DECLS		}

Used (along with LT_BEGIN_DECLS) to bracket header files. If the compiler in use is a C++ compiler, adds extern "C" around the header.


LT_GNUC_NULL_TERMINATED

#define             LT_GNUC_NULL_TERMINATED

Expands to the GNU C sentinel function attribute if the compiler is gcc, or "" if it isn't. This function attribute only applies to variadic functions and instructs the compiler to check that the argument list is terminated with an explicit NULL. See the GNU C documentation for details.


LT_GNUC_PRINTF()

#define             LT_GNUC_PRINTF(format_idx, arg_idx)

Expands to the GNU C format function attribute if the compiler is gcc. This is used for declaring functions which take a variable number of arguments, with the same syntax as printf(). It allows the compiler to type-check the arguments passed to the function. See the GNU C documentation for details.

format_idx :

the index of the argument corresponding to the format string. (The arguments are numberered from 1).

arg_idx :

the index of the first of the format arguments.

LT_INLINE_FUNC

#  define LT_INLINE_FUNC static __inline __attribute__ ((unused))

This macro is used to export function prototypes so they can be linked with an external version when no inlining is performed.


LT_LIKELY()

#  define LT_LIKELY(_e_) (__builtin_expect (_LT_BOOLEAN_EXPR (_e_), 1))

Hints the compiler that the expression is likely to evaluate to a true value. The compiler may use this information for optimizations.

_e_ :

the expression

Returns :

the value of expr.

LT_MAX

#  define LT_MAX		MAX


LT_MIN

#  define LT_MIN		MIN


LT_N_ELEMENTS()

#define LT_N_ELEMENTS(_x_)		(sizeof (_x_) / sizeof ((_x_)[0]))

Determines the number of elements in an array. The array must be declared so the compiler knows its size at compile-time; this macro will not work on an array allocated on the heap, only static arrays or arrays on the stack.

_x_ :

the array

Returns :

the number of elements.

LT_PATH_MAX

#define LT_PATH_MAX 512


LT_SEARCHPATH_SEPARATOR

#  define LT_SEARCHPATH_SEPARATOR ';'


LT_SEARCHPATH_SEPARATOR_S

#  define LT_SEARCHPATH_SEPARATOR_S ";"


LT_STMT_END

#  define LT_STMT_END		while (0)

Used within multi-statement macros so that they can be used in places where only on statement is expected by the compiler.


LT_STMT_START

#  define LT_STMT_START		do

Used within multi-statement macros so that they can be used in places where only on statement is expected by the compiler.


LT_UNLIKELY()

#  define LT_UNLIKELY(_e_) (__builtin_expect (_LT_BOOLEAN_EXPR (_e_), 0))

Hints the compiler that the expression is unlikely to evaluate to a true value. The compiler may use this information for optimizations.

_e_ :

the expression

Returns :

the value of expr.

inline

#  define inline __inline__


lt_bool_t

typedef int		lt_bool_t;


lt_compare_func_t ()

int                 (*lt_compare_func_t)                (const lt_pointer_t v1,
                                                         const lt_pointer_t v2);


lt_copy_func_t ()

lt_pointer_t        (*lt_copy_func_t)                   (lt_pointer_t data);


lt_destroy_func_t ()

void                (*lt_destroy_func_t)                (lt_pointer_t data);


lt_pointer_t

typedef void *		lt_pointer_t;


ssize_t

typedef signed long long ssize_t;