コード例 #1
0
ファイル: UI.cpp プロジェクト: masterDuncan/caveexpress
void UI::restart ()
{
	if (!_restart)
		return;
	_restart = false;

	ServiceProvider *serviceProvider = _serviceProvider;
	EventHandler *eventHandler = _eventHandler;
	IFrontend *frontend = _frontend;

	const std::string root = getRootWindow() != nullptr ? getRootWindow()->getId() : "";

	shutdown();
	init(*serviceProvider, *eventHandler, *frontend);

	if (root.empty())
		return;
	pushRoot(root);
}
コード例 #2
0
ファイル: SceneIterator.cpp プロジェクト: foxtella/Scene
void Scene::Iterator::forward() {

    assert(!isReachedEnd());

    if (seekedNodes.top().lock() == roots.top().lock()) {
        // 現在ルートを指している: このルートとその下の走査を終了
        seekedNodes.pop();
        roots.pop();
    }
    else {
        // 現在指しているのはルートではない: 親ノードに移動
        auto popped = seekedNodes.top().lock();
        seekedNodes.pop();
        seekedNodes.push(popped->linkage.getParent());

        // 次に指すべき兄弟ノードがあればそれを先に処理する
        auto nextSiblingToIterate = getSiblingToIterate(popped);
        if (nextSiblingToIterate != nullptr) {
            pushRoot(nextSiblingToIterate);
        }
    }

}
コード例 #3
0
ファイル: SceneIterator.cpp プロジェクト: foxtella/Scene
Scene::Iterator::Iterator(const ScenePtr& root, bool reversed) {
    this->reversed = reversed;
    pushRoot(root);
}