1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2 file Copyright.txt or https://cmake.org/licensing for details. */ 3 #pragma once 4 5 #include "cmConfigure.h" // IWYU pragma: keep 6 7 #include <memory> 8 #include <string> 9 10 class cmCursesLabelWidget; 11 class cmCursesWidget; 12 class cmState; 13 14 class cmCursesCacheEntryComposite 15 { 16 public: 17 cmCursesCacheEntryComposite(const std::string& key, int labelwidth, 18 int entrywidth); 19 cmCursesCacheEntryComposite(const std::string& key, cmState* state, 20 bool isNew, int labelwidth, int entrywidth); 21 ~cmCursesCacheEntryComposite(); 22 23 cmCursesCacheEntryComposite(cmCursesCacheEntryComposite const&) = delete; 24 cmCursesCacheEntryComposite& operator=(cmCursesCacheEntryComposite const&) = 25 delete; 26 27 cmCursesCacheEntryComposite(cmCursesCacheEntryComposite&&) = default; 28 cmCursesCacheEntryComposite& operator=(cmCursesCacheEntryComposite&&) = 29 default; 30 31 const char* GetValue(); 32 33 friend class cmCursesMainForm; 34 35 protected: 36 std::unique_ptr<cmCursesLabelWidget> Label; 37 std::unique_ptr<cmCursesLabelWidget> IsNewLabel; 38 std::unique_ptr<cmCursesWidget> Entry; 39 std::string Key; 40 int LabelWidth; 41 int EntryWidth; 42 }; 43