From: Joel Holdsworth Date: Fri, 3 Apr 2015 15:11:55 +0000 (+0100) Subject: Added devices::File as a common base of file devices X-Git-Tag: pulseview-0.3.0~212 X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=commitdiff_plain;h=474e817a724fdad4db635ba59202283fbcc22ef9;ds=sidebyside Added devices::File as a common base of file devices --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 029f24b7..c6e3b770 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,6 +156,7 @@ set(pulseview_SOURCES pv/data/signaldata.cpp pv/data/segment.cpp pv/devices/device.cpp + pv/devices/file.cpp pv/devices/hardwaredevice.cpp pv/devices/sessionfile.cpp pv/dialogs/about.cpp diff --git a/pv/devices/file.cpp b/pv/devices/file.cpp new file mode 100644 index 00000000..91f2d5d6 --- /dev/null +++ b/pv/devices/file.cpp @@ -0,0 +1,41 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2015 Joel Holdsworth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#include "file.hpp" + +namespace pv { +namespace devices { + +File::File(const std::string &file_name) : + file_name_(file_name) { +} + +std::string File::full_name() const { + return boost::filesystem::path(file_name_).filename().string(); +} + +std::string File::display_name(const DeviceManager&) const { + return File::full_name(); +} + +} // namespace devices +} // namespace pv diff --git a/pv/devices/file.hpp b/pv/devices/file.hpp new file mode 100644 index 00000000..8a8c8706 --- /dev/null +++ b/pv/devices/file.hpp @@ -0,0 +1,54 @@ +/* + * This file is part of the PulseView project. + * + * Copyright (C) 2015 Joel Holdsworth + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef PULSEVIEW_PV_DEVICES_FILE_HPP +#define PULSEVIEW_PV_DEVICES_FILE_HPP + +#include + +#include "device.hpp" + +namespace pv { +namespace devices { + +class File : public Device +{ +protected: + File(const std::string &file_name); + +public: + /** + * Builds the full name. It only contains all the fields. + */ + std::string full_name() const; + + /** + * Builds the display name. It only contains fields as required. + */ + std::string display_name(const DeviceManager&) const; + +protected: + const std::string file_name_; +}; + +} // namespace devices +} // namespace pv + +#endif // PULSEVIEW_PV_DEVICES_FILE_HPP diff --git a/pv/devices/sessionfile.cpp b/pv/devices/sessionfile.cpp index 687c52bd..7bcabee0 100644 --- a/pv/devices/sessionfile.cpp +++ b/pv/devices/sessionfile.cpp @@ -29,16 +29,8 @@ namespace devices { SessionFile::SessionFile(const std::shared_ptr &context, const std::string &file_name) : - context_(context), - file_name_(file_name) { -} - -std::string SessionFile::full_name() const { - return boost::filesystem::path(file_name_).filename().string(); -} - -std::string SessionFile::display_name(const DeviceManager&) const { - return SessionFile::full_name(); + File(file_name), + context_(context) { } void SessionFile::create() { diff --git a/pv/devices/sessionfile.hpp b/pv/devices/sessionfile.hpp index a4b69d3e..97131676 100644 --- a/pv/devices/sessionfile.hpp +++ b/pv/devices/sessionfile.hpp @@ -21,10 +21,9 @@ #ifndef PULSEVIEW_PV_DEVICES_SESSIONFILE_HPP #define PULSEVIEW_PV_DEVICES_SESSIONFILE_HPP -#include #include -#include "device.hpp" +#include "file.hpp" namespace sigrok { class Context; @@ -33,27 +32,16 @@ class Context; namespace pv { namespace devices { -class SessionFile final : public Device +class SessionFile final : public File { public: SessionFile(const std::shared_ptr &context, const std::string &file_name); - /** - * Builds the full name. It only contains all the fields. - */ - std::string full_name() const; - - /** - * Builds the display name. It only contains fields as required. - */ - std::string display_name(const DeviceManager&) const; - void create(); private: const std::shared_ptr &context_; - const std::string file_name_; }; } // namespace devices