SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
11 #ifndef smtk_attribute_Item_h
12 #define smtk_attribute_Item_h
14 #include "smtk/CoreExports.h"
17 #include "smtk/attribute/Categories.h"
18 #include "smtk/attribute/CopyAssignmentOptions.h"
19 #include "smtk/attribute/SearchStyle.h"
20 #include "smtk/common/Status.h"
47 class SMTKCORE_EXPORT
Item :
public smtk::enable_shared_from_this<Item>
77 std::string name()
const;
78 std::string label()
const;
94 bool isValid(
bool useActiveCategories =
true)
const;
95 bool isValid(
const std::set<std::string>& categories)
const
97 return (!this->isEnabled()) || this->isIgnored() || this->isValidInternal(
true, categories);
107 virtual bool isRelevant(
108 bool includeCatagories =
true,
109 bool includeReadAccess =
false,
110 unsigned int readAccessLevel = 0)
const;
134 bool activeChildren =
true)
137 (void)activeChildren;
141 template<
typename DefType>
142 std::shared_ptr<const DefType> definitionAs()
const
144 return std::dynamic_pointer_cast<const DefType>(m_definition);
160 int subGroupPosition()
const;
165 std::string path(
const std::string& sep =
"/")
const;
169 bool isOptional()
const;
176 bool isEnabled()
const;
181 void setIsEnabled(
bool isEnabledValue) { m_isEnabled = isEnabledValue; }
210 unsigned int advanceLevel(
int mode = 0)
const;
211 void setLocalAdvanceLevel(
int mode,
unsigned int level);
212 unsigned int localAdvanceLevel(
int mode = 0)
const
214 return (mode == 1 ? m_localAdvanceLevel[1] : m_localAdvanceLevel[0]);
219 void unsetLocalAdvanceLevel(
int mode = 0);
222 bool hasLocalAdvanceLevelInfo(
int mode = 0)
const
224 return (mode == 1 ? m_hasLocalAdvanceLevelInfo[1] : m_hasLocalAdvanceLevelInfo[0]);
229 m_userData[key] = value;
232 void clearUserData(
const std::string& key) { m_userData.erase(key); }
233 void clearAllUserData() { m_userData.clear(); }
235 virtual void reset();
239 virtual bool rotate(std::size_t fromPosition, std::size_t toPosition);
259 virtual Status assign(
263 virtual Status assign(
282 static Item::Type string2Type(
const std::string& s);
286 Item(
Item* owningItem,
int myPosition,
int mySubGroupPosition);
294 bool rotateVector(std::vector<T>& v, std::size_t fromPosition, std::size_t toPosition);
297 virtual bool isValidInternal(
bool useCategories,
const std::set<std::string>& categories)
302 int m_subGroupPosition;
306 std::map<std::string, smtk::simulation::UserDataPtr> m_userData;
309 bool m_hasLocalAdvanceLevelInfo[2];
310 unsigned int m_localAdvanceLevel[2];
311 bool m_forceRequired;
316 std::map<std::string, smtk::simulation::UserDataPtr>::const_iterator it = m_userData.find(key);
323 return smtk::dynamic_pointer_cast<T>(this->
find(iname, style));
329 return smtk::dynamic_pointer_cast<const T>(this->
find(iname, style));
333 bool Item::rotateVector(std::vector<T>& v, std::size_t fromPosition, std::size_t toPosition)
335 if (fromPosition == toPosition)
340 std::size_t lastPosition = v.size() - 1;
341 if ((fromPosition > lastPosition) || (toPosition > lastPosition))
346 auto first = v.begin();
347 auto middle = v.begin();
348 auto last = v.begin();
349 if (fromPosition < toPosition)
351 first += fromPosition;
352 last += toPosition + 1;
353 middle += fromPosition + 1;
358 last += fromPosition + 1;
359 middle += fromPosition;
361 std::rotate(first, middle, last);
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
Type
Definition: Item.h:56
Stores the definition of an attribute.
Definition: Definition.h:45
Class used to specify copy and assignment options.
Definition: CopyAssignmentOptions.h:272
SearchStyle
How should searches for items be conducted?
Definition: SearchStyle.h:24
void detachOwningAttribute()
This should be used only by attributes.
Definition: Item.h:245
virtual void visitChildren(std::function< void(smtk::attribute::ItemPtr, bool)> visitor, bool activeChildren=true)
visitChildren Invoke a function on each (or, if findInActiveChildren is true, each active) child item...
Definition: Item.h:132
smtk::shared_ptr< smtk::simulation::UserData > UserDataPtr
Definition: PublicPointerDefs.h:678
void setForceRequired(bool val)
Controls if an item should be forced to be required regardless of its local enable property.
Definition: Item.h:193
void setIsEnabled(bool isEnabledValue)
Set the instance's local enabled state.
Definition: Item.h:181
virtual void detachOwningResource()
Release the item's dependency on its parent attribute's Resource.
Definition: Item.h:242
@ MeshEntityType
Needed for backward compatibility w/r XML/JSON formats < 4.0.
Definition: Item.h:68
smtk::shared_ptr< const smtk::attribute::ItemDefinition > ConstItemDefinitionPtr
Definition: PublicPointerDefs.h:482
Log messages for later presentation to a user or a file.
Definition: Logger.h:94
bool localEnabledState() const
Return the state of the instance's isEnabled state.
Definition: Item.h:179
@ AttributeRefType
Needed for backward compatibility w/r XML/JSON formats < 4.0.
Definition: Item.h:58
void setIsIgnored(bool val)
Controls if an item should be ignored.
Definition: Item.h:276
bool isIgnored() const
Controls if an item should be ignored.
Definition: Item.h:278
A definition for attribute items that store smtk::resource::PersistentObjectPtr as values.
Definition: ReferenceItemDefinition.h:40
void detachOwningItem()
This should only be called by the item that owns this one.
Definition: Item.h:248
The base class for items that hold information inside an attribute.
Definition: Item.h:47
A return value for methods that need to indicate both success/failure and modification/stasis.
Definition: Status.h:30
smtk::shared_ptr< smtk::attribute::Attribute > AttributePtr
Definition: PublicPointerDefs.h:463
@ RECURSIVE_ACTIVE
Recursively search for an active item.
Definition: SearchStyle.h:32
smtk::shared_ptr< const smtk::attribute::Item > ConstItemPtr
Definition: PublicPointerDefs.h:476
Definition: ValueItemDefinition.h:41
T::Ptr findAs(const std::string &name, SearchStyle style=RECURSIVE_ACTIVE)
return a child item that matches name and satisfies the SearchStyle
Definition: Item.h:321
Represent a (possibly composite) value according to a definition.
Definition: Attribute.h:50
Represents the category constraints associated with an Attribute, Attribute Definition,...
Definition: Categories.h:32
bool isValid(const std::set< std::string > &categories) const
tests the validity of an item
Definition: Item.h:95
smtk::shared_ptr< smtk::attribute::Item > ItemPtr
Definition: PublicPointerDefs.h:474
Macros for dealing with shared-pointer classes.
A GroupItemDefinition represents a collection of Item Definitions.
Definition: GroupItemDefinition.h:32
#define smtkTypeMacroBase(...)
Add typedefs to a class for identifcation.
Definition: SharedFromThis.h:131
int position() const
Position is the item's location w/r to the owning item if not null or the owning attribute.
Definition: Item.h:156
smtk::attribute::ItemPtr find(const std::string &name, SearchStyle style=RECURSIVE_ACTIVE)
return a child item that matches name and satisfies the SearchStyle
Definition: Item.cxx:136
bool forceRequired() const
Controls if an item should be forced to be required regardless of its local enable property.
Definition: Item.h:194