1 /* 2 * Copyright (C) 2013 Nicolas Bonnefon and other contributors 3 * 4 * This file is part of glogg. 5 * 6 * glogg is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * glogg is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with glogg. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef VIEWINTERFACE_H 21 #define VIEWINTERFACE_H 22 23 #include <memory> 24 25 class LogData; 26 class LogFilteredData; 27 28 // ViewInterface represents a high-level view on a log file. 29 class ViewInterface { 30 public: 31 // Set the log data and filtered data to associate to this view 32 // Ownership stay with the caller but is shared 33 void setData( std::shared_ptr<LogData> log_data, 34 std::shared_ptr<LogFilteredData> filtered_data ) 35 { doSetData( log_data, filtered_data ); } 36 37 // For save/restore of the context 38 /* 39 virtual void setViewContext( const ViewContextInterface& view_context ) = 0; 40 virtual ViewContextInterface& getViewContext( void ) = 0; 41 */ 42 43 // To allow polymorphic destruction 44 virtual ~ViewInterface() {} 45 46 protected: 47 // Virtual functions (using NVI) 48 virtual void doSetData( std::shared_ptr<LogData> log_data, 49 std::shared_ptr<LogFilteredData> filtered_data ) = 0; 50 }; 51 #endif 52