/* * Copyright (c) 2010-2018 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include #include #include namespace Swift { StreamStack::StreamStack(std::unique_ptr topLayer, std::unique_ptr bottomLayer) : topLayer_(std::move(topLayer)), bottomLayer_(std::move(bottomLayer)) { bottomLayer_->setParentLayer(topLayer_.get()); topLayer_->setChildLayer(bottomLayer_.get()); } StreamStack::~StreamStack() { } void StreamStack::addLayer(std::unique_ptr streamLayer) { auto* lowLayer = layers_.empty() ? bottomLayer_.get() : layers_.rbegin()->get(); topLayer_->setChildLayer(streamLayer.get()); streamLayer->setParentLayer(topLayer_.get()); lowLayer->setParentLayer(streamLayer.get()); streamLayer->setChildLayer(lowLayer); layers_.emplace_back(std::move(streamLayer)); } }