コード例 #1
0
TEST_F(ContextMemberTest, ComplexResetCase) {
  std::weak_ptr<CoreContext> ctxtWeak;
  std::weak_ptr<RefersToTweedleDee> deeWeak;
  std::weak_ptr<RefersToTweedleDum> dumWeak;

  {
    // Set up the cycle:
    AutoCreateContext ctxt;
    ctxtWeak = ctxt;
    ctxt->Inject<RefersToTweedleDee>();
    ctxt->Inject<RefersToTweedleDum>();

    // Now try to reset the cycle:
    Autowired<RefersToTweedleDee> dee(ctxt);
    Autowired<RefersToTweedleDum> dum(ctxt);
    dee->td.reset();

    // Get weak pointers so we can verify that everything cleaned up
    deeWeak = dee;
    dumWeak = dum;
  }

  // Context should have gone away by now
  ASSERT_TRUE(ctxtWeak.expired()) << "Context was leaked even after a local cycle was reset";
  ASSERT_TRUE(dumWeak.expired()) << "Leak detected of a member that was explicitly released";
  ASSERT_TRUE(deeWeak.expired()) << "Leak detected of a member that was not explicitly released";
}
コード例 #2
0
ファイル: main.c プロジェクト: Alecs94/DSA-lab
int main()
{
    int x;
    char s[20];
    FILE *g;
    g=fopen("input.dat","r");
    while (fscanf(g,"%s",&s)==1)
    {


        if (strcmp("AF",s)==0)
        {
            fscanf(g,"%d",&x);
            adf(x);
        }
        else if (strcmp("AL",s)==0)
        {
            fscanf(g,"%d",&x);
            adl(x);
        }
        else if (strcmp("DF",s)==0) def();
        else if (strcmp("DL",s)==0) del();
        else if (strcmp("DE",s)==0) {fscanf(g,"%d",&x); dee(x);}
        else if (strcmp("PRINT_ALL",s)==0) print_alll();
        else if (strcmp("PRINT_F",s)==0)
        {
            fscanf(g,"%d",&x);
            print_fi(x);
        }
        else if (strcmp("PRINT_L",s)==0)
        {
            fscanf(g,"%d",&x);
            print_la(x);
        }
        else if (strcmp("DOOM_THE_LIST",s)==0) doom_the_listt();
    }

return 0;
}
コード例 #3
0
ファイル: qdnd_qws.cpp プロジェクト: tsuibin/emscripten-qt
bool QDragManager::eventFilter(QObject *o, QEvent *e)
{
    if (beingCancelled) {
        if (e->type() == QEvent::KeyRelease && static_cast<QKeyEvent*>(e)->key() == Qt::Key_Escape) {
            qApp->removeEventFilter(this);
            Q_ASSERT(object == 0);
            beingCancelled = false;
#ifndef QT_NO_LOCALEVENTLOOP
            eventLoop->exit();
#else
            asyncDragFinished();
#endif
            return true; // block the key release
        }
        return false;
    }



    if (!o->isWidgetType())
        return false;

    switch(e->type()) {
    case QEvent::ShortcutOverride:
        // prevent accelerators from firing while dragging
        e->accept();
        return true;

    case QEvent::KeyPress:
    case QEvent::KeyRelease:
    {
        QKeyEvent *ke = ((QKeyEvent*)e);
        if (ke->key() == Qt::Key_Escape && e->type() == QEvent::KeyPress) {
            cancel();
            qApp->removeEventFilter(this);
            beingCancelled = false;
#ifndef QT_NO_LOCALEVENTLOOP
            eventLoop->exit();
#else
            asyncDragFinished();
#endif
        } else {
            updateCursor();
        }
        return true; // Eat all key events
    }

    case QEvent::MouseButtonPress:
    case QEvent::MouseMove:
    {
        if (!object) { //#### this should not happen
            qWarning("QDragManager::eventFilter: No object");
            return true;
        }

        QDragManager *manager = QDragManager::self();
        QMimeData *dropData = manager->object ? manager->dragPrivate()->data : manager->dropData;
        if (manager->object)
            possible_actions =  manager->dragPrivate()->possible_actions;
        else
            possible_actions = Qt::IgnoreAction;

        QMouseEvent *me = (QMouseEvent *)e;
        if (me->buttons()) {
            Qt::DropAction prevAction = global_accepted_action;
            QWidget *cw = QApplication::widgetAt(me->globalPos());

            // Fix for when we move mouse on to the deco widget
            if (qt_qws_dnd_deco && cw == qt_qws_dnd_deco)
                cw = object->target();

            while (cw && !cw->acceptDrops() && !cw->isWindow())
                cw = cw->parentWidget();

            if (object->target() != cw) {
                if (object->target()) {
                    QDragLeaveEvent dle;
                    QApplication::sendEvent(object->target(), &dle);
                    willDrop = false;
                    global_accepted_action = Qt::IgnoreAction;
                    updateCursor();
                    restoreCursor = true;
                    object->d_func()->target = 0;
                }
                if (cw && cw->acceptDrops()) {
                    object->d_func()->target = cw;
                    QDragEnterEvent dee(cw->mapFromGlobal(me->globalPos()), possible_actions, dropData,
                                        me->buttons(), me->modifiers());
                    QApplication::sendEvent(object->target(), &dee);
                    willDrop = dee.isAccepted() && dee.dropAction() != Qt::IgnoreAction;
                    global_accepted_action = willDrop ? dee.dropAction() : Qt::IgnoreAction;
                    updateCursor();
                    restoreCursor = true;
                }
            } else if (cw) {
                QDragMoveEvent dme(cw->mapFromGlobal(me->globalPos()), possible_actions, dropData,
                                   me->buttons(), me->modifiers());
                if (global_accepted_action != Qt::IgnoreAction) {
                    dme.setDropAction(global_accepted_action);
                    dme.accept();
                }
                QApplication::sendEvent(cw, &dme);
                willDrop = dme.isAccepted();
                global_accepted_action = willDrop ? dme.dropAction() : Qt::IgnoreAction;
                updatePixmap();
                updateCursor();
            }
            if (global_accepted_action != prevAction)
                emitActionChanged(global_accepted_action);
        }
        return true; // Eat all mouse events
    }

    case QEvent::MouseButtonRelease:
    {
        qApp->removeEventFilter(this);
        if (restoreCursor) {
            willDrop = false;
#ifndef QT_NO_CURSOR
            QApplication::restoreOverrideCursor();
#endif
            restoreCursor = false;
        }
        if (object && object->target()) {
            QMouseEvent *me = (QMouseEvent *)e;

            QDragManager *manager = QDragManager::self();
            QMimeData *dropData = manager->object ? manager->dragPrivate()->data : manager->dropData;

            QDropEvent de(object->target()->mapFromGlobal(me->globalPos()), possible_actions, dropData,
                          me->buttons(), me->modifiers());
            QApplication::sendEvent(object->target(), &de);
            if (de.isAccepted())
                global_accepted_action = de.dropAction();
            else
                global_accepted_action = Qt::IgnoreAction;

            if (object)
                object->deleteLater();
            drag_object = object = 0;
        }
#ifndef QT_NO_LOCALEVENTLOOP
        eventLoop->exit();
#else
        asyncDragFinished();
#endif
        return true; // Eat all mouse events
    }

    default:
        break;
    }

    return false;
}
コード例 #4
0
ファイル: qdnd_qws.cpp プロジェクト: Miguel-J/eneboo-core
bool QDragManager::eventFilter( QObject *o, QEvent *e )
{
    if ( !o->isWidgetType() )
        return FALSE;

    switch( e->type() ) {

	case QEvent::KeyPress:
	case QEvent::KeyRelease:
	{
	    QKeyEvent *ke = ((QKeyEvent*)e);
	    if ( ke->key() == Key_Escape && e->type() == QEvent::KeyPress ) {
		cancel();
		qApp->removeEventFilter( this );
		dragSource = 0;
	    } else {
		updateMode(ke->stateAfter());
		updateCursor();
	    }
	    return TRUE; // Eat all key events
	}

        case QEvent::MouseButtonPress:
        case QEvent::MouseMove:
        {
            QMouseEvent *me = (QMouseEvent *)e;
            if ( me->state() & ( QMouseEvent::LeftButton | QMouseEvent::MidButton | QMouseEvent::RightButton ) ) {

                QWidget *cw = QApplication::widgetAt( me->globalPos(), TRUE );

		// Fix for when we move mouse on to the deco widget
		if ( qt_qws_dnd_deco && cw == qt_qws_dnd_deco ) 
		    cw = dropWidget;

                if ( dropWidget != cw ) {
                    if ( dropWidget ) {
                        QDragLeaveEvent dle;
                        QApplication::sendEvent( dropWidget, &dle );
			willDrop = FALSE;
			updateCursor();
                        restoreCursor = TRUE;
                        dropWidget = NULL;
                    }
                    if ( cw && cw->acceptDrops() ) {
                        dropWidget = cw;
                        QDragEnterEvent dee( me->pos() );
                        QApplication::sendEvent( dropWidget, &dee );
			willDrop = dee.isAccepted();
			updateCursor();
                        restoreCursor = TRUE;
                    }
                } else if ( cw ) {
                    QDragMoveEvent dme( me->pos() );
                    QApplication::sendEvent( cw, &dme );
		    updatePixmap();
                }
            }
	    return TRUE; // Eat all mouse events
        }

        case QEvent::MouseButtonRelease:
        {
	    qApp->removeEventFilter( this );
	    if ( qt_qws_dnd_deco )
	        delete qt_qws_dnd_deco;
	    qt_qws_dnd_deco = 0;
            if ( restoreCursor ) {
		willDrop = FALSE;
                myRestoreOverrideCursor();
                restoreCursor = FALSE;
            }
            if ( dropWidget ) {
                QMouseEvent *me = (QMouseEvent *)e;
                QDropEvent de( me->pos() );
		QApplication::sendEvent( dropWidget, &de );
                dropWidget = NULL;
            }
	    return TRUE; // Eat all mouse events
        }

        default:
             break;
    }

    return FALSE;
}
コード例 #5
0
bool QDragManager::eventFilter(QObject *o, QEvent *e)
{
 if (beingCancelled) {
        return false;
    }
    if (!o->isWidgetType())
        return false;

    switch(e->type()) {
        case QEvent::MouseButtonPress:
        {
        }
        case QEvent::MouseMove:
        {
            if (!object) { //#### this should not happen
                qWarning("QDragManager::eventFilter: No object");
                return true;
            }
            QDragManager *manager = QDragManager::self();
            QMimeData *dropData = manager->object ? manager->dragPrivate()->data : manager->dropData;
            if (manager->object)
                possible_actions =  manager->dragPrivate()->possible_actions;
            else
                possible_actions = Qt::IgnoreAction;

            QMouseEvent *me = (QMouseEvent *)e;

            if (me->buttons()) {
                Qt::DropAction prevAction = global_accepted_action;
                QWidget *cw = QApplication::widgetAt(me->globalPos());
                // map the Coords relative to the window.
                if (!cw)
                    return true;

                while (cw && !cw->acceptDrops() && !cw->isWindow())
                    cw = cw->parentWidget();

                bool oldWillDrop = willDrop;
                if (object->target() != cw) {
                    if (object->target()) {
                        QDragLeaveEvent dle;
                        QApplication::sendEvent(object->target(), &dle);
                        willDrop = false;
                        global_accepted_action = Qt::IgnoreAction;
                        if (oldWillDrop != willDrop)
                            updateCursor();
                        object->d_func()->target = 0;
                    }
                    if (cw && cw->acceptDrops()) {
                        object->d_func()->target = cw;
                        QDragEnterEvent dee(cw->mapFromGlobal(me->globalPos()), possible_actions, dropData,
                                            me->buttons(), me->modifiers());
                        QApplication::sendEvent(object->target(), &dee);
                        willDrop = dee.isAccepted() && dee.dropAction() != Qt::IgnoreAction;
                        global_accepted_action = willDrop ? dee.dropAction() : Qt::IgnoreAction;
                        if (oldWillDrop != willDrop)
                            updateCursor();
                    }
                } else if (cw) {
                    QDragMoveEvent dme(cw->mapFromGlobal(me->globalPos()), possible_actions, dropData,
                                       me->buttons(), me->modifiers());
                    if (global_accepted_action != Qt::IgnoreAction) {
                        dme.setDropAction(global_accepted_action);
                        dme.accept();
                    }
                    QApplication::sendEvent(cw, &dme);
                    willDrop = dme.isAccepted();
                    global_accepted_action = willDrop ? dme.dropAction() : Qt::IgnoreAction;
                    if (oldWillDrop != willDrop) {
                        updatePixmap();
                        updateCursor();
                    }
                }
                if (global_accepted_action != prevAction)
                    emitActionChanged(global_accepted_action);
            }
            return true; // Eat all mouse events
        }

        case QEvent::MouseButtonRelease:
        {
            qApp->removeEventFilter(this);
#ifndef QT_NO_CURSOR
            if (restoreCursor) {
                QApplication::restoreOverrideCursor();
                willDrop = false;
                restoreCursor = false;
            }
#endif
            if (object && object->target()) {

                QMouseEvent *me = (QMouseEvent *)e;

                QDragManager *manager = QDragManager::self();
                QMimeData *dropData = manager->object ? manager->dragPrivate()->data : manager->dropData;

                QDropEvent de(object->target()->mapFromGlobal(me->globalPos()), possible_actions, dropData,
                              me->buttons(), me->modifiers());
                QApplication::sendEvent(object->target(), &de);
                if (de.isAccepted())
                    global_accepted_action = de.dropAction();
                else
                    global_accepted_action = Qt::IgnoreAction;

                if (object)
                    object->deleteLater();
                drag_object = object = 0;
            }
            eventLoop->exit();
            return true; // Eat all mouse events
        }

        default:
             break;
    }
    return false;
}
コード例 #6
0
ファイル: easy.cpp プロジェクト: scketches/templates
void
test()
{
    {
        TypeList<int, int, std::string>::type tl;
        // ############## test length ##############
        static_assert(3 == TypeListLength<decltype(tl)>::value,
                      "TypeListLength failed!");

        // ############## test typelist to tuple ##############
        TypeListToTuple<decltype(tl)>::type tpl;
        static_assert(std::is_same<std::tuple<int, int, std::string>,
                                   decltype(tpl)>::value,
                      "TypeListToTuple failed!");
        // constructor should work...
        TypeListToTuple<decltype(tl)>::type blah{1, 2, "somethingisgoingon"};

        // ############## test tuple to typelist ##############
        TupleToTypeList<decltype(tpl)>::type tl2;
        static_assert(std::is_same<decltype(tl), decltype(tl2)>::value,
                      "TupleToTypeList failed!");
        // just to be sure...
        static_assert(3 == TypeListLength<decltype(tl2)>::value,
                      "TupleToTypeList failed!");

        // ############## test to a tuple one last time ##############
        TypeListToTuple<decltype(tl2)>::type tpl2;
        static_assert(std::is_same<decltype(tpl), decltype(tpl2)>::value,
                      "TypeListToTuple failed!");
        // just to be sure...
        static_assert(std::is_same<std::tuple<int, int, std::string>,
                                   decltype(tpl2)>::value,
                      "TypeListToTuple failed!");
        // constructor should work...
        TypeListToTuple<decltype(tl)>::type blahbar{1, 2, "somethingisgoingon"};
    }

    {
        // ############## test getting a type by name ##############
        Get<F::x, DTypes>::type exx;
        static_assert(std::is_same<int, decltype(exx)>::value,
                      "Get failed!");
        // assignment should work
        exx = 20;
        
        Get<F::z, DTypes>::type zee;
        static_assert(std::is_same<std::string, decltype(zee)>::value, "Get failed!");
        zee = "somestring";

        // ############## test getting multiple types by name ##############
        GetMany<TypeList<F::x, F::z>::type, DTypes>::type tl;
        // printType<decltype(tl)>();
        static_assert(std::is_same<TypeList<int, std::string>::type,
                                   decltype(tl)>::value,
                      "GetMany failed!");
    }

    {
        typedef TypeList<F::x, F::y, F::x>::type SimpleTypeList;
        // ############## test Haz ##############
        static_assert(true == Haz<F::x, SimpleTypeList>::value,
                      "Haz failed!");
        struct q;
        static_assert(false == Haz<q, SimpleTypeList>::value,
                      "Faz failed!");
    }

    {
        // ############## test MemberPairTypeList ##############
        MemberPairTypeList<DTypes>::type mpairs;
        static_assert(std::is_same<decltype(mpairs),
                                   TypeList<int, int, std::string>::type>::value,
                      "MemberPairTypeList failed!");
    }

    {
        const int x = 100;
        const std::string z = "ring";
        {
            // ############## test expansion from partial ##############
            const auto tpl =
                DBase::expandAndTuple<TypeList<F::x, F::z>::type >(x, z);
            static_assert(std::is_same<const std::tuple<int, int, std::string>,
                                       decltype(tpl)>::value,
                          "expandAndTuple failed!");
            assert(std::get<0>(tpl) == x && std::get<2>(tpl) == z);
        }

        const int y = 450;
        {
            // ############## test expansion from full ##############
            const auto tpl2 =
                DBase::expandAndTuple<TypeList<F::x, F::y, F::z>::type>(x, y, z);
            static_assert(std::is_same<const std::tuple<int, int, std::string>,
                                       decltype(tpl2)>::value,
                          "expandAndTuple failed!");
            assert(std::get<0>(tpl2) == x && std::get<1>(tpl2) == y
                   && std::get<2>(tpl2) == z);
        }

        {
            // ############## test expansion from nothing ##############
            const auto tpl3 = DBase::expandAndTuple<TypeList<>::type>();
            static_assert(std::is_same<const std::tuple<int, int, std::string>,
                                       decltype(tpl3)>::value,
                          "expandAndTuple failed!");
        }
    }

    {
        const int x = 450;
        const std::string z = "hiyo";
        D dee(x, z);
        assert((450 == static_cast<DBase &>(dee).member_pair.value
               && "hiyo" ==
                  static_cast<A<D,
                        TypeList<MemberPair<F::z,
                                            std::string>
                                >::type>&>(dee).member_pair.value));
    }
}