Mantid
Loading...
Searching...
No Matches
SplittersWorkspace.h
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2012 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
7#pragma once
8
10#include "MantidDataObjects/DllConfig.h"
14
15#ifdef _MSC_VER
16#pragma warning(disable : 4250) // Disable warning regarding inheritance via dominance
17#endif
18
19namespace Mantid {
20namespace DataObjects {
21
32class MANTID_DATAOBJECTS_DLL SplittersWorkspace : public DataObjects::TableWorkspace, public API::ISplittersWorkspace {
33public:
35
36 const std::string id() const override { return "SplittersWorkspace"; }
37
39 std::unique_ptr<SplittersWorkspace> clone() const { return std::unique_ptr<SplittersWorkspace>(doClone()); }
40
42 std::unique_ptr<SplittersWorkspace> cloneEmpty() const { return std::unique_ptr<SplittersWorkspace>(doCloneEmpty()); }
43
45 void addSplitter(const Kernel::SplittingInterval &splitter) override;
46
47 Kernel::SplittingInterval getSplitter(size_t index) override;
48
49 size_t getNumberSplitters() const override;
50
51 bool removeSplitter(size_t) override;
52
53protected:
56
57private:
58 SplittersWorkspace *doClone() const override { return new SplittersWorkspace(*this); }
59 SplittersWorkspace *doCloneEmpty() const override { return new SplittersWorkspace(); }
60};
61
62using SplittersWorkspace_sptr = std::shared_ptr<SplittersWorkspace>;
63using SplittersWorkspace_const_sptr = std::shared_ptr<const SplittersWorkspace>;
64
65} // namespace DataObjects
66} // namespace Mantid
67
68// Instantiated and exported by DataObjects/src/PropertyWithValue.cpp
70 Mantid::Kernel::PropertyWithValue<std::shared_ptr<Mantid::DataObjects::SplittersWorkspace>>);
71
72#ifndef DataObjects_EXPORTS
74namespace Mantid::API {
76extern template class MANTID_DATAOBJECTS_DLL WorkspaceProperty<DataObjects::SplittersWorkspace>;
78} // namespace Mantid::API
79#endif
std::map< DeltaEMode::Type, std::string > index
MANTID_DATAOBJECTS_EXTERN_TEMPLATE(Mantid::Kernel::PropertyWithValue< std::shared_ptr< Mantid::DataObjects::SplittersWorkspace > >)
ISplittersWorkspace : Workspace to contain splitters for event filtering.
SplittersWorkspace : A TableWorkspace to contain TimeSplitters.
std::unique_ptr< SplittersWorkspace > cloneEmpty() const
Returns a default-initialized clone of the workspace.
std::unique_ptr< SplittersWorkspace > clone() const
Returns a clone of the workspace.
SplittersWorkspace(const SplittersWorkspace &)=default
Protected copy constructor. May be used by childs for cloning.
SplittersWorkspace * doClone() const override
Virtual clone method. Not implemented to force implementation in children.
SplittersWorkspace * doCloneEmpty() const override
Virtual cloneEmpty method.
const std::string id() const override
Return the workspace typeID.
SplittersWorkspace & operator=(const SplittersWorkspace &other)=delete
TableWorkspace is an implementation of Workspace in which the data are organised in columns of same s...
The concrete, templated class for properties.
Class holding a start/end time and a destination for splitting event lists and logs.
std::shared_ptr< SplittersWorkspace > SplittersWorkspace_sptr
std::shared_ptr< const SplittersWorkspace > SplittersWorkspace_const_sptr
Helper class which provides the Collimation Length for SANS instruments.