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"
43 class SMTKCORE_EXPORT
Item :
public smtk::enable_shared_from_this<Item>
77 IGNORE_EXPRESSIONS = 0x001,
78 IGNORE_MODEL_ENTITIES = 0x002,
79 IGNORE_ATTRIBUTE_REF_ITEMS = 0x004,
80 IGNORE_RESOURCE_COMPONENTS = 0x008,
81 COPY_MODEL_ASSOCIATIONS = 0x010
85 std::string name()
const;
86 std::string label()
const;
102 bool isValid(
bool useActiveCategories =
true)
const;
103 bool isValid(
const std::set<std::string>& categories)
const
105 return (!this->isEnabled()) || this->isIgnored() || this->isValidInternal(
true, categories);
115 virtual bool isRelevant(
116 bool includeCatagories =
true,
117 bool includeReadAccess =
false,
118 unsigned int readAccessLevel = 0)
const;
142 bool activeChildren =
true)
145 (void)activeChildren;
149 template<
typename DefType>
150 std::shared_ptr<const DefType> definitionAs()
const
152 return std::dynamic_pointer_cast<const DefType>(m_definition);
166 int subGroupPosition()
const {
return m_subGroupPosition; }
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);
252 SMTK_DEPRECATED_IN_22_11(
"Replaced by assign(ConstItemPtr&, const ItemAssignmentOptions&).")
253 virtual
bool assign(const
smtk::attribute::
ConstItemPtr& sourceItem,
unsigned int options);
264 smtk::io::Logger& logger);
273 void setIsIgnored(
bool val) { m_isIgnored = val; }
279 static Item::Type string2Type(
const std::string& s);
284 Item(
Item* owningItem,
int myPosition,
int mySubGroupPOsition);
292 bool rotateVector(std::vector<T>& v, std::size_t fromPosition, std::size_t toPosition);
295 virtual bool isValidInternal(
bool useCategories,
const std::set<std::string>& categories)
300 int m_subGroupPosition;
304 std::map<std::string, smtk::simulation::UserDataPtr> m_userData;
307 bool m_hasLocalAdvanceLevelInfo[2];
308 unsigned int m_localAdvanceLevel[2];
309 bool m_forceRequired;
314 std::map<std::string, smtk::simulation::UserDataPtr>::const_iterator it = m_userData.find(key);
321 return smtk::dynamic_pointer_cast<T>(this->
find(iname, style));
327 return smtk::dynamic_pointer_cast<const T>(this->
find(iname, style));
331 bool Item::rotateVector(std::vector<T>& v, std::size_t fromPosition, std::size_t toPosition)
333 if (fromPosition == toPosition)
338 std::size_t lastPosition = v.size() - 1;
339 if ((fromPosition > lastPosition) || (toPosition > lastPosition))
344 auto first = v.begin();
345 auto middle = v.begin();
346 auto last = v.begin();
347 if (fromPosition < toPosition)
349 first += fromPosition;
350 last += toPosition + 1;
351 middle += fromPosition + 1;
356 last += fromPosition + 1;
357 middle += fromPosition;
359 std::rotate(first, middle, last);
The main namespace for the Simulation Modeling Tool Kit (SMTK).
Definition: doc.h:33
Type
Definition: Item.h:52
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: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:140
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: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:64
smtk::shared_ptr< const smtk::attribute::ItemDefinition > ConstItemDefinitionPtr
Definition: PublicPointerDefs.h:475
AssignmentOptions
Deprecated Assignment Options.
Definition: Item.h:75
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:54
bool isIgnored() const
Controls if an item should be ignored.
Definition: Item.h:275
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
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:319
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:34
bool isValid(const std::set< std::string > &categories) const
tests the validity of an item
Definition: Item.h:103
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:164
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