X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Feature.h;h=5572bc08d4147cf49467f2fdc5563ed1ba473ab1;hb=9b6fa5ea0662642f58e278af3798f4dc9ddd0acf;hp=431b065b77f2d76d26d696ba16bbd75b6f9191da;hpb=4783f146b71a48c651523fcf0e12367bcf3d1fa8;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Feature.h b/src/ModelAPI/ModelAPI_Feature.h index 431b065b7..5572bc08d 100644 --- a/src/ModelAPI/ModelAPI_Feature.h +++ b/src/ModelAPI/ModelAPI_Feature.h @@ -1,3 +1,5 @@ +// Copyright (C) 2014-20xx CEA/DEN, EDF R&D + // File: ModelAPI_Feature.hxx // Created: 21 Mar 2014 // Author: Mikhail PONIKAROV @@ -29,7 +31,7 @@ class ModelAPI_Feature : public ModelAPI_Object virtual const std::string& getKind() = 0; /// Returns the group identifier of all features - static std::string group() + inline static std::string group() { static std::string MY_GROUP = "Features"; return MY_GROUP; @@ -47,12 +49,19 @@ class ModelAPI_Feature : public ModelAPI_Object return group(); } - /// Request for initialization of data model of the feature: adding all attributes - virtual void initAttributes() = 0; - /// Computes or recomputes the results virtual void execute() = 0; + /// Computes the attribute value on the base of other attributes if the value can be computed + /// \param theAttributeId an attribute index to be computed + /// \return a boolean value about it is computed + virtual bool compute(const std::string& theAttributeId) { return false; }; + + /// Registers error during the execution, causes the ExecutionFailed state + virtual void setError(const std::string& theError) { + data()->setError(theError); + } + /// returns the current results of the feature MODELAPI_EXPORT const std::list >& results(); /// returns the first result in the list or NULL reference @@ -66,6 +75,8 @@ class ModelAPI_Feature : public ModelAPI_Object const int theIndex); /// removes the result from the feature MODELAPI_EXPORT void removeResult(const std::shared_ptr& theResult); + /// removes all results starting from the gived index (zero-based) + MODELAPI_EXPORT void removeResults(const int theSinceIndex); /// removes all results from the feature MODELAPI_EXPORT void eraseResults(); /// removes all fields from this feature: results, data, etc @@ -83,72 +94,74 @@ class ModelAPI_Feature : public ModelAPI_Object } /// Must return document where the new feature must be added to - /// By default it is current document + /// By default it is null document: it is added to the document this method is called to MODELAPI_EXPORT virtual std::shared_ptr documentToAdd(); /// To virtually destroy the fields of successors MODELAPI_EXPORT virtual ~ModelAPI_Feature(); + /// Returns the feature by the object (result). MODELAPI_EXPORT static std::shared_ptr feature(ObjectPtr theObject); // // Helper methods, aliases for data()->method() // ----------------------------------------------------------------------------------------------- + /// Returns the name stored in the attribute inline std::string name() { return data()->name(); } - + /// Returns the Boolean attribute by the identifier inline std::shared_ptr boolean(const std::string& theID) { return data()->boolean(theID); } - + /// Returns the document reference attribute inline std::shared_ptr document(const std::string& theID) { return data()->document(theID); } - + /// Returns the real attribute by the identifier inline std::shared_ptr real(const std::string& theID) { return data()->real(theID); } - + /// Returns the integer attribute by the identifier inline std::shared_ptr integer(const std::string& theID) { return data()->integer(theID); } - + /// Returns the reference attribute by the identifier inline std::shared_ptr refattr(const std::string& theID) { return data()->refattr(theID); } - + /// Returns the reference attribute by the identifier inline std::shared_ptr reference(const std::string& theID) { return data()->reference(theID); } - + /// Returns the list of references attribute by the identifier inline std::shared_ptr reflist(const std::string& theID) { return data()->reflist(theID); } - + /// Returns the shape selection attribute by the identifier inline std::shared_ptr selection(const std::string& theID) { return data()->selection(theID); } - + /// Returns the list of shape selections attribute by the identifier inline std::shared_ptr selectionList(const std::string& theID) { return data()->selectionList(theID); } - + /// Returns the string attribute by the identifier inline std::shared_ptr string(const std::string& theID) { return data()->string(theID); } - + /// Returns the attribute by the identifier inline std::shared_ptr attribute(const std::string& theID) { return data()->attribute(theID);