/*   SCE CONFIDENTIAL                                       */
/*   PLAYSTATION(R)3 Programmer Tool Runtime Library 154.001 */
/*   Copyright (C) 2006 Sony Computer Entertainment Inc.    */
/*   All Rights Reserved.                                   */

#if CELL_GCM_INLINE
# ifdef _cplusplus
#  define CELL_GCM_DECL inline __attribute__((always_inline))
# else
#  define CELL_GCM_DECL extern inline
# endif
#else
# define CELL_GCM_DECL
#endif

#if (CELL_GCM_MODE==CELL_GCM_CPP)
# define CELL_GCM_FUNC(a) a
# define CELL_GCM_NO_ARGS()
# define CELL_GCM_ARGS(...) __VA_ARGS__
# define CELL_GCM_ARGS_FUNC(...) __VA_ARGS__
#else
# define CELL_GCM_NO_ARGS() struct CellGcmContextData *CELL_GCM_THIS
# define CELL_GCM_ARGS(...) struct CellGcmContextData *CELL_GCM_THIS, __VA_ARGS__
# define CELL_GCM_ARGS_FUNC(...) CELL_GCM_THIS, __VA_ARGS__
# if CELL_GCM_INLINE
#  if CELL_GCM_UNSAFE
#   define CELL_GCM_FUNC(a) cellGcm ## a ## UnsafeInline
#  else
#   define CELL_GCM_FUNC(a) cellGcm ## a ## Inline
#  endif
# else
#  if CELL_GCM_UNSAFE
#   define CELL_GCM_FUNC(a) cellGcm ## a ## Unsafe
#  else
#   define CELL_GCM_FUNC(a) cellGcm ## a
#  endif
# endif
#endif

#include <cell/gcm/gcm_prototypes_sub.h>

#ifndef __SPU__
#include <cell/gcm/gcm_prototypes_ppu.h>
#endif

#undef CELL_GCM_RESERVE
#undef CELL_GCM_RESERVE_RET
#undef CELL_GCM_DECL
#undef CELL_GCM_FUNC
#undef CELL_GCM_NO_ARGS
#undef CELL_GCM_ARGS
#undef CELL_GCM_ARGS_FUNC
