12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #ifndef BASE_COMPONENT_EXPORT_H_
- #define BASE_COMPONENT_EXPORT_H_
- #define COMPONENT_EXPORT(component) \
- COMPONENT_MACRO_CONDITIONAL_(IS_##component##_IMPL, \
- COMPONENT_EXPORT_ANNOTATION, \
- COMPONENT_IMPORT_ANNOTATION)
- #define INSIDE_COMPONENT_IMPL(component) \
- COMPONENT_MACRO_CONDITIONAL_(IS_##component##_IMPL, 1, 0)
- #if defined(COMPONENT_BUILD)
- #if defined(WIN32)
- #define COMPONENT_EXPORT_ANNOTATION __declspec(dllexport)
- #define COMPONENT_IMPORT_ANNOTATION __declspec(dllimport)
- #else
- #define COMPONENT_EXPORT_ANNOTATION __attribute__((visibility("default")))
- #define COMPONENT_IMPORT_ANNOTATION
- #endif
- #else
- #define COMPONENT_EXPORT_ANNOTATION
- #define COMPONENT_IMPORT_ANNOTATION
- #endif
- #define COMPONENT_MACRO_CONDITIONAL_(condition, consequent, alternate) \
- COMPONENT_MACRO_SELECT_THIRD_ARGUMENT_( \
- COMPONENT_MACRO_CONDITIONAL_COMMA_(condition), consequent, alternate)
- #define COMPONENT_MACRO_CONDITIONAL_COMMA_(...) \
- COMPONENT_MACRO_CONDITIONAL_COMMA_IMPL_(__VA_ARGS__,)
- #define COMPONENT_MACRO_CONDITIONAL_COMMA_IMPL_(x, ...) \
- COMPONENT_MACRO_CONDITIONAL_COMMA_##x##_
- #define COMPONENT_MACRO_CONDITIONAL_COMMA_1_ ,
- #define COMPONENT_MACRO_SELECT_THIRD_ARGUMENT_(...) \
- COMPONENT_MACRO_SELECT_THIRD_ARGUMENT_IMPL_(__VA_ARGS__)
- #define COMPONENT_MACRO_SELECT_THIRD_ARGUMENT_IMPL_(a, b, c, ...) c
- #endif
|