SMTK
@SMTK_VERSION@
Simulation Modeling Tool Kit
|
14 #ifndef smtk_attribute_Item_h
15 #define smtk_attribute_Item_h
17 #include "smtk/CoreExports.h"
20 #include "smtk/attribute/Categories.h"
21 #include "smtk/attribute/CopyAssignmentOptions.h"
22 #include "smtk/attribute/SearchStyle.h"
23 #include "smtk/common/Deprecation.h"
44 class SMTKCORE_EXPORT
Item :
public smtk::enable_shared_from_this<Item>
78 IGNORE_EXPRESSIONS = 0x001,
79 IGNORE_MODEL_ENTITIES = 0x002,
80 IGNORE_ATTRIBUTE_REF_ITEMS = 0x004,
81 IGNORE_RESOURCE_COMPONENTS = 0x008,
82 COPY_MODEL_ASSOCIATIONS = 0x010
86 std::string name()
const;
87 std::string label()
const;
103 bool isValid(
bool useActiveCategories =
true)
const;
104 bool isValid(
const std::set<std::string>& categories)
const
106 return (!this->isEnabled()) || this->isIgnored() || this->isValidInternal(
true, categories);
116 virtual bool isRelevant(
117 bool includeCatagories =
true,
118 bool includeReadAccess =
false,
119 unsigned int readAccessLevel = 0)
const;
143 bool activeChildren =
true)
146 (void)activeChildren;
150 template<
typename DefType>
151 std::shared_ptr<const DefType> definitionAs()
const
153 return std::dynamic_pointer_cast<const DefType>(m_definition);
167 int subGroupPosition()
const {
return m_subGroupPosition; }
170 bool isOptional()
const;
177 bool isEnabled()
const;
182 void setIsEnabled(
bool isEnabledValue) { m_isEnabled = isEnabledValue; }
211 unsigned int advanceLevel(
int mode = 0)
const;
212 void setLocalAdvanceLevel(
int mode,
unsigned int level);
213 unsigned int localAdvanceLevel(
int mode = 0)
const
215 return (mode == 1 ? m_localAdvanceLevel[1] : m_localAdvanceLevel[0]);
220 void unsetLocalAdvanceLevel(
int mode = 0);
223 bool hasLocalAdvanceLevelInfo(
int mode = 0)
const
225 return (mode == 1 ? m_hasLocalAdvanceLevelInfo[1] : m_hasLocalAdvanceLevelInfo[0]);
230 m_userData[key] = value;
233 void clearUserData(
const std::string& key) { m_userData.erase(key); }
234 void clearAllUserData() { m_userData.clear(); }
236 virtual void reset();
240 virtual bool rotate(std::size_t fromPosition, std::size_t toPosition);
253 SMTK_DEPRECATED_IN_22_11(
"Replaced by assign(ConstItemPtr&, const ItemAssignmentOptions&).")
254 virtual
bool assign(const
smtk::attribute::
ConstItemPtr& sourceItem,
unsigned int options);
265 smtk::io::Logger& logger);
274 void setIsIgnored(
bool val) { m_isIgnored = val; }
280 static Item::Type string2Type(
const std::string& s);
285 Item(
Item* owningItem,
int myPosition,
int mySubGroupPOsition);
293 bool rotateVector(std::vector<T>& v, std::size_t fromPosition, std::size_t toPosition);
296 virtual bool isValidInternal(
bool useCategories,
const std::set<std::string>& categories)
301 int m_subGroupPosition;
305 std::map<std::string, smtk::simulation::UserDataPtr> m_userData;
308 bool m_hasLocalAdvanceLevelInfo[2];
309 unsigned int m_localAdvanceLevel[2];
310 bool m_forceRequired;
315 std::map<std::string, smtk::simulation::UserDataPtr>::const_iterator it = m_userData.find(key);
322 return smtk::dynamic_pointer_cast<T>(this->
find(iname, style));
328 return smtk::dynamic_pointer_cast<const T>(this->
find(iname, style));
332 bool Item::rotateVector(std::vector<T>& v, std::size_t fromPosition, std::size_t toPosition)
334 if (fromPosition == toPosition)
339 std::size_t lastPosition = v.size() - 1;
340 if ((fromPosition > lastPosition) || (toPosition > lastPosition))
345 auto first = v.begin();
346 auto middle = v.begin();
347 auto last = v.begin();
348 if (fromPosition < toPosition)
350 first += fromPosition;
351 last += toPosition + 1;
352 middle += fromPosition + 1;
357 last += fromPosition + 1;
358 middle += fromPosition;
360 std::rotate(first, middle, last);
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
Type
Definition: Item.h:53
Definition: Definition.h:45
Class used to specify copy and assignment options.
Definition: CopyAssignmentOptions.h:211
SearchStyle
How should searches for items be conducted?
Definition: SearchStyle.h:24
void detachOwningAttribute()
This should be used only by attributes.
Definition: Item.h:246
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:141
smtk::shared_ptr< smtk::simulation::UserData > UserDataPtr
Definition: PublicPointerDefs.h:671
void setForceRequired(bool val)
Controls if an item should be forced to be required regardless of its local enable property.
Definition: Item.h:194
void setIsEnabled(bool isEnabledValue)
Set the instance's local enabled state.
Definition: Item.h:182
virtual void detachOwningResource()
Release the item's dependency on its parent attribute's Resource.
Definition: Item.h:243
@ MeshEntityType
Needed for backward compatibility w/r XML/JSON formats < 4.0.
Definition: Item.h:65
smtk::shared_ptr< const smtk::attribute::ItemDefinition > ConstItemDefinitionPtr
Definition: PublicPointerDefs.h:475
AssignmentOptions
Deprecated Assignment Options.
Definition: Item.h:76
bool localEnabledState() const
Return the state of the instance's isEnabled state.
Definition: Item.h:180
@ AttributeRefType
Needed for backward compatibility w/r XML/JSON formats < 4.0.
Definition: Item.h:55
bool isIgnored() const
Controls if an item should be ignored.
Definition: Item.h:276
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:249
smtk::shared_ptr< smtk::attribute::Attribute > AttributePtr
Definition: PublicPointerDefs.h:456
@ RECURSIVE_ACTIVE
Recursively search for an active item.
Definition: SearchStyle.h:32
smtk::shared_ptr< const smtk::attribute::Item > ConstItemPtr
Definition: PublicPointerDefs.h:469
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:320
Represent a (possibly composite) value according to a definition.
Definition: Attribute.h:49
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:104
smtk::shared_ptr< smtk::attribute::Item > ItemPtr
Definition: PublicPointerDefs.h:467
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:55
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:165
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:195