Tests: Refactor GenerateExportHeader test code

Refactor the library code used in the GenerateExportHeader test to use
an improved naming convention that more directly identifies what it
being tested, making use of namespaces to avoid possible symbol
collisions. This also eliminates duplicate cases such as `libshared()`
and `libshared_not_exported()` which had the same decoration, and adds
consistent pairings of <name>_EXPORT and <name>_DEPRECATED_EXPORT which
were missing previously. The data tests from the previous commit are
also added to `libstatic` and `libshared_and_static` for consistency.

Note that there are no exported members of exported classes, as these
are not allowed on Windows.
This commit is contained in:
Matthew Woehlke 2016-09-02 16:53:34 -04:00 committed by Brad King
parent ce76abb4c4
commit 612d6f29f8
7 changed files with 332 additions and 242 deletions

View File

@ -56,19 +56,29 @@ void compare(const char* refName, const char* testName)
int main()
{
{
Libshared l;
l.libshared();
l.libshared_exported();
l.libshared_deprecated();
l.libshared_not_exported();
libshared::Class l;
// l.method(); LINK ERROR
l.method_exported();
// l.method_deprecated(); LINK ERROR
l.method_deprecated_exported();
// l.method_excluded(); LINK ERROR
// use_int(l.data); LINK ERROR
use_int(l.data_exported);
// use_int(l.data_excluded); LINK ERROR
}
{
libshared::ExportedClass l;
l.method();
l.method_deprecated();
#if defined(_WIN32) || defined(__CYGWIN__)
l.libshared_excluded();
l.method_excluded();
#else
// l.libshared_excluded(); LINK ERROR (NOT WIN32 AND NOT CYGWIN)
// l.method_excluded(); LINK ERROR (NOT WIN32 AND NOT CYGWIN)
#endif
use_int(l.data_exported);
use_int(l.data_not_exported);
use_int(l.data);
#if defined(_WIN32) || defined(__CYGWIN__)
use_int(l.data_excluded);
#else
@ -77,71 +87,76 @@ int main()
}
{
LibsharedNotExported l;
// l.libshared(); LINK ERROR
l.libshared_exported();
l.libshared_deprecated();
// l.libshared_not_exported(); LINK ERROR
// l.libshared_excluded(); LINK ERROR
libshared::ExcludedClass l;
// l.method(); LINK ERROR
l.method_exported();
// l.method_deprecated(); LINK ERROR
l.method_deprecated_exported();
// l.method_excluded(); LINK ERROR
// use_int(l.data); LINK ERROR
use_int(l.data_exported);
// use_int(l.data_not_exported); LINK ERROR
// use_int(l.data_excluded); LINK ERROR
}
{
LibsharedExcluded l;
// l.libshared(); LINK ERROR
l.libshared_exported();
l.libshared_deprecated();
// l.libshared_not_exported(); LINK ERROR
// l.libshared_excluded(); LINK ERROR
// libshared::function(); LINK ERROR
libshared::function_exported();
// libshared::function_deprecated(); LINK ERROR
libshared::function_deprecated_exported();
// libshared::function_excluded(); LINK ERROR
// use_int(libshared::data); LINK ERROR
use_int(libshared::data_exported);
// use_int(libshared::data_excluded); LINK ERROR
{
libstatic::Class l;
l.method();
l.method_exported();
l.method_deprecated();
l.method_deprecated_exported();
l.method_excluded();
use_int(l.data);
use_int(l.data_exported);
// use_int(l.data_not_exported); LINK ERROR
// use_int(l.data_excluded); LINK ERROR
}
libshared_exported();
libshared_deprecated();
// libshared_not_exported(); LINK ERROR
// libshared_excluded(); LINK ERROR
use_int(data_exported);
// use_int(data_not_exported); LINK ERROR
// use_int(data_excluded); LINK ERROR
{
Libstatic l;
l.libstatic();
l.libstatic_exported();
l.libstatic_deprecated();
l.libstatic_not_exported();
l.libstatic_excluded();
use_int(l.data_excluded);
}
{
LibstaticNotExported l;
l.libstatic();
l.libstatic_exported();
l.libstatic_deprecated();
l.libstatic_not_exported();
l.libstatic_excluded();
libstatic::ExportedClass l;
l.method();
l.method_exported();
l.method_deprecated();
l.method_deprecated_exported();
l.method_excluded();
use_int(l.data);
use_int(l.data_exported);
use_int(l.data_excluded);
}
{
LibstaticExcluded l;
l.libstatic();
l.libstatic_exported();
l.libstatic_deprecated();
l.libstatic_not_exported();
l.libstatic_excluded();
libstatic::ExcludedClass l;
l.method();
l.method_exported();
l.method_deprecated();
l.method_deprecated_exported();
l.method_excluded();
use_int(l.data);
use_int(l.data_exported);
use_int(l.data_excluded);
}
libstatic_exported();
libstatic_deprecated();
libstatic_not_exported();
libstatic_excluded();
libstatic::function();
libstatic::function_exported();
libstatic::function_deprecated();
libstatic::function_deprecated_exported();
libstatic::function_excluded();
use_int(libstatic::data);
use_int(libstatic::data_exported);
use_int(libstatic::data_excluded);
#if defined(SRC_DIR) && defined(BIN_DIR)
compare(SRC_DIR "/libshared_export.h",

View File

@ -1,106 +1,121 @@
#include "libshared_and_static.h"
#ifndef MY_CUSTOM_CONTENT_ADDED
#error "MY_CUSTOM_CONTENT_ADDED not defined!"
#endif
int LibsharedAndStatic::libshared_and_static() const
int libshared_and_static::Class::method() const
{
return 0;
}
int LibsharedAndStatic::libshared_and_static_exported() const
int libshared_and_static::Class::method_exported() const
{
return 0;
}
int LibsharedAndStatic::libshared_and_static_deprecated() const
int libshared_and_static::Class::method_deprecated() const
{
return 0;
}
int LibsharedAndStatic::libshared_and_static_not_exported() const
int libshared_and_static::Class::method_deprecated_exported() const
{
return 0;
}
int LibsharedAndStatic::libshared_and_static_excluded() const
int libshared_and_static::Class::method_excluded() const
{
return 0;
}
int LibsharedAndStaticNotExported::libshared_and_static() const
int const libshared_and_static::Class::data = 1;
int const libshared_and_static::Class::data_exported = 1;
int const libshared_and_static::Class::data_excluded = 1;
int libshared_and_static::ExportedClass::method() const
{
return 0;
}
int LibsharedAndStaticNotExported::libshared_and_static_exported() const
int libshared_and_static::ExportedClass::method_deprecated() const
{
return 0;
}
int LibsharedAndStaticNotExported::libshared_and_static_deprecated() const
int libshared_and_static::ExportedClass::method_excluded() const
{
return 0;
}
int LibsharedAndStaticNotExported::libshared_and_static_not_exported() const
int const libshared_and_static::ExportedClass::data = 1;
int const libshared_and_static::ExportedClass::data_excluded = 1;
int libshared_and_static::ExcludedClass::method() const
{
return 0;
}
int LibsharedAndStaticNotExported::libshared_and_static_excluded() const
int libshared_and_static::ExcludedClass::method_exported() const
{
return 0;
}
int LibsharedAndStaticExcluded::libshared_and_static() const
int libshared_and_static::ExcludedClass::method_deprecated() const
{
return 0;
}
int LibsharedAndStaticExcluded::libshared_and_static_exported() const
int libshared_and_static::ExcludedClass::method_deprecated_exported() const
{
return 0;
}
int LibsharedAndStaticExcluded::libshared_and_static_deprecated() const
int libshared_and_static::ExcludedClass::method_excluded() const
{
return 0;
}
int LibsharedAndStaticExcluded::libshared_and_static_not_exported() const
int const libshared_and_static::ExcludedClass::data = 1;
int const libshared_and_static::ExcludedClass::data_exported = 1;
int const libshared_and_static::ExcludedClass::data_excluded = 1;
int libshared_and_static::function()
{
return 0;
}
int LibsharedAndStaticExcluded::libshared_and_static_excluded() const
int libshared_and_static::function_exported()
{
return 0;
}
int libshared_and_static()
int libshared_and_static::function_deprecated()
{
return 0;
}
int libshared_and_static_exported()
int libshared_and_static::function_deprecated_exported()
{
return 0;
}
int libshared_and_static_deprecated()
int libshared_and_static::function_excluded()
{
return 0;
}
int libshared_and_static_not_exported()
{
return 0;
}
int const libshared_and_static::data = 1;
int libshared_and_static_excluded()
int const libshared_and_static::data_exported = 1;
int const libshared_and_static::data_excluded = 1;
void use_int(int)
{
return 0;
}

View File

@ -1,66 +1,83 @@
#ifndef SHARED_AND_STATIC_H
#define SHARED_AND_STATIC_H
#ifndef LIBSHARED_AND_STATIC_H
#define LIBSHARED_AND_STATIC_H
#include "libshared_and_static_export.h"
class MYPREFIX_LIBSHARED_AND_STATIC_EXPORT LibsharedAndStatic
namespace libshared_and_static {
class Class
{
public:
int libshared_and_static() const;
int method() const;
int libshared_and_static_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_EXPORT method_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED
libshared_and_static_deprecated() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED method_deprecated() const;
int libshared_and_static_not_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED_EXPORT
method_deprecated_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT
libshared_and_static_excluded() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT method_excluded() const;
static int const data;
static int const MYPREFIX_LIBSHARED_AND_STATIC_EXPORT data_exported;
static int const MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT data_excluded;
};
class LibsharedAndStaticNotExported
class MYPREFIX_LIBSHARED_AND_STATIC_EXPORT ExportedClass
{
public:
int libshared_and_static() const;
int method() const;
int MYPREFIX_LIBSHARED_AND_STATIC_EXPORT
libshared_and_static_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED method_deprecated() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED
libshared_and_static_deprecated() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT method_excluded() const;
int libshared_and_static_not_exported() const;
static int const data;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT
libshared_and_static_excluded() const;
static int const MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT data_excluded;
};
class MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT LibsharedAndStaticExcluded
class MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT ExcludedClass
{
public:
int libshared_and_static() const;
int method() const;
int MYPREFIX_LIBSHARED_AND_STATIC_EXPORT
libshared_and_static_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_EXPORT method_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED
libshared_and_static_deprecated() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED method_deprecated() const;
int libshared_and_static_not_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED_EXPORT
method_deprecated_exported() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT
libshared_and_static_excluded() const;
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT method_excluded() const;
static int const data;
static int const MYPREFIX_LIBSHARED_AND_STATIC_EXPORT data_exported;
static int const MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT data_excluded;
};
MYPREFIX_LIBSHARED_AND_STATIC_EXPORT int libshared_and_static_exported();
int function();
MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED_EXPORT int
libshared_and_static_deprecated();
int MYPREFIX_LIBSHARED_AND_STATIC_EXPORT function_exported();
int libshared_and_static_not_exported();
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED function_deprecated();
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT libshared_and_static_excluded();
int MYPREFIX_LIBSHARED_AND_STATIC_DEPRECATED_EXPORT
function_deprecated_exported();
int MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT function_excluded();
extern int const data;
extern int const MYPREFIX_LIBSHARED_AND_STATIC_EXPORT data_exported;
extern int const MYPREFIX_LIBSHARED_AND_STATIC_NO_EXPORT data_excluded;
} // namespace libshared_and_static
#endif

View File

@ -1,129 +1,116 @@
#include "libshared.h"
int Libshared::libshared() const
int libshared::Class::method() const
{
return 0;
}
int Libshared::libshared_exported() const
int libshared::Class::method_exported() const
{
return 0;
}
int Libshared::libshared_deprecated() const
int libshared::Class::method_deprecated() const
{
return 0;
}
int Libshared::libshared_not_exported() const
int libshared::Class::method_deprecated_exported() const
{
return 0;
}
int Libshared::libshared_excluded() const
int libshared::Class::method_excluded() const
{
return 0;
}
int const Libshared::data_exported = 1;
int const libshared::Class::data = 1;
int const Libshared::data_not_exported = 1;
int const libshared::Class::data_exported = 1;
int const Libshared::data_excluded = 1;
int const libshared::Class::data_excluded = 1;
int LibsharedNotExported::libshared() const
int libshared::ExportedClass::method() const
{
return 0;
}
int LibsharedNotExported::libshared_exported() const
int libshared::ExportedClass::method_deprecated() const
{
return 0;
}
int LibsharedNotExported::libshared_deprecated() const
int libshared::ExportedClass::method_excluded() const
{
return 0;
}
int LibsharedNotExported::libshared_not_exported() const
int const libshared::ExportedClass::data = 1;
int const libshared::ExportedClass::data_excluded = 1;
int libshared::ExcludedClass::method() const
{
return 0;
}
int LibsharedNotExported::libshared_excluded() const
int libshared::ExcludedClass::method_exported() const
{
return 0;
}
int const LibsharedNotExported::data_exported = 1;
int const LibsharedNotExported::data_not_exported = 1;
int const LibsharedNotExported::data_excluded = 1;
int LibsharedExcluded::libshared() const
int libshared::ExcludedClass::method_deprecated() const
{
return 0;
}
int LibsharedExcluded::libshared_exported() const
int libshared::ExcludedClass::method_deprecated_exported() const
{
return 0;
}
int LibsharedExcluded::libshared_deprecated() const
int libshared::ExcludedClass::method_excluded() const
{
return 0;
}
int LibsharedExcluded::libshared_not_exported() const
int const libshared::ExcludedClass::data = 1;
int const libshared::ExcludedClass::data_exported = 1;
int const libshared::ExcludedClass::data_excluded = 1;
int libshared::function()
{
return 0;
}
int LibsharedExcluded::libshared_excluded() const
int libshared::function_exported()
{
return 0;
}
int const LibsharedExcluded::data_exported = 1;
int const LibsharedExcluded::data_not_exported = 1;
int const LibsharedExcluded::data_excluded = 1;
int libshared()
int libshared::function_deprecated()
{
return 0;
}
int libshared_exported()
int libshared::function_deprecated_exported()
{
return 0;
}
int libshared_deprecated()
int libshared::function_excluded()
{
return 0;
}
int libshared_not_exported()
{
return 0;
}
int const libshared::data = 1;
int libshared_excluded()
{
return 0;
}
int const libshared::data_exported = 1;
int const data_exported = 1;
int const data_not_exported = 1;
int const data_excluded = 1;
int const libshared::data_excluded = 1;
void use_int(int)
{

View File

@ -1,83 +1,82 @@
#ifndef LIBSHARED_H
#define LIBSHARED_H
#include "libshared_export.h"
class LIBSHARED_EXPORT Libshared
namespace libshared {
class Class
{
public:
int libshared() const;
int method() const;
int libshared_exported() const;
int LIBSHARED_EXPORT method_exported() const;
int LIBSHARED_DEPRECATED libshared_deprecated() const;
int LIBSHARED_DEPRECATED method_deprecated() const;
int libshared_not_exported() const;
int LIBSHARED_DEPRECATED_EXPORT method_deprecated_exported() const;
int LIBSHARED_NO_EXPORT libshared_excluded() const;
int LIBSHARED_NO_EXPORT method_excluded() const;
static int const data;
static int const LIBSHARED_EXPORT data_exported;
static int const data_not_exported;
static int const LIBSHARED_NO_EXPORT data_excluded;
};
class LibsharedNotExported
class LIBSHARED_EXPORT ExportedClass
{
public:
int libshared() const;
int method() const;
int LIBSHARED_EXPORT libshared_exported() const;
int LIBSHARED_DEPRECATED method_deprecated() const;
int LIBSHARED_DEPRECATED_EXPORT libshared_deprecated() const;
int LIBSHARED_NO_EXPORT method_excluded() const;
int libshared_not_exported() const;
int LIBSHARED_NO_EXPORT libshared_excluded() const;
static int const LIBSHARED_EXPORT data_exported;
static int const data_not_exported;
static int const data;
static int const LIBSHARED_NO_EXPORT data_excluded;
};
class LIBSHARED_NO_EXPORT LibsharedExcluded
class LIBSHARED_NO_EXPORT ExcludedClass
{
public:
int libshared() const;
int method() const;
int LIBSHARED_EXPORT libshared_exported() const;
int LIBSHARED_EXPORT method_exported() const;
int LIBSHARED_DEPRECATED_EXPORT libshared_deprecated() const;
int LIBSHARED_DEPRECATED method_deprecated() const;
int libshared_not_exported() const;
int LIBSHARED_DEPRECATED_EXPORT method_deprecated_exported() const;
int LIBSHARED_NO_EXPORT libshared_excluded() const;
int LIBSHARED_NO_EXPORT method_excluded() const;
static int const data;
static int const LIBSHARED_EXPORT data_exported;
static int const data_not_exported;
static int const LIBSHARED_NO_EXPORT data_excluded;
};
LIBSHARED_EXPORT int libshared_exported();
int function();
LIBSHARED_DEPRECATED_EXPORT int libshared_deprecated();
int LIBSHARED_EXPORT function_exported();
int libshared_not_exported();
int LIBSHARED_DEPRECATED function_deprecated();
int LIBSHARED_NO_EXPORT libshared_excluded();
int LIBSHARED_DEPRECATED_EXPORT function_deprecated_exported();
int LIBSHARED_NO_EXPORT function_excluded();
extern int const data;
extern int const LIBSHARED_EXPORT data_exported;
extern int const data_not_exported;
extern int const LIBSHARED_NO_EXPORT data_excluded;
} // namespace libshared
LIBSHARED_EXPORT void use_int(int);
#endif

View File

@ -1,97 +1,125 @@
#include "libstatic.h"
int Libstatic::libstatic() const
int libstatic::Class::method() const
{
return 0;
}
int Libstatic::libstatic_exported() const
int libstatic::Class::method_exported() const
{
return 0;
}
int Libstatic::libstatic_deprecated() const
int libstatic::Class::method_deprecated() const
{
return 0;
}
int Libstatic::libstatic_not_exported() const
int libstatic::Class::method_deprecated_exported() const
{
return 0;
}
int Libstatic::libstatic_excluded() const
int libstatic::Class::method_excluded() const
{
return 0;
}
int LibstaticNotExported::libstatic() const
int const libstatic::Class::data = 1;
int const libstatic::Class::data_exported = 1;
int const libstatic::Class::data_excluded = 1;
int libstatic::ExportedClass::method() const
{
return 0;
}
int LibstaticNotExported::libstatic_exported() const
int libstatic::ExportedClass::method_exported() const
{
return 0;
}
int LibstaticNotExported::libstatic_deprecated() const
int libstatic::ExportedClass::method_deprecated() const
{
return 0;
}
int LibstaticNotExported::libstatic_not_exported() const
int libstatic::ExportedClass::method_deprecated_exported() const
{
return 0;
}
int LibstaticNotExported::libstatic_excluded() const
int libstatic::ExportedClass::method_excluded() const
{
return 0;
}
int LibstaticExcluded::libstatic() const
int const libstatic::ExportedClass::data = 1;
int const libstatic::ExportedClass::data_exported = 1;
int const libstatic::ExportedClass::data_excluded = 1;
int libstatic::ExcludedClass::method() const
{
return 0;
}
int LibstaticExcluded::libstatic_exported() const
int libstatic::ExcludedClass::method_exported() const
{
return 0;
}
int LibstaticExcluded::libstatic_deprecated() const
int libstatic::ExcludedClass::method_deprecated() const
{
return 0;
}
int LibstaticExcluded::libstatic_not_exported() const
int libstatic::ExcludedClass::method_deprecated_exported() const
{
return 0;
}
int LibstaticExcluded::libstatic_excluded() const
int libstatic::ExcludedClass::method_excluded() const
{
return 0;
}
int libstatic_exported()
int const libstatic::ExcludedClass::data = 1;
int const libstatic::ExcludedClass::data_exported = 1;
int const libstatic::ExcludedClass::data_excluded = 1;
int libstatic::function()
{
return 0;
}
int libstatic_deprecated()
int libstatic::function_exported()
{
return 0;
}
int libstatic_not_exported()
int libstatic::function_deprecated()
{
return 0;
}
int libstatic_excluded()
int libstatic::function_deprecated_exported()
{
return 0;
}
int libstatic::function_excluded()
{
return 0;
}
int const libstatic::data = 1;
int const libstatic::data_exported = 1;
int const libstatic::data_excluded = 1;

View File

@ -1,57 +1,86 @@
#ifndef LIBSTATIC_H
#define LIBSTATIC_H
#include "libstatic_export.h"
class LIBSTATIC_EXPORT Libstatic
namespace libstatic {
class Class
{
public:
int libstatic() const;
int method() const;
int libstatic_exported() const;
int LIBSTATIC_EXPORT method_exported() const;
int LIBSTATIC_DEPRECATED libstatic_deprecated() const;
int LIBSTATIC_DEPRECATED method_deprecated() const;
int libstatic_not_exported() const;
int LIBSTATIC_DEPRECATED_EXPORT method_deprecated_exported() const;
int LIBSTATIC_NO_EXPORT libstatic_excluded() const;
int LIBSTATIC_NO_EXPORT method_excluded() const;
static int const data;
static int const LIBSTATIC_EXPORT data_exported;
static int const LIBSTATIC_NO_EXPORT data_excluded;
};
class LibstaticNotExported
class LIBSTATIC_EXPORT ExportedClass
{
public:
int libstatic() const;
int method() const;
int LIBSTATIC_EXPORT libstatic_exported() const;
int LIBSTATIC_EXPORT method_exported() const;
int LIBSTATIC_DEPRECATED libstatic_deprecated() const;
int LIBSTATIC_DEPRECATED method_deprecated() const;
int libstatic_not_exported() const;
int LIBSTATIC_DEPRECATED_EXPORT method_deprecated_exported() const;
int LIBSTATIC_NO_EXPORT libstatic_excluded() const;
int LIBSTATIC_NO_EXPORT method_excluded() const;
static int const data;
static int const LIBSTATIC_EXPORT data_exported;
static int const LIBSTATIC_NO_EXPORT data_excluded;
};
class LIBSTATIC_NO_EXPORT LibstaticExcluded
class LIBSTATIC_NO_EXPORT ExcludedClass
{
public:
int libstatic() const;
int method() const;
int LIBSTATIC_EXPORT libstatic_exported() const;
int LIBSTATIC_EXPORT method_exported() const;
int LIBSTATIC_DEPRECATED libstatic_deprecated() const;
int LIBSTATIC_DEPRECATED method_deprecated() const;
int libstatic_not_exported() const;
int LIBSTATIC_DEPRECATED_EXPORT method_deprecated_exported() const;
int LIBSTATIC_NO_EXPORT libstatic_excluded() const;
int LIBSTATIC_NO_EXPORT method_excluded() const;
static int const data;
static int const LIBSTATIC_EXPORT data_exported;
static int const LIBSTATIC_NO_EXPORT data_excluded;
};
LIBSTATIC_EXPORT int libstatic_exported();
int function();
LIBSTATIC_DEPRECATED_EXPORT int libstatic_deprecated();
int LIBSTATIC_EXPORT function_exported();
int libstatic_not_exported();
int LIBSTATIC_DEPRECATED function_deprecated();
int LIBSTATIC_NO_EXPORT libstatic_excluded();
int LIBSTATIC_DEPRECATED_EXPORT function_deprecated_exported();
int LIBSTATIC_NO_EXPORT function_excluded();
extern int const data;
extern int const LIBSTATIC_EXPORT data_exported;
extern int const LIBSTATIC_NO_EXPORT data_excluded;
} // namespace libstatic
#endif