+ MODELAPI_EXPORT const std::shared_ptr<ModelAPI_Object>& owner() const;
+
+ /// Returns true if attribute was initialized by some value
+ MODELAPI_EXPORT virtual bool isInitialized();
+
+ /// Makes attribute initialized
+ MODELAPI_EXPORT void setInitialized();
+
+ /// Blocks sending "attribute updated" if theBlock is true
+ /// \param theBlock a block value
+ /// \return the previous block value
+ MODELAPI_EXPORT bool blockSetInitialized(const bool theBlock);
+
+ /// Set this attribute is argument for result
+ /// (change of this attribute requires update of result).
+ /// By default it is true.
+ MODELAPI_EXPORT void setIsArgument(const bool theFlag);
+
+ /// Returns true if attribute causes the result change
+ MODELAPI_EXPORT bool isArgument();
+
+ /// Immutable argument can not be changed programmatically (e.g. by constraint)
+ /// By default it is false.
+ /// Returns the previous state of the attribute's immutability.
+ MODELAPI_EXPORT bool setImmutable(const bool theFlag);
+
+ /// Returns true if can not be changed programmatically
+ MODELAPI_EXPORT bool isImmutable();
+
+ /// ID of the attribute in Data
+ MODELAPI_EXPORT const std::string& id() const;
+
+ /// Resets attribute to deafult state.
+ MODELAPI_EXPORT virtual void reset();
+
+ protected: