mirror of https://github.com/KLayout/klayout.git
Windows build compatibility
The issue is with "dllexport": previously, dllexport was present on exposed templates tool (= visibility(default) for gcc/clang). This ensured MacOS compatibility since then the typeinfo is corretly shared and dynamic_cast/typeid works. For Windows, the "dllexport" equivalent requires the template instantiations to be declared "external" which is a coding nightmare. The solution is to provide separate macros for real (non-specialized, not explicitly instantiated) templates (.._PUBLIC_TEMPLATE) which is defined as empty for Windows and "visiblity(default)" for gcc/clang.
This commit is contained in:
parent
111e1f12e0
commit
7e0f1522ac
|
|
@ -32,14 +32,17 @@
|
|||
# define ANT_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define ANT_LOCAL
|
||||
# define ANT_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define ANT_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define ANT_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define ANT_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define ANT_PUBLIC
|
||||
# define ANT_PUBLIC_TEMPLATE
|
||||
# define ANT_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define BD_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define BD_LOCAL
|
||||
# define BD_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define BD_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define BD_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define BD_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define BD_PUBLIC
|
||||
# define BD_PUBLIC_TEMPLATE
|
||||
# define BD_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class ArrayRepository;
|
|||
*/
|
||||
|
||||
template <class C, class R = C>
|
||||
struct DB_PUBLIC box
|
||||
struct DB_PUBLIC_TEMPLATE box
|
||||
{
|
||||
typedef C coord_type;
|
||||
typedef box<C, R> box_type;
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define DB_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define DB_LOCAL
|
||||
# define DB_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define DB_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define DB_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define DB_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define DB_PUBLIC
|
||||
# define DB_PUBLIC_TEMPLATE
|
||||
# define DB_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ template <class C> class generic_repository;
|
|||
class ArrayRepository;
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC edge
|
||||
class DB_PUBLIC_TEMPLATE edge
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
namespace db {
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC edge_pair
|
||||
class DB_PUBLIC_TEMPLATE edge_pair
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -509,6 +509,8 @@ private:
|
|||
* determines how to initialize the iterators and what types to use.
|
||||
*/
|
||||
|
||||
// NOTE: we do explicit instantiation, so the exposure is declared
|
||||
// as DB_PUBLIC - as if it wasn't a template
|
||||
template <class IterTraits>
|
||||
class DB_PUBLIC instance_iterator
|
||||
{
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ typedef generic_repository<db::Coord> GenericRepository;
|
|||
* Since we are using a custom cell list, we have to provide our own iterator
|
||||
*/
|
||||
template <class C>
|
||||
class DB_PUBLIC cell_list_iterator
|
||||
class DB_PUBLIC_TEMPLATE cell_list_iterator
|
||||
{
|
||||
public:
|
||||
typedef C cell_type;
|
||||
|
|
|
|||
|
|
@ -207,6 +207,8 @@ private:
|
|||
* The path can be converted to a polygon.
|
||||
*/
|
||||
|
||||
// NOTE: we do explicit instantiation, so the exposure is declared
|
||||
// as DB_PUBLIC - as if it wasn't a template
|
||||
template <class C>
|
||||
class DB_PUBLIC path
|
||||
{
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ template <class C> class vector;
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC point
|
||||
class DB_PUBLIC_TEMPLATE point
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -83,6 +83,8 @@ inline bool default_compression<db::DCoord> ()
|
|||
* hull and holes respectively.
|
||||
*/
|
||||
|
||||
// NOTE: we do explicit instantiation, so the exposure is declared
|
||||
// as DB_PUBLIC - as if it wasn't a template
|
||||
template <class C>
|
||||
class DB_PUBLIC polygon_contour
|
||||
{
|
||||
|
|
@ -1364,7 +1366,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC polygon
|
||||
class DB_PUBLIC_TEMPLATE polygon
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
@ -2324,7 +2326,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC simple_polygon
|
||||
class DB_PUBLIC_TEMPLATE simple_polygon
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -1593,7 +1593,7 @@ public:
|
|||
* into the db::Object manager's undo/redo queue.
|
||||
*/
|
||||
template <class Sh, class StableTag>
|
||||
class DB_PUBLIC layer_op
|
||||
class DB_PUBLIC_TEMPLATE layer_op
|
||||
: public LayerOpBase
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC text
|
||||
class DB_PUBLIC_TEMPLATE text
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -42,10 +42,10 @@ namespace tl {
|
|||
|
||||
namespace db {
|
||||
|
||||
template <class I, class F, class R = double> class DB_PUBLIC complex_trans;
|
||||
template <class C> class DB_PUBLIC simple_trans;
|
||||
template <class C> class disp_trans;
|
||||
template <class C> class fixpoint_trans;
|
||||
template <class I, class F, class R = double> class DB_PUBLIC_TEMPLATE complex_trans;
|
||||
template <class C> class DB_PUBLIC_TEMPLATE simple_trans;
|
||||
template <class C> class DB_PUBLIC_TEMPLATE disp_trans;
|
||||
template <class C> class DB_PUBLIC_TEMPLATE fixpoint_trans;
|
||||
|
||||
/**
|
||||
* @brief Provide the default predicates and properties for transformations for the coordinate type C
|
||||
|
|
@ -1035,7 +1035,7 @@ operator<< (std::ostream &os, const disp_trans<C> &t)
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC simple_trans
|
||||
class DB_PUBLIC_TEMPLATE simple_trans
|
||||
: public fixpoint_trans<C>
|
||||
{
|
||||
public:
|
||||
|
|
@ -1439,7 +1439,7 @@ operator<< (std::ostream &os, const simple_trans<C> &t)
|
|||
* type used internally for representing the floating-point members).
|
||||
*/
|
||||
template <class I, class F, class R>
|
||||
class DB_PUBLIC complex_trans
|
||||
class DB_PUBLIC_TEMPLATE complex_trans
|
||||
{
|
||||
public:
|
||||
typedef I coord_type;
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ template <class C> class point;
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class DB_PUBLIC vector
|
||||
class DB_PUBLIC_TEMPLATE vector
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define DRC_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define DRC_LOCAL
|
||||
# define DRC_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define DRC_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define DRC_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define DRC_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define DRC_PUBLIC
|
||||
# define DRC_PUBLIC_TEMPLATE
|
||||
# define DRC_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define EDT_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define EDT_LOCAL
|
||||
# define EDT_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define EDT_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define EDT_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define EDT_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define EDT_PUBLIC
|
||||
# define EDT_PUBLIC_TEMPLATE
|
||||
# define EDT_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define EXT_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define EXT_LOCAL
|
||||
# define EXT_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define EXT_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define EXT_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define EXT_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define EXT_PUBLIC
|
||||
# define EXT_PUBLIC_TEMPLATE
|
||||
# define EXT_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ void _var_user_read_impl (T * /*a*/, tl::Extractor & /*ex*/, tl::false_tag)
|
|||
* @brief A VariantUserClassBase specialization that links GSI classes and Variant classes
|
||||
*/
|
||||
template <class T>
|
||||
class GSI_PUBLIC VariantUserClass
|
||||
class GSI_PUBLIC_TEMPLATE VariantUserClass
|
||||
: public tl::VariantUserClass<T>, private VariantUserClassImpl
|
||||
{
|
||||
public:
|
||||
|
|
@ -551,7 +551,7 @@ public:
|
|||
* the given methods.
|
||||
*/
|
||||
template <class X>
|
||||
class GSI_PUBLIC ClassExt
|
||||
class GSI_PUBLIC_TEMPLATE ClassExt
|
||||
: public ClassBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -708,7 +708,7 @@ struct adaptor_type_info<X, NoAdaptorTag>
|
|||
* or to call it's methods in some generic way.
|
||||
*/
|
||||
template <class X, class Adapted = NoAdaptorTag>
|
||||
class GSI_PUBLIC Class
|
||||
class GSI_PUBLIC_TEMPLATE Class
|
||||
: public ClassBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -937,7 +937,7 @@ public:
|
|||
* a subclass of the parent.
|
||||
*/
|
||||
template <class P, class X, class Adapted = NoAdaptorTag>
|
||||
class GSI_PUBLIC ChildClass
|
||||
class GSI_PUBLIC_TEMPLATE ChildClass
|
||||
: public Class<X, Adapted>
|
||||
{
|
||||
public:
|
||||
|
|
@ -970,7 +970,7 @@ public:
|
|||
* a subclass of the parent.
|
||||
*/
|
||||
template <class P, class X, class B, class Adapted = NoAdaptorTag>
|
||||
class GSI_PUBLIC ChildSubClass
|
||||
class GSI_PUBLIC_TEMPLATE ChildSubClass
|
||||
: public SubClass<X, B, Adapted>
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define GSI_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define GSI_LOCAL
|
||||
# define GSI_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define GSI_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define GSI_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define GSI_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define GSI_PUBLIC
|
||||
# define GSI_PUBLIC_TEMPLATE
|
||||
# define GSI_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ namespace gsi
|
|||
|
||||
class GSI_PUBLIC ClassBase;
|
||||
struct NoAdaptorTag;
|
||||
template <class T, class A> class GSI_PUBLIC Class;
|
||||
template <class T, class A> class GSI_PUBLIC_TEMPLATE Class;
|
||||
|
||||
/**
|
||||
* @brief The implementation delegate for the VariantUserClass<T>
|
||||
|
|
|
|||
|
|
@ -650,7 +650,7 @@ public:
|
|||
* @brief Generic string adaptor implementation
|
||||
*/
|
||||
template <class X>
|
||||
class GSI_PUBLIC StringAdaptorImpl
|
||||
class GSI_PUBLIC_TEMPLATE StringAdaptorImpl
|
||||
: public StringAdaptor
|
||||
{
|
||||
};
|
||||
|
|
@ -945,7 +945,7 @@ private:
|
|||
* @brief Specialization for const unsigned char *
|
||||
*/
|
||||
template <class CP>
|
||||
class GSI_PUBLIC StringAdaptorImplCCP
|
||||
class GSI_PUBLIC_TEMPLATE StringAdaptorImplCCP
|
||||
: public StringAdaptor
|
||||
{
|
||||
public:
|
||||
|
|
@ -1103,7 +1103,7 @@ public:
|
|||
* @brief Generic string adaptor implementation
|
||||
*/
|
||||
template <class X>
|
||||
class GSI_PUBLIC VariantAdaptorImpl
|
||||
class GSI_PUBLIC_TEMPLATE VariantAdaptorImpl
|
||||
: public VariantAdaptor
|
||||
{
|
||||
};
|
||||
|
|
@ -1359,7 +1359,7 @@ public:
|
|||
* @brief Implementation of the generic iterator adaptor for a specific container
|
||||
*/
|
||||
template <class Cont>
|
||||
class GSI_PUBLIC VectorAdaptorIteratorImpl
|
||||
class GSI_PUBLIC_TEMPLATE VectorAdaptorIteratorImpl
|
||||
: public VectorAdaptorIterator
|
||||
{
|
||||
public:
|
||||
|
|
@ -1434,7 +1434,7 @@ void push_vector (QSet<X> &v, const X &x)
|
|||
* @brief Implementation of the generic adaptor for a specific container
|
||||
*/
|
||||
template <class Cont>
|
||||
class GSI_PUBLIC VectorAdaptorImpl
|
||||
class GSI_PUBLIC_TEMPLATE VectorAdaptorImpl
|
||||
: public VectorAdaptor
|
||||
{
|
||||
public:
|
||||
|
|
@ -1709,7 +1709,7 @@ struct map_access<QHash<X, Y> >
|
|||
* @brief Implementation of the generic iterator adaptor for a specific container
|
||||
*/
|
||||
template <class Cont>
|
||||
class GSI_PUBLIC MapAdaptorIteratorImpl
|
||||
class GSI_PUBLIC_TEMPLATE MapAdaptorIteratorImpl
|
||||
: public MapAdaptorIterator
|
||||
{
|
||||
public:
|
||||
|
|
@ -1745,7 +1745,7 @@ private:
|
|||
* @brief Implementation of the generic adaptor for a specific container
|
||||
*/
|
||||
template <class Cont>
|
||||
class GSI_PUBLIC MapAdaptorImpl
|
||||
class GSI_PUBLIC_TEMPLATE MapAdaptorImpl
|
||||
: public MapAdaptor
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -62,12 +62,12 @@ class GSI_PUBLIC StringAdaptor;
|
|||
class GSI_PUBLIC VariantAdaptor;
|
||||
class GSI_PUBLIC ClassBase;
|
||||
struct NoAdaptorTag;
|
||||
template <class X, class A> class GSI_PUBLIC Class;
|
||||
template <class X, class A> class GSI_PUBLIC_TEMPLATE Class;
|
||||
template <class X> struct ClassTag;
|
||||
template <class I> class GSI_PUBLIC IterAdaptor;
|
||||
template <class V> class GSI_PUBLIC IterPtrAdaptor;
|
||||
template <class V> class GSI_PUBLIC ConstIterPtrAdaptor;
|
||||
template <class I> class GSI_PUBLIC FreeIterAdaptor;
|
||||
template <class I> class GSI_PUBLIC_TEMPLATE IterAdaptor;
|
||||
template <class V> class GSI_PUBLIC_TEMPLATE IterPtrAdaptor;
|
||||
template <class V> class GSI_PUBLIC_TEMPLATE ConstIterPtrAdaptor;
|
||||
template <class I> class GSI_PUBLIC_TEMPLATE FreeIterAdaptor;
|
||||
template <class X> const ClassBase *cls_decl ();
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define IMG_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define IMG_LOCAL
|
||||
# define IMG_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define IMG_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define IMG_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define IMG_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define IMG_PUBLIC
|
||||
# define IMG_PUBLIC_TEMPLATE
|
||||
# define IMG_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define LAY_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define LAY_LOCAL
|
||||
# define LAY_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define LAY_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define LAY_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define LAY_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define LAY_PUBLIC
|
||||
# define LAY_PUBLIC_TEMPLATE
|
||||
# define LAY_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define LAYBASIC_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define LAYBASIC_LOCAL
|
||||
# define LAYBASIC_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define LAYBASIC_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define LAYBASIC_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define LAYBASIC_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define LAYBASIC_PUBLIC
|
||||
# define LAYBASIC_PUBLIC_TEMPLATE
|
||||
# define LAYBASIC_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define LIB_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define LIB_LOCAL
|
||||
# define LIB_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define LIB_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define LIB_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define LIB_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define LIB_PUBLIC
|
||||
# define LIB_PUBLIC_TEMPLATE
|
||||
# define LIB_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define LYM_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define LYM_LOCAL
|
||||
# define LYM_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define LYM_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define LYM_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define LYM_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define LYM_PUBLIC
|
||||
# define LYM_PUBLIC_TEMPLATE
|
||||
# define LYM_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define PYA_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define PYA_LOCAL
|
||||
# define PYA_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define PYA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define PYA_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define PYA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define PYA_PUBLIC
|
||||
# define PYA_PUBLIC_TEMPLATE
|
||||
# define PYA_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define PYA_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define PYA_LOCAL
|
||||
# define PYA_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define PYA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define PYA_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define PYA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define PYA_PUBLIC
|
||||
# define PYA_PUBLIC_TEMPLATE
|
||||
# define PYA_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define RBA_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define RBA_LOCAL
|
||||
# define RBA_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define RBA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define RBA_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define RBA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define RBA_PUBLIC
|
||||
# define RBA_PUBLIC_TEMPLATE
|
||||
# define RBA_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define RBA_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define RBA_LOCAL
|
||||
# define RBA_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define RBA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define RBA_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define RBA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define RBA_PUBLIC
|
||||
# define RBA_PUBLIC_TEMPLATE
|
||||
# define RBA_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define RDB_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define RDB_LOCAL
|
||||
# define RDB_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define RDB_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define RDB_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define RDB_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define RDB_PUBLIC
|
||||
# define RDB_PUBLIC_TEMPLATE
|
||||
# define RDB_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -32,14 +32,17 @@
|
|||
# define TL_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define TL_LOCAL
|
||||
# define TL_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define TL_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define TL_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define TL_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define TL_PUBLIC
|
||||
# define TL_PUBLIC_TEMPLATE
|
||||
# define TL_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
@ -56,14 +59,17 @@
|
|||
# define GSI_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define GSI_LOCAL
|
||||
# define GSI_PUBLIC_TEMPLATE
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define GSI_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define GSI_PUBLIC_TEMPLATE __attribute__ ((visibility ("default")))
|
||||
# define GSI_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define GSI_PUBLIC
|
||||
# define GSI_PUBLIC_TEMPLATE
|
||||
# define GSI_LOCAL
|
||||
# endif
|
||||
|
||||
|
|
|
|||
|
|
@ -114,12 +114,12 @@ void handle_event_exception (std::exception &ex);
|
|||
* @endcode
|
||||
*/
|
||||
|
||||
template <class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC event_function_base;
|
||||
template <class T, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC event_function;
|
||||
template <class T, class D, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC event_function_with_data;
|
||||
template <class T, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC generic_event_function;
|
||||
template <class T, class D, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC generic_event_function_with_data;
|
||||
template <class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC event;
|
||||
template <class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC_TEMPLATE event_function_base;
|
||||
template <class T, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC_TEMPLATE event_function;
|
||||
template <class T, class D, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC_TEMPLATE event_function_with_data;
|
||||
template <class T, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC_TEMPLATE generic_event_function;
|
||||
template <class T, class D, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC_TEMPLATE generic_event_function_with_data;
|
||||
template <class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class TL_PUBLIC_TEMPLATE event;
|
||||
typedef event<> Event;
|
||||
|
||||
#define _COUNT 0
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#endif
|
||||
|
||||
template <_TMPLARGS>
|
||||
class TL_PUBLIC event_function_base<_TMPLARGLISTP>
|
||||
class TL_PUBLIC_TEMPLATE event_function_base<_TMPLARGLISTP>
|
||||
: public tl::Object
|
||||
{
|
||||
public:
|
||||
|
|
@ -42,7 +42,7 @@ public:
|
|||
};
|
||||
|
||||
template <_JOIN(class T, _TMPLARGS)>
|
||||
class TL_PUBLIC event_function<T, _TMPLARGLISTP>
|
||||
class TL_PUBLIC_TEMPLATE event_function<T, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -71,7 +71,7 @@ private:
|
|||
};
|
||||
|
||||
template <class T, _JOIN(class D, _TMPLARGS)>
|
||||
class TL_PUBLIC event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
class TL_PUBLIC_TEMPLATE event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -101,7 +101,7 @@ private:
|
|||
};
|
||||
|
||||
template <_JOIN(class T, _TMPLARGS)>
|
||||
class TL_PUBLIC generic_event_function<T, _TMPLARGLISTP>
|
||||
class TL_PUBLIC_TEMPLATE generic_event_function<T, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -131,7 +131,7 @@ private:
|
|||
};
|
||||
|
||||
template <class T, _JOIN(class D, _TMPLARGS)>
|
||||
class TL_PUBLIC generic_event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
class TL_PUBLIC_TEMPLATE generic_event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -162,7 +162,7 @@ private:
|
|||
};
|
||||
|
||||
template <_TMPLARGS>
|
||||
class TL_PUBLIC event<_TMPLARGLISTP>
|
||||
class TL_PUBLIC_TEMPLATE event<_TMPLARGLISTP>
|
||||
{
|
||||
public:
|
||||
typedef event_function_base<_TMPLARGLISTP> func;
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ private:
|
|||
* This class represents a weak or shared pointer for the given type T.
|
||||
*/
|
||||
template <class T, bool Shared>
|
||||
class TL_PUBLIC weak_or_shared_ptr
|
||||
class TL_PUBLIC_TEMPLATE weak_or_shared_ptr
|
||||
: public WeakOrSharedPtr
|
||||
{
|
||||
public:
|
||||
|
|
@ -376,7 +376,7 @@ public:
|
|||
* See description of tl::Object for details.
|
||||
*/
|
||||
template <class T>
|
||||
class TL_PUBLIC weak_ptr
|
||||
class TL_PUBLIC_TEMPLATE weak_ptr
|
||||
: public weak_or_shared_ptr<T, false>
|
||||
{
|
||||
public:
|
||||
|
|
@ -404,7 +404,7 @@ public:
|
|||
* See description of tl::Object for details.
|
||||
*/
|
||||
template <class T>
|
||||
class TL_PUBLIC shared_ptr
|
||||
class TL_PUBLIC_TEMPLATE shared_ptr
|
||||
: public weak_or_shared_ptr<T, true>
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ namespace gsi
|
|||
{
|
||||
class GSI_PUBLIC ClassBase;
|
||||
struct NoAdaptorTag;
|
||||
template <class T, class A> class GSI_PUBLIC Class;
|
||||
template <class T, class A> class GSI_PUBLIC_TEMPLATE Class;
|
||||
template <class X> const ClassBase *cls_decl ();
|
||||
}
|
||||
|
||||
|
|
@ -102,7 +102,7 @@ protected:
|
|||
* We will employ RTTI to identify a type through that base class.
|
||||
*/
|
||||
template <class T>
|
||||
class TL_PUBLIC VariantUserClass
|
||||
class TL_PUBLIC_TEMPLATE VariantUserClass
|
||||
: public VariantUserClassBase
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ public:
|
|||
*/
|
||||
|
||||
template <class Obj>
|
||||
class TL_PUBLIC XMLReaderProxy
|
||||
class TL_PUBLIC_TEMPLATE XMLReaderProxy
|
||||
: public XMLReaderProxyBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -714,7 +714,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class Obj, class Parent, class Read, class Write>
|
||||
class TL_PUBLIC XMLElement
|
||||
class TL_PUBLIC_TEMPLATE XMLElement
|
||||
: public XMLElementBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -819,7 +819,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class Obj, class Parent, class Read, class Write>
|
||||
class TL_PUBLIC XMLElementWithParentRef
|
||||
class TL_PUBLIC_TEMPLATE XMLElementWithParentRef
|
||||
: public XMLElementBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -933,7 +933,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class Value, class Parent, class Read, class Write, class Converter>
|
||||
class TL_PUBLIC XMLMember
|
||||
class TL_PUBLIC_TEMPLATE XMLMember
|
||||
: public XMLElementBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -1024,7 +1024,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class Value, class Parent, class Write, class Converter>
|
||||
class TL_PUBLIC XMLWildcardMember
|
||||
class TL_PUBLIC_TEMPLATE XMLWildcardMember
|
||||
: public XMLElementBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -1092,7 +1092,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class Obj>
|
||||
class TL_PUBLIC XMLStruct
|
||||
class TL_PUBLIC_TEMPLATE XMLStruct
|
||||
: public XMLElementBase
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
Loading…
Reference in New Issue