mapi: Rewrite mapi_abi.py to get rid of preprocessor magic.
[mesa.git] / src / mapi / mapi / mapi_tmp.h
index 79beca47d2a1e038aa5690867ab0254b743563ec..a1b067fb73ce41fa9d5cedde60a6de59160b3938 100644 (file)
  *    Chia-I Wu <olv@lunarg.com>
  */
 
-#include "u_macros.h"
-
 #ifndef MAPI_ABI_HEADER
 #error "MAPI_ABI_HEADER must be defined"
 #endif
 
-
-/**
- * Get API defines.
- */
-#ifdef MAPI_TMP_DEFINES
-#   define MAPI_ABI_DEFINES
-#   include MAPI_ABI_HEADER
-
-#ifndef MAPI_ABI_PREFIX
-#error "MAPI_ABI_PREFIX must be defined"
-#endif
-#ifndef MAPI_ABI_PUBLIC
-#error "MAPI_ABI_PUBLIC must be defined"
-#endif
-#ifndef MAPI_ABI_ATTR
-#error "MAPI_ABI_ATTR must be defined"
-#endif
-
-#undef MAPI_TMP_DEFINES
-#endif /* MAPI_TMP_DEFINES */
-
-
-/**
- * Generate fields of struct mapi_table.
- */
-#ifdef MAPI_TMP_TABLE
-#   define MAPI_ABI_ENTRY(ret, name, params)                   \
-      ret (MAPI_ABI_ATTR *name) params;
-#   define MAPI_DYNAMIC_ENTRY(ret, name, params)               \
-      ret (MAPI_ABI_ATTR *name) params;
-#   include MAPI_ABI_HEADER
-#undef MAPI_TMP_TABLE
-#endif /* MAPI_TMP_TABLE */
-
-
-/**
- * Declare public entries.
- */
-#ifdef MAPI_TMP_PUBLIC_DECLARES
-#   define MAPI_ABI_ENTRY(ret, name, params)                   \
-      MAPI_ABI_PUBLIC ret MAPI_ABI_ATTR U_CONCAT(MAPI_ABI_PREFIX, name) params;
-#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
-      MAPI_ABI_ENTRY(ret, name, params);
-#   define MAPI_ABI_ENTRY_HIDDEN(ret, name, params)            \
-      HIDDEN ret MAPI_ABI_ATTR U_CONCAT(MAPI_ABI_PREFIX, name) params;
-#   define MAPI_ALIAS_ENTRY_HIDDEN(alias, ret, name, params)   \
-      MAPI_ABI_ENTRY_HIDDEN(ret, name, params)
-#   include MAPI_ABI_HEADER
-#undef MAPI_TMP_PUBLIC_DECLARES
-#endif /* MAPI_TMP_PUBLIC_DECLARES */
-
-
-/**
- * Generate string pool and public stubs.
- */
-#ifdef MAPI_TMP_PUBLIC_STUBS
-/* define the string pool */
-static const char public_string_pool[] =
-#   define MAPI_ABI_ENTRY(ret, name, params)                   \
-      U_STRINGIFY(name) "\0"
-#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
-      MAPI_ABI_ENTRY(ret, name, params)
-#   include MAPI_ABI_HEADER
-   ;
-/* define public_sorted_indices */
-#   define MAPI_ABI_SORTED_INDICES public_sorted_indices
-#   include MAPI_ABI_HEADER
-
-/* define public_stubs */
-static const struct mapi_stub public_stubs[] = {
-#   define MAPI_ABI_ENTRY(ret, name, params)                   \
-      { (mapi_func) U_CONCAT(MAPI_ABI_PREFIX, name),           \
-         MAPI_SLOT_ ## name, (void *) MAPI_POOL_ ## name },
-#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
-      MAPI_ABI_ENTRY(ret, name, params)
-#   include MAPI_ABI_HEADER
-   { NULL, -1, (void *) -1 }
-};
-
-#undef MAPI_TMP_PUBLIC_STUBS
-#endif /* MAPI_TMP_PUBLIC_STUBS */
-
-
-/**
- * Generate public entries.
- */
-#ifdef MAPI_TMP_PUBLIC_ENTRIES
-#   define MAPI_ABI_ENTRY(ret, name, params)                   \
-      ret MAPI_ABI_ATTR U_CONCAT(MAPI_ABI_PREFIX, name) params
-#   define MAPI_ABI_CODE(ret, name, args)                      \
-      {                                                        \
-         const struct mapi_table *tbl = u_current_get();       \
-         tbl->name args;                                       \
-      }
-#   define MAPI_ABI_CODE_RETURN(ret, name, args)               \
-      {                                                        \
-         const struct mapi_table *tbl = u_current_get();       \
-         return tbl->name args;                                \
-      }
-#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
-      MAPI_ABI_ENTRY(ret, name, params)
-#   define MAPI_ALIAS_CODE(alias, ret, name, args)             \
-      MAPI_ABI_CODE(ret, alias, args)
-#   define MAPI_ALIAS_CODE_RETURN(alias, ret, name, args)      \
-      MAPI_ABI_CODE_RETURN(ret, alias, args)
-#   include MAPI_ABI_HEADER
-#undef MAPI_TMP_PUBLIC_ENTRIES
-#endif /* MAPI_TMP_PUBLIC_ENTRIES */
-
-
-/**
- * Generate noop entries.
- */
-#ifdef MAPI_TMP_NOOP_ARRAY
-#ifdef DEBUG
-#   define MAPI_ABI_ENTRY(ret, name, params)                         \
-      static ret MAPI_ABI_ATTR U_CONCAT(noop_, name) params
-#   define MAPI_ABI_CODE(ret, name, args)                            \
-      {                                                              \
-         noop_warn(U_CONCAT_STR(MAPI_ABI_PREFIX, name));             \
-      }
-#   define MAPI_ABI_CODE_RETURN(ret, name, args)                     \
-      {                                                              \
-         noop_warn(U_CONCAT_STR(MAPI_ABI_PREFIX, name));             \
-         return (ret) 0;                                             \
-      }
-#   include MAPI_ABI_HEADER
-
-/* define the noop function array that may be casted to mapi_table */
-const mapi_func table_noop_array[] = {
-#   define MAPI_ABI_ENTRY(ret, name, params)                   \
-      (mapi_func) U_CONCAT(noop_, name),
-#   define MAPI_DYNAMIC_ENTRY(ret, name, params)               \
-      (mapi_func) noop_generic,
-#   include MAPI_ABI_HEADER
-      (mapi_func) noop_generic
-};
-
-#else /* DEBUG */
-
-const mapi_func table_noop_array[] = {
-#   define MAPI_ABI_ENTRY(ret, name, params)                   \
-      (mapi_func) noop_generic,
-#   define MAPI_DYNAMIC_ENTRY(ret, name, params)               \
-      (mapi_func) noop_generic,
-#   include MAPI_ABI_HEADER
-      (mapi_func) noop_generic
-};
-
-#endif /* DEBUG */
-#undef MAPI_TMP_NOOP_ARRAY
-#endif /* MAPI_TMP_NOOP_ARRAY */
-
-
-#ifdef MAPI_TMP_STUB_ASM_GCC
-#   define STUB_ASM_ALIAS(func, to)    \
-      ".globl " func "\n"              \
-      ".set " func ", " to
-#   define STUB_ASM_HIDE(func)         \
-      ".hidden " func
-
-#   define MAPI_ABI_ENTRY(ret, name, params)                         \
-      __asm__(STUB_ASM_ENTRY(U_CONCAT_STR(MAPI_ABI_PREFIX, name)));
-#   define MAPI_ABI_CODE(ret, name, args)                            \
-      __asm__(STUB_ASM_CODE(U_STRINGIFY(MAPI_SLOT_ ## name)));
-#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)                \
-      __asm__(STUB_ASM_ALIAS(U_CONCAT_STR(MAPI_ABI_PREFIX, name),    \
-            U_CONCAT_STR(MAPI_ABI_PREFIX, alias)));
-#   define MAPI_ABI_ENTRY_HIDDEN(ret, name, params)                  \
-      __asm__(STUB_ASM_HIDE(U_CONCAT_STR(MAPI_ABI_PREFIX, name)));   \
-      MAPI_ABI_ENTRY(ret, name, params);
-#   define MAPI_ALIAS_ENTRY_HIDDEN(alias, ret, name, params)         \
-      __asm__(STUB_ASM_HIDE(U_CONCAT_STR(MAPI_ABI_PREFIX, name)));   \
-      MAPI_ALIAS_ENTRY(alias, ret, name, params);
-#   include MAPI_ABI_HEADER
-#undef MAPI_TMP_STUB_ASM_GCC
-#endif /* MAPI_TMP_STUB_ASM_GCC */
+#include MAPI_ABI_HEADER