SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
20 #ifndef smtk_attribute_ValueItemDefinition_h
21 #define smtk_attribute_ValueItemDefinition_h
29 #include "smtk/CoreExports.h"
31 #include "smtk/attribute/ItemDefinition.h"
32 #include "smtk/attribute/VoidItemDefinition.h"
49 typedef std::function<bool(
52 bool includeCatagories,
53 const std::set<std::string>& testCategories,
54 bool includeReadAccess,
55 unsigned int readAccessLevel)>
63 const std::string&
units()
const {
return m_units; }
64 virtual bool setUnits(
const std::string& newUnits);
69 bool hasSupportedUnits()
const;
75 std::string supportedUnits()
const;
78 bool isDiscrete()
const {
return !m_discreteValueEnums.empty(); }
84 assert(m_discreteValueEnums.size() > ith);
85 return m_discreteValueEnums[ith];
90 bool getEnumIndex(
const std::string& enumVal, std::size_t& index)
const;
94 void setDefaultDiscreteIndex(
int discreteIndex);
98 bool allowsExpressions()
const;
106 return m_expressionInformation;
115 std::string expressionType()
const;
123 void setExpressionType(
const std::string& etype);
142 void buildExpressionItem(
ValueItem* vitem)
const;
143 void buildChildrenItems(
ValueItem* vitem)
const;
147 virtual bool hasRange()
const = 0;
154 bool setNumberOfRequiredValues(std::size_t esize);
162 bool setMaxNumberOfValues(std::size_t esize);
169 void setIsExtensible(
bool mode);
181 void setValueLabel(std::size_t element,
const std::string& elabel);
182 void setCommonValueLabel(
const std::string& elabel);
187 std::string valueLabel(std::size_t element)
const;
188 bool isDiscreteIndexValid(
int index)
const;
189 bool isDiscreteIndexValid(
int index,
const std::set<std::string>& categories)
const;
202 return (m_itemDefs.find(itemName) != m_itemDefs.end());
206 bool hasChildItemDefinition(
const std::string& valueName,
const std::string& itemName);
212 void setEnumCategories(
213 const std::string& enumValue,
215 void addEnumCategory(
const std::string& enumValue,
const std::string& cat);
221 void setEnumAdvanceLevel(
const std::string& enumValue,
unsigned int level);
222 void unsetEnumAdvanceLevel(
const std::string& enumValue);
223 unsigned int enumAdvanceLevel(
const std::string& enumValue)
const;
224 bool hasEnumAdvanceLevel(
const std::string& enumValue)
const;
227 return m_valueToAdvanceLevelAssociations;
237 typename smtk::internal::shared_ptr_type<T>::SharedPointerType addItemDefinition(
238 const std::string& idName)
241 typename SharedTypes::SharedPointerType item;
244 if (this->hasChildItemDefinition(idName))
249 item = SharedTypes::RawPointerType::New(idName);
250 m_itemDefs[item->name()] = item;
252 static_cast<ItemDefinition*
>(item.get())->setUnitsSystem(m_unitsSystem);
256 bool addConditionalItem(
const std::string& enumValue,
const std::string& itemName);
257 std::vector<std::string> conditionalItems(
const std::string& enumValue)
const;
266 std::vector<std::string> relevantEnums(
267 bool includeCategories,
268 const std::set<std::string>& testCategories,
269 bool includeReadAccess,
270 unsigned int readAccessLevel)
const;
277 virtual bool defaultIsEnumRelevant(
279 bool includeCatagories,
280 const std::set<std::string>& testCategories,
281 bool includeReadAccess,
282 unsigned int readAccessLevel)
const;
286 void applyCategories(
289 void applyAdvanceLevels(
290 const unsigned int& readLevelFromParent,
291 const unsigned int& writeLevelFromParent)
override;
293 void setUnitsSystem(
const shared_ptr<units::System>& unitsSystem)
override;
295 virtual void updateDiscreteValue() = 0;
297 bool m_useCommonLabel;
298 std::vector<std::string> m_valueLabels;
299 std::vector<std::string> m_discreteValueEnums;
300 int m_defaultDiscreteIndex;
301 std::size_t m_numberOfRequiredValues;
302 std::size_t m_maxNumberOfValues;
305 std::string m_expressionType;
307 std::map<std::string, smtk::attribute::ItemDefinitionPtr> m_itemDefs;
308 std::map<std::string, std::set<std::string>> m_itemToValueAssociations;
309 std::map<std::string, std::vector<std::string>> m_valueToItemAssociations;
310 std::map<std::string, smtk::common::Categories::Expression> m_valueToCategoryAssociations;
311 std::map<std::string, unsigned int> m_valueToAdvanceLevelAssociations;
312 EnumRelevanceFunc m_customEnumIsRelevant =
nullptr;
321 const std::string& valueName,
322 const std::string& itemName)
330 m_itemToValueAssociations[itemName].find(valueName) !=
331 m_itemToValueAssociations[itemName].end());
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
const std::string & units() const
Set/Get the units string associated with the definition.
Definition: ValueItemDefinition.h:63
smtk::shared_ptr< smtk::attribute::Definition > DefinitionPtr
Definition: PublicPointerDefs.h:457
std::size_t numberOfChildrenItemDefinitions() const
For conditional children items based on the item's current discrete value.
Definition: ValueItemDefinition.h:192
bool isExtensible() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:168
bool usingCommonLabel() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:180
std::size_t numberOfRequiredValues() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:151
Definition: Categories.h:166
Definition: ItemDefinition.h:42
EnumRelevanceFunc customEnumIsRelevant() const
Set and Get Methods for specifying a custom isEnumRelevant function.
Definition: ValueItemDefinition.h:262
Definition: PublicPointerDefs.h:756
bool isDiscrete() const
Returns true if the definition is discrete in nature.
Definition: ValueItemDefinition.h:78
smtk::attribute::ComponentItemDefinitionPtr & expressionInformation()
Return the component item which is used to represent the definition's expression constraints.
Definition: ValueItemDefinition.h:104
bool hasDefault() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:145
void setCustomEnumIsRelevant(EnumRelevanceFunc func)
Set and Get Methods for specifying a custom isEnumRelevant function.
Definition: ValueItemDefinition.h:261
std::function< bool(const Item *, int enumIndex, bool includeCatagories, const std::set< std::string > &testCategories, bool includeReadAccess, unsigned int readAccessLevel)> EnumRelevanceFunc
Typedef for custom relevance functions.
Definition: ValueItemDefinition.h:56
Definition: ItemDefinition.h:52
The base class for items that hold information inside an attribute.
Definition: Item.h:47
#define smtkTypeMacro(...)
Add typedefs to a class for identifcation.
Definition: SharedFromThis.h:148
const std::map< std::string, unsigned int > enumAdvanceLevelInfo() const
Set/Get advance level associated with associated with a value Enum.
Definition: ValueItemDefinition.h:225
bool hasChildItemDefinition(const std::string &itemName) const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:200
smtk::shared_ptr< smtk::attribute::Attribute > AttributePtr
Definition: PublicPointerDefs.h:463
smtk::shared_ptr< smtk::attribute::ComponentItemDefinition > ComponentItemDefinitionPtr
Definition: PublicPointerDefs.h:548
int defaultDiscreteIndex() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:93
Definition: ValueItemDefinition.h:41
bool hasValueLabels() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:175
std::size_t maxNumberOfValues() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:159
A concrete base class for items that store a vector of plain-old-data (POD) as values.
Definition: ValueItem.h:37
const std::string & discreteEnum(std::size_t ith) const
Returns the ith enumeration string.
Definition: ValueItemDefinition.h:82
const std::map< std::string, smtk::attribute::ItemDefinitionPtr > & childrenItemDefinitions() const
Get/Set the default discrete value via its index location.
Definition: ValueItemDefinition.h:194
std::size_t numberOfDiscreteValues() const
Returns the number of discrete values defined in definition.
Definition: ValueItemDefinition.h:80
Represents the category constraints associated with smtk objects such as Attributes,...
Definition: Categories.h:33
smtk::shared_ptr< smtk::attribute::ValueItemDefinition > ValueItemDefinitionPtr
Definition: PublicPointerDefs.h:491
Definition: Categories.h:225
smtk::shared_ptr< smtk::attribute::ItemDefinition > ItemDefinitionPtr
Definition: PublicPointerDefs.h:480
smtk::shared_ptr< smtk::attribute::Resource > ResourcePtr
Definition: PublicPointerDefs.h:611