/****************************************************************************** * Copyright (c) 2018(-2023) STMicroelectronics. * All rights reserved. * * This file is part of the TouchGFX 4.21.2 distribution. * * This software is licensed under terms that can be found in the LICENSE file in * the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * *******************************************************************************/ /** * @file mvp/MVPHeap.hpp * * Declares the touchgfx::MVPHeap class. */ #ifndef TOUCHGFX_MVPHEAP_HPP #define TOUCHGFX_MVPHEAP_HPP #include "common/AbstractPartition.hpp" namespace touchgfx { class AbstractPartition; class MVPApplication; /** * Generic heap class for MVP applications. Serves as a way of obtaining the memory storage * areas for presenters, screens, transitions and the concrete application. * * Subclassed by an application-specific heap which provides the actual storage areas. * This generic interface is used only in makeTransition. */ class MVPHeap { public: /** * Initializes a new instance of the MVPHeap class. * * @param [in] pres A memory partition containing enough memory to hold the largest * presenter. * @param [in] scr A memory partition containing enough memory to hold the largest view. * @param [in] tra A memory partition containing enough memory to hold the largest * transition. * @param [in] app A reference to the MVPApplication instance. */ MVPHeap(AbstractPartition& pres, AbstractPartition& scr, AbstractPartition& tra, MVPApplication& app) : presenterStorage(pres), screenStorage(scr), transitionStorage(tra), frontendApplication(app) { } /** Finalizes an instance of the MVPHeap class. */ virtual ~MVPHeap() { } AbstractPartition& presenterStorage; ///< A memory partition containing enough memory to hold the largest presenter. AbstractPartition& screenStorage; ///< A memory partition containing enough memory to hold the largest view. AbstractPartition& transitionStorage; ///< A memory partition containing enough memory to hold the largest transition. MVPApplication& frontendApplication; ///< A reference to the MVPApplication instance. }; } // namespace touchgfx #endif // TOUCHGFX_MVPHEAP_HPP