5#ifndef V8_BASE_EXPORT_TEMPLATE_H_
6#define V8_BASE_EXPORT_TEMPLATE_H_
61#define EXPORT_TEMPLATE_DECLARE(export) \
62 EXPORT_TEMPLATE_INVOKE(DECLARE, EXPORT_TEMPLATE_STYLE(export, ), export)
63#define EXPORT_TEMPLATE_DEFINE(export) \
64 EXPORT_TEMPLATE_INVOKE(DEFINE, EXPORT_TEMPLATE_STYLE(export, ), export)
72#define EXPORT_TEMPLATE_INVOKE(which, style, export) \
73 EXPORT_TEMPLATE_INVOKE_2(which, style, export)
74#define EXPORT_TEMPLATE_INVOKE_2(which, style, export) \
75 EXPORT_TEMPLATE_##which##_##style(export, )
78#define EXPORT_TEMPLATE_DECLARE_DEFAULT(export, _) export
79#define EXPORT_TEMPLATE_DEFINE_DEFAULT(export, _)
84#define EXPORT_TEMPLATE_DECLARE_MSVC_HACK(export, _)
85#define EXPORT_TEMPLATE_DEFINE_MSVC_HACK(export, _) export
102#define EXPORT_TEMPLATE_STYLE(export, _) EXPORT_TEMPLATE_STYLE_2(export, )
103#define EXPORT_TEMPLATE_STYLE_2(export, _) \
104 EXPORT_TEMPLATE_STYLE_3( \
105 EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA##export)
106#define EXPORT_TEMPLATE_STYLE_3(style) style
115#define EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA DEFAULT
116#define EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__attribute__(...) \
118#define EXPORT_TEMPLATE_STYLE_MATCH_foj3FJo5StF0OvIzl7oMxA__declspec(arg) \
119 EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_##arg
122#define EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllexport MSVC_HACK
123#define EXPORT_TEMPLATE_STYLE_MATCH_DECLSPEC_dllimport DEFAULT
147#define EXPORT_TEMPLATE_TEST(want, export) \
148 static_assert(EXPORT_TEMPLATE_INVOKE( \
149 TEST_##want, EXPORT_TEMPLATE_STYLE(export, ), export), \
151#define EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT(...) true
152#define EXPORT_TEMPLATE_TEST_MSVC_HACK_MSVC_HACK(...) true
159#undef EXPORT_TEMPLATE_TEST
160#undef EXPORT_TEMPLATE_TEST_DEFAULT_DEFAULT
161#undef EXPORT_TEMPLATE_TEST_MSVC_HACK_MSVC_HACK
#define EXPORT_TEMPLATE_TEST(want, export)