19#include <unordered_map>
32 : m_name(
std::move(
name)), m_documentation(
""), m_typeinfo(&type), m_direction(direction), m_units(
""), m_group(
""),
33 m_remember(true), m_autotrim(true), m_disableReplaceWSButton(false), m_isDynamicDefault(false) {
35 throw std::invalid_argument(
"An empty property name is not permitted");
41 throw std::out_of_range(
"direction should be a member of the Direction enum");
46 : m_name(
right.m_name), m_documentation(
right.m_documentation), m_typeinfo(
right.m_typeinfo),
47 m_direction(
right.m_direction), m_units(
right.m_units), m_group(
right.m_group), m_remember(
right.m_remember),
48 m_autotrim(
right.m_autotrim), m_disableReplaceWSButton(
right.m_disableReplaceWSButton),
49 m_isDynamicDefault(
right.m_isDynamicDefault) {
51 throw std::invalid_argument(
"An empty property name is not permitted");
54 [](
auto const &settings) { return std::unique_ptr<IPropertySettings const>(settings->clone()); });
70 throw std::invalid_argument(
"An empty property name is not permitted");
165 std::ostringstream os;
166 os <<
"__TMP" <<
this;
175 std::ostringstream os;
176 os <<
"__TMP" <<
this;
177 return (os.str() == this->value());
225namespace DataObjects {
228class LeanElasticPeaksWorkspace;
229class GroupingWorkspace;
230class OffsetsWorkspace;
232class SpecialWorkspace2D;
235class SplittersWorkspace;
239class PropertyManager;
255 return lhs_tsp_float->operator==(
rhs);
259 return lhs_tsp_double->operator==(
rhs);
263 return lhs_tsp_string->operator==(
rhs);
267 return lhs_tsp_bool->operator==(
rhs);
270 return (lhs.
value() ==
rhs.value());
288 using std::make_pair;
294 static std::unordered_map<string, string> typestrings;
295 if (typestrings.empty()) {
296 typestrings.emplace(
typeid(
char).
name(),
string(
"letter"));
297 typestrings.emplace(
typeid(
int).
name(),
string(
"number"));
298 typestrings.emplace(
typeid(
long long).
name(),
string(
"number"));
299 typestrings.emplace(
typeid(int64_t).
name(),
string(
"number"));
300 typestrings.emplace(
typeid(
double).
name(),
string(
"number"));
301 typestrings.emplace(
typeid(
bool).
name(),
string(
"boolean"));
302 typestrings.emplace(
typeid(
string).
name(),
string(
"string"));
303 typestrings.emplace(
typeid(std::vector<string>).
name(),
string(
"str list"));
304 typestrings.emplace(
typeid(std::vector<int>).
name(),
string(
"int list"));
305 typestrings.emplace(
typeid(std::vector<long>).
name(),
string(
"long list"));
306 typestrings.emplace(
typeid(std::vector<int64_t>).
name(),
string(
"int list"));
307 typestrings.emplace(
typeid(std::vector<size_t>).
name(),
string(
"unsigned int list"));
308 typestrings.emplace(
typeid(std::vector<double>).
name(),
string(
"dbl list"));
309 typestrings.emplace(
typeid(std::vector<std::vector<string>>).
name(),
string(
"list of str lists"));
310 typestrings.emplace(
typeid(
OptionalBool).
name(),
string(
"optional boolean"));
313 typestrings.emplace(
typeid(std::shared_ptr<Workspace>).
name(),
string(
"Workspace"));
314 typestrings.emplace(
typeid(std::shared_ptr<MatrixWorkspace>).
name(),
string(
"MatrixWorkspace"));
315 typestrings.emplace(
typeid(std::shared_ptr<ITableWorkspace>).
name(),
string(
"TableWorkspace"));
316 typestrings.emplace(
typeid(std::shared_ptr<IMDWorkspace>).
name(),
string(
"IMDWorkspace"));
317 typestrings.emplace(
typeid(std::shared_ptr<IMDEventWorkspace>).
name(),
string(
"MDEventWorkspace"));
318 typestrings.emplace(
typeid(std::shared_ptr<IEventWorkspace>).
name(),
string(
"IEventWorkspace"));
319 typestrings.emplace(
typeid(std::shared_ptr<Workspace2D>).
name(),
string(
"Workspace2D"));
320 typestrings.emplace(
typeid(std::shared_ptr<EventWorkspace>).
name(),
string(
"EventWorkspace"));
321 typestrings.emplace(
typeid(std::shared_ptr<PeaksWorkspace>).
name(),
string(
"PeaksWorkspace"));
322 typestrings.emplace(
typeid(std::shared_ptr<LeanElasticPeaksWorkspace>).
name(),
string(
"LeanElasticPeaksWorkspace"));
323 typestrings.emplace(
typeid(std::shared_ptr<IPeaksWorkspace>).
name(),
string(
"IPeaksWorkspace"));
324 typestrings.emplace(
typeid(std::shared_ptr<GroupingWorkspace>).
name(),
string(
"GroupingWorkspace"));
325 typestrings.emplace(
typeid(std::shared_ptr<WorkspaceGroup>).
name(),
string(
"WorkspaceGroup"));
326 typestrings.emplace(
typeid(std::shared_ptr<OffsetsWorkspace>).
name(),
string(
"OffsetsWorkspace"));
327 typestrings.emplace(
typeid(std::shared_ptr<MaskWorkspace>).
name(),
string(
"MaskWorkspace"));
328 typestrings.emplace(
typeid(std::shared_ptr<SpecialWorkspace2D>).
name(),
string(
"SpecialWorkspace2D"));
329 typestrings.emplace(
typeid(std::shared_ptr<IMDHistoWorkspace>).
name(),
string(
"IMDHistoWorkspace"));
330 typestrings.emplace(
typeid(std::shared_ptr<SplittersWorkspace>).
name(),
string(
"SplittersWorkspace"));
331 typestrings.emplace(
typeid(std::shared_ptr<SpecialWorkspace2D>).
name(),
string(
"SpecialWorkspace2D"));
332 typestrings.emplace(
typeid(std::shared_ptr<TableWorkspace>).
name(),
string(
"TableWorkspace"));
334 typestrings.emplace(
typeid(std::shared_ptr<IFunction>).
name(),
string(
"Function"));
335 typestrings.emplace(
typeid(std::shared_ptr<IAlgorithm>).
name(),
string(
"IAlgorithm"));
336 typestrings.emplace(
typeid(std::shared_ptr<PropertyManager>).
name(),
string(
"Dictionary"));
338 auto mitr = typestrings.find(type.name());
339 if (mitr != typestrings.end()) {
345 string type_name = type.name();
346 if (type_name.find(
"Mantid") != std::string::npos && type_name.find(
"EnumeratedString") != std::string::npos) {
const std::vector< double > & rhs
#define UNUSED_ARG(x)
Function arguments are sometimes unused in certain implmentations but are required for documentation ...
IAlgorithm is the interface implemented by the Algorithm base class.
This class provides an interface to an EventWorkspace.
This is an interface to a fitting function - a semi-abstarct class.
Abstract base class for multi-dimension event workspaces (MDEventWorkspace).
Abstract interface to MDHistoWorkspace, for use in exposing to Python.
Basic MD Workspace Abstract Class.
Interface to the class Mantid::DataObjects::PeaksWorkspace.
ITableWorkspace is an implementation of Workspace in which the data are organised in columns of same ...
Base MatrixWorkspace Abstract Class.
Class to hold a set of workspaces.
Base Workspace Abstract Class.
OptionalBool : Tri-state bool.
This class stores information about the parameters used by an algorithm.
Base class for properties.
bool isDynamicDefault() const
Returns a flag indicating that the property's value has been set programmatically,...
virtual const std::string & units() const
Returns the units of the property, if any, as a string.
void setDocumentation(const std::string &documentation)
Sets the user level description of the property.
void setIsDynamicDefault(const bool &flag)
Set or clear the flag indicating whether or not the property's value has been set programmatically.
virtual std::string valueAsPrettyStr(const size_t maxLength=0, const bool collapseLists=true) const
Returns the value of the property as a pretty printed string.
bool hasTemporaryValue() const
Property is using a temporary value for this property.
const std::type_info * m_typeinfo
The type of the property.
std::vector< std::unique_ptr< IPropertySettings const > > m_settings
Property settings (enabled/visible)
void setSettings(std::unique_ptr< IPropertySettings const > settings)
Set the PropertySettings object.
virtual int size() const
Return the size of this property.
Property()
Private default constructor.
void setDisableReplaceWSButton(const bool &disable)
Sets the property to disable the creation of the "Replace Workspace" button.
virtual const PropertyHistory createHistory() const
Create a PropertyHistory object representing the current state of the Property.
bool autoTrim() const
Returns if the property is set to automatically trim string unput values of whitespace.
void setRemember(bool)
Set wheter to remeber this property input.
std::vector< std::unique_ptr< IPropertySettings const > > const & getSettings() const
void createTemporaryValue()
Create a temporary value for this property.
std::string m_name
The name of the property.
const std::string & documentation() const
Get the property's documentation string.
bool remember() const
Whether to save input values.
virtual std::string setValue(const std::string &)=0
Set the value of the property via a string.
const unsigned int m_direction
Whether the property is used as input, output or both to an algorithm.
virtual void setUnits(const std::string &unit)
Sets the units of the property, as a string.
void setName(const std::string &name)
Set the property's name.
virtual std::string isValid() const
Overridden function that checks whether the property, if not overriden returns "".
bool m_remember
Flag whether to save input values.
void clearSettings()
Clears the vector of PropertySettings for this property.
const std::string & name() const
Get the property's name.
void setAutoTrim(const bool &setting)
Sets if the property is set to automatically trim string unput values of whitespace.
bool m_disableReplaceWSButton
Flag to disable the generation of the "Replace Workspace" button on the OutputWorkspace property.
virtual std::vector< std::string > allowedValues() const
Returns the set of valid values for this property, if such a set exists.
virtual ~Property()
Virtual destructor.
const std::string type() const
Returns the type of the property as a string.
std::string m_documentation
Longer, optional description of property.
const std::type_info * type_info() const
Get the property type_info.
bool m_autotrim
Flag to determine if string inputs to the property should be automatically trimmed of whitespace.
bool disableReplaceWSButton() const
Returns if the property is set to disable the creation of the "Replace Workspace" button.
std::string m_units
Units of the property (optional)
bool m_isDynamicDefault
Flag to indicate that the property's value has been set programmatically, for example,...
virtual std::string value() const =0
Returns the value of the property as a string.
A specialised Property class for holding a series of time-value pairs.
MANTID_KERNEL_DLL std::string shorten(const std::string &input, const size_t max_length)
Converts long strings into "start ... end".
MANTID_KERNEL_DLL bool operator!=(const Mantid::Kernel::Property &lhs, const Mantid::Kernel::Property &rhs)
Compares this to another property for inequality.
MANTID_KERNEL_DLL bool operator==(const Mantid::Kernel::Property &lhs, const Mantid::Kernel::Property &rhs)
Compares this to another property for equality.
MANTID_KERNEL_DLL std::string getUnmangledTypeName(const std::type_info &type)
Return the name corresponding to the mangled string given by typeid.
Helper class which provides the Collimation Length for SANS instruments.