//! \param theAllowFolder take into account grouping feature by folders
int size(const std::string& theGroupID, const bool theAllowFolder = false);
+ //! Returns the parent object of this child. This may be result or feature, parent of a
+ //! top result. Fast method, that uses internal data structure specifics.
+ std::shared_ptr<ModelAPI_Object> parent(const std::shared_ptr<ModelAPI_Object> theChild);
+
//! Returns all (and disabled) results of the given type.
//! Not fast method (iterates all features).
void allResults(const std::string& theGroupID, std::list<ResultPtr>& theResults);
std::shared_ptr<ModelAPI_Folder> findFolder(
const std::list<std::shared_ptr<ModelAPI_Feature> >& theFeatures,
const bool theBelow);
+ //! Search a folder containing the given feature.
+ //! Addtionally calculates a zero-based index of the feature in this folder.
+ //! \param theFeature feature to search
+ //! \param theIndexInFolder zero-based index in the folder or -1 if the feature is top-level.
+ //! \return the folder containing the feature or empty pointer if the feature is top-level.
+ std::shared_ptr<ModelAPI_Folder> findContainingFolder(
+ const std::shared_ptr<ModelAPI_Feature>& theFeature,
+ int& theIndexInFolder);
//! Add a list of features to the folder. The correctness of the adding is not performed
//! (such checks have been done in corresponding find.. method).
//! \return \c true if the movement is successfull
std::string& theParentName) const;
/// Return object representing a folder or empty pointer
- ObjectPtr folder(TDF_Label theLabel) const;
+ const ObjectPtr& folder(TDF_Label theLabel) const;
private:
TDF_Label myMain; ///< main label of the data storage