mirror of https://github.com/KLayout/klayout.git
Solved the clang/MacOS startup failure and menu issue
1.) Startup issue: This is solved by making sure templates with virtual functions are made visible in the DSO. This way, dynamic_cast is possible across DSO's. Scary: clang/MacOS wants the forward declarations be declared visible as well. 2.) Menu issue: The best solution is to have only one QMenuBar. The navigator now gets a synthetic menu bar composed of QToolButtons.
This commit is contained in:
parent
47f471b27c
commit
063811edc4
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define ANT_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define ANT_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define BD_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define BD_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ class ArrayRepository;
|
|||
*/
|
||||
|
||||
template <class C, class R = C>
|
||||
struct box
|
||||
struct DB_PUBLIC box
|
||||
{
|
||||
typedef C coord_type;
|
||||
typedef box<C, R> box_type;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define DB_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define DB_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ template <class C> class generic_repository;
|
|||
class ArrayRepository;
|
||||
|
||||
template <class C>
|
||||
class edge
|
||||
class DB_PUBLIC edge
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
namespace db {
|
||||
|
||||
template <class C>
|
||||
class edge_pair
|
||||
class DB_PUBLIC edge_pair
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ template <class C> class vector;
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class point
|
||||
class DB_PUBLIC point
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -1364,7 +1364,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class polygon
|
||||
class DB_PUBLIC polygon
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
@ -2324,7 +2324,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class simple_polygon
|
||||
class DB_PUBLIC simple_polygon
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -222,7 +222,7 @@ private:
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class text
|
||||
class DB_PUBLIC text
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ namespace tl {
|
|||
|
||||
namespace db {
|
||||
|
||||
template <class I, class F, class R = double> class complex_trans;
|
||||
template <class C> class simple_trans;
|
||||
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;
|
||||
|
||||
|
|
@ -1035,7 +1035,7 @@ operator<< (std::ostream &os, const disp_trans<C> &t)
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class simple_trans
|
||||
class DB_PUBLIC 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 complex_trans
|
||||
class DB_PUBLIC complex_trans
|
||||
{
|
||||
public:
|
||||
typedef I coord_type;
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ template <class C> class point;
|
|||
*/
|
||||
|
||||
template <class C>
|
||||
class vector
|
||||
class DB_PUBLIC vector
|
||||
{
|
||||
public:
|
||||
typedef C coord_type;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define DRC_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define DRC_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define EDT_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define EDT_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define EXT_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define EXT_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -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 VariantUserClass
|
||||
class GSI_PUBLIC VariantUserClass
|
||||
: public tl::VariantUserClass<T>, private VariantUserClassImpl
|
||||
{
|
||||
public:
|
||||
|
|
@ -551,7 +551,7 @@ public:
|
|||
* the given methods.
|
||||
*/
|
||||
template <class X>
|
||||
class ClassExt
|
||||
class GSI_PUBLIC 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 Class
|
||||
class GSI_PUBLIC Class
|
||||
: public ClassBase
|
||||
{
|
||||
public:
|
||||
|
|
@ -937,7 +937,7 @@ public:
|
|||
* a subclass of the parent.
|
||||
*/
|
||||
template <class P, class X, class Adapted = NoAdaptorTag>
|
||||
class ChildClass
|
||||
class GSI_PUBLIC 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 ChildSubClass
|
||||
class GSI_PUBLIC ChildSubClass
|
||||
: public SubClass<X, B, Adapted>
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define GSI_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define GSI_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -34,9 +34,9 @@
|
|||
namespace gsi
|
||||
{
|
||||
|
||||
class ClassBase;
|
||||
class GSI_PUBLIC ClassBase;
|
||||
struct NoAdaptorTag;
|
||||
template <class T, class A> class Class;
|
||||
template <class T, class A> class GSI_PUBLIC Class;
|
||||
|
||||
/**
|
||||
* @brief The implementation delegate for the VariantUserClass<T>
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
namespace gsi
|
||||
{
|
||||
|
||||
class ClassBase;
|
||||
class GSI_PUBLIC ClassBase;
|
||||
|
||||
/**
|
||||
* @brief Definition of the client indexes
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
namespace gsi
|
||||
{
|
||||
|
||||
class ClassBase;
|
||||
class GSI_PUBLIC ClassBase;
|
||||
|
||||
/**
|
||||
* @brief Implements an object holder
|
||||
|
|
|
|||
|
|
@ -55,19 +55,19 @@ namespace gsi
|
|||
// ---------------------------------------------------------------------------------
|
||||
// Type system of GSI
|
||||
|
||||
class SerialArgs;
|
||||
class VectorAdaptor;
|
||||
class MapAdaptor;
|
||||
class StringAdaptor;
|
||||
class VariantAdaptor;
|
||||
class ClassBase;
|
||||
class GSI_PUBLIC SerialArgs;
|
||||
class GSI_PUBLIC VectorAdaptor;
|
||||
class GSI_PUBLIC MapAdaptor;
|
||||
class GSI_PUBLIC StringAdaptor;
|
||||
class GSI_PUBLIC VariantAdaptor;
|
||||
class GSI_PUBLIC ClassBase;
|
||||
struct NoAdaptorTag;
|
||||
template <class X, class A> class Class;
|
||||
template <class X, class A> class GSI_PUBLIC Class;
|
||||
template <class X> struct ClassTag;
|
||||
template <class I> class IterAdaptor;
|
||||
template <class V> class IterPtrAdaptor;
|
||||
template <class V> class ConstIterPtrAdaptor;
|
||||
template <class I> class FreeIterAdaptor;
|
||||
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 X> const ClassBase *cls_decl ();
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define GSIQT_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define GSIQT_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define IMG_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define IMG_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define LAY_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define LAY_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ typedef void (*klp_init_func_t) (void (**autorun) (), void (**autorun_early) (),
|
|||
# if defined _WIN32 || defined __CYGWIN__
|
||||
# define KLP_PUBLIC __declspec(dllexport)
|
||||
# else
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define KLP_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# else
|
||||
# define KLP_PUBLIC
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
#include "imgService.h"
|
||||
|
||||
#include <QVBoxLayout>
|
||||
#include <QMenuBar>
|
||||
#include <QFrame>
|
||||
#include <QLabel>
|
||||
|
||||
namespace lay
|
||||
|
|
@ -443,7 +443,8 @@ Navigator::Navigator (MainWindow *main_window)
|
|||
{
|
||||
setObjectName (QString::fromUtf8 ("navigator"));
|
||||
|
||||
mp_menu_bar = new QMenuBar (this);
|
||||
mp_menu_bar = new QFrame (this);
|
||||
mp_menu_bar->setFrameShape (QFrame::NoFrame);
|
||||
mp_menu_bar->setSizePolicy (QSizePolicy::Expanding, QSizePolicy::Preferred);
|
||||
|
||||
mp_view = new LayoutView (0, false, mp_main_window, this, "navigator", LayoutView::LV_Naked + LayoutView::LV_NoZoom + LayoutView::LV_NoServices + LayoutView::LV_NoGrid);
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
|
||||
class QCloseEvent;
|
||||
class QShowEvent;
|
||||
class QMenuBar;
|
||||
class QFrame;
|
||||
class QLabel;
|
||||
|
||||
namespace lay
|
||||
|
|
@ -102,7 +102,7 @@ private:
|
|||
MainWindow *mp_main_window;
|
||||
LayoutView *mp_view;
|
||||
QLabel *mp_placeholder_label;
|
||||
QMenuBar *mp_menu_bar;
|
||||
QFrame *mp_menu_bar;
|
||||
LayoutView *mp_source_view;
|
||||
NavigatorService *mp_service;
|
||||
tl::DeferredMethod<Navigator> m_do_view_changed;
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#include <QToolButton>
|
||||
#include <QApplication>
|
||||
#include <QMessageBox>
|
||||
#include <QHBoxLayout>
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
|
|
@ -903,31 +904,61 @@ AbstractMenu::make_exclusive_group (const std::string &name)
|
|||
}
|
||||
|
||||
void
|
||||
AbstractMenu::build_detached (const std::string &name, QMenuBar *mbar)
|
||||
AbstractMenu::build_detached (const std::string &name, QFrame *mbar)
|
||||
{
|
||||
// Clean up the menu bar before rebuilding
|
||||
if (mbar->layout ()) {
|
||||
delete mbar->layout ();
|
||||
}
|
||||
QObjectList children = mbar->children ();
|
||||
for (QObjectList::const_iterator c = children.begin (); c != children.end (); ++c) {
|
||||
if (dynamic_cast<QToolButton *> (*c)) {
|
||||
delete *c;
|
||||
}
|
||||
}
|
||||
|
||||
QHBoxLayout *menu_layout = new QHBoxLayout (mbar);
|
||||
menu_layout->setMargin (0);
|
||||
mbar->setLayout (menu_layout);
|
||||
|
||||
AbstractMenuItem *item = find_item_exact ("@@" + name);
|
||||
tl_assert (item != 0);
|
||||
|
||||
mbar->clear ();
|
||||
|
||||
for (std::list<AbstractMenuItem>::iterator c = item->children.begin (); c != item->children.end (); ++c) {
|
||||
|
||||
if (c->has_submenu ()) {
|
||||
|
||||
QToolButton *menu_button = new QToolButton (mbar);
|
||||
menu_layout->addWidget (menu_button);
|
||||
menu_button->setAutoRaise (true);
|
||||
menu_button->setPopupMode (QToolButton::MenuButtonPopup);
|
||||
menu_button->setText (tl::to_qstring (c->action ().get_title ()));
|
||||
|
||||
if (c->menu () == 0) {
|
||||
c->set_menu (mbar->addMenu (tl::to_qstring (c->action ().get_title ())));
|
||||
c->set_action (Action (new ActionHandle (c->menu ()->menuAction (), false)), true);
|
||||
QMenu *menu = new QMenu (mbar);
|
||||
menu_button->setMenu (menu);
|
||||
c->set_menu (menu);
|
||||
c->set_action (Action (new ActionHandle (menu->menuAction (), false)), true);
|
||||
} else {
|
||||
mbar->addMenu (c->menu ());
|
||||
menu_button->setMenu (c->menu ());
|
||||
}
|
||||
|
||||
build (c->menu (), c->children);
|
||||
|
||||
} else {
|
||||
mbar->addAction (c->action ().qaction ());
|
||||
|
||||
QAction *action = c->action ().qaction ();
|
||||
|
||||
QToolButton *menu_button = new QToolButton (mbar);
|
||||
menu_layout->addWidget (menu_button);
|
||||
menu_button->setAutoRaise (true);
|
||||
menu_button->setDefaultAction (action);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
menu_layout->addStretch (1);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -1521,4 +1552,3 @@ AbstractMenu::collect_group (std::vector<std::string> &grp, const std::string &n
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
#include "tlObject.h"
|
||||
#include "laybasicCommon.h"
|
||||
|
||||
class QFrame;
|
||||
class QMenuBar;
|
||||
class QToolBar;
|
||||
class QMenu;
|
||||
|
|
@ -681,7 +682,7 @@ public:
|
|||
* @param name The name of the detached menu, without the "@"
|
||||
* @param mbar The menu bar into which to build the menu
|
||||
*/
|
||||
void build_detached (const std::string &name, QMenuBar *mbar);
|
||||
void build_detached (const std::string &name, QFrame *mbar);
|
||||
|
||||
/**
|
||||
* @brief Get the reference to a QMenu object
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define LAYBASIC_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define LAYBASIC_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define LYM_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define LYM_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define PYA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define PYA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@
|
|||
|
||||
namespace gsi
|
||||
{
|
||||
class ClassBase;
|
||||
class ArgType;
|
||||
class GSI_PUBLIC ClassBase;
|
||||
class GSI_PUBLIC ArgType;
|
||||
}
|
||||
|
||||
namespace pya
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define PYA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define PYA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define RBA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define RBA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define RBA_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define RBA_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define RDB_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define RDB_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@
|
|||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define TL_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define TL_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
|
|
@ -45,4 +45,28 @@
|
|||
|
||||
# endif
|
||||
|
||||
// NOTE: this is required because we have some forward declarations to
|
||||
// gsi::Class and gsi::ClassBase in tlVariant.h.
|
||||
// TODO: there should not be any dependency of tl on gsi.
|
||||
# if defined _WIN32 || defined __CYGWIN__
|
||||
|
||||
# ifdef MAKE_GSI_LIBRARY
|
||||
# define GSI_PUBLIC __declspec(dllexport)
|
||||
# else
|
||||
# define GSI_PUBLIC __declspec(dllimport)
|
||||
# endif
|
||||
# define GSI_LOCAL
|
||||
|
||||
# else
|
||||
|
||||
# if __GNUC__ >= 4 || defined(__clang__)
|
||||
# define GSI_PUBLIC __attribute__ ((visibility ("default")))
|
||||
# define GSI_LOCAL __attribute__ ((visibility ("hidden")))
|
||||
# else
|
||||
# define GSI_PUBLIC
|
||||
# define GSI_LOCAL
|
||||
# endif
|
||||
|
||||
# endif
|
||||
|
||||
#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 event_function_base;
|
||||
template <class T, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class event_function;
|
||||
template <class T, class D, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class event_function_with_data;
|
||||
template <class T, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class generic_event_function;
|
||||
template <class T, class D, class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class generic_event_function_with_data;
|
||||
template <class A1 = void, class A2 = void, class A3 = void, class A4 = void, class A5 = void> class event;
|
||||
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;
|
||||
typedef event<> Event;
|
||||
|
||||
#define _COUNT 0
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#endif
|
||||
|
||||
template <_TMPLARGS>
|
||||
class event_function_base<_TMPLARGLISTP>
|
||||
class TL_PUBLIC event_function_base<_TMPLARGLISTP>
|
||||
: public tl::Object
|
||||
{
|
||||
public:
|
||||
|
|
@ -42,7 +42,7 @@ public:
|
|||
};
|
||||
|
||||
template <_JOIN(class T, _TMPLARGS)>
|
||||
class event_function<T, _TMPLARGLISTP>
|
||||
class TL_PUBLIC event_function<T, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -71,7 +71,7 @@ private:
|
|||
};
|
||||
|
||||
template <class T, _JOIN(class D, _TMPLARGS)>
|
||||
class event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
class TL_PUBLIC event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -101,7 +101,7 @@ private:
|
|||
};
|
||||
|
||||
template <_JOIN(class T, _TMPLARGS)>
|
||||
class generic_event_function<T, _TMPLARGLISTP>
|
||||
class TL_PUBLIC generic_event_function<T, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -131,7 +131,7 @@ private:
|
|||
};
|
||||
|
||||
template <class T, _JOIN(class D, _TMPLARGS)>
|
||||
class generic_event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
class TL_PUBLIC generic_event_function_with_data<T, D, _TMPLARGLISTP>
|
||||
: public event_function_base<_TMPLARGLIST>
|
||||
{
|
||||
public:
|
||||
|
|
@ -162,7 +162,7 @@ private:
|
|||
};
|
||||
|
||||
template <_TMPLARGS>
|
||||
class event<_TMPLARGLISTP>
|
||||
class TL_PUBLIC 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 weak_or_shared_ptr
|
||||
class TL_PUBLIC weak_or_shared_ptr
|
||||
: public WeakOrSharedPtr
|
||||
{
|
||||
public:
|
||||
|
|
@ -376,7 +376,7 @@ public:
|
|||
* See description of tl::Object for details.
|
||||
*/
|
||||
template <class T>
|
||||
class weak_ptr
|
||||
class TL_PUBLIC 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 shared_ptr
|
||||
class TL_PUBLIC shared_ptr
|
||||
: public weak_or_shared_ptr<T, true>
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@
|
|||
|
||||
namespace gsi
|
||||
{
|
||||
class ClassBase;
|
||||
class GSI_PUBLIC ClassBase;
|
||||
struct NoAdaptorTag;
|
||||
template <class T, class A> class Class;
|
||||
template <class T, class A> class GSI_PUBLIC 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 VariantUserClass
|
||||
class TL_PUBLIC VariantUserClass
|
||||
: public VariantUserClassBase
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
Loading…
Reference in New Issue