+ HypothesisData( const QString&, const QString&, const QString&,
+ const QString&, const QString&, const QString&,
+ const QString&, const int, const int,
+ const QList<int>&, const bool,
+ const QStringList&, const QStringList&,
+ const QStringList&, const QStringList&,
+ const int, const bool supportSub );
+
+ QString TypeName; //!< hypothesis type name
+ QString PluginName; //!< plugin name
+ QString ServerLibName; //!< server library name
+ QString ClientLibName; //!< client library name
+ QString Label; //!< label
+ QString IconId; //!< icon identifier
+ QString Context; //!< ["GLOBAL","LOCAL","ANY"(default)]
+ int GroupID; //!< group ID (staring from zero)
+ int Priority; //!< integer, priority within the group
+ QList<int> Dim; //!< list of supported dimensions (see SMESH::Dimension enumeration)
+ bool IsAuxOrNeedHyp; //!< TRUE if given HYPOTHESIS is auxiliary one, FALSE otherwise
+ //!< TRUE if given ALGORITHM can't work w/o hypotheses
+ int IsNeedGeometry; //!< 1 if the algorithm works with shapes only,
+ //!< -1 if the algorithm works without shapes only,
+ //!< 0 if the algorithm works in both cases
+ bool IsSupportSubmeshes; //!< TRUE if the algorithm building all-dim elems supports sub-meshes
+
+ // for algorithm only: dependencies algo <-> algo and algo -> hypos
+ QStringList BasicHypos; //!< list of basic hypotheses
+ QStringList OptionalHypos;//!< list of optional hypotheses
+ QStringList InputTypes; //!< list of element types required as a prerequisite
+ QStringList OutputTypes; //!< list of types of generated elements
+};
+
+/*!
+ * \brief Class containing set of hypotheses
+ *
+ * Actually it contains list of hypo types
+ */
+class HypothesesSet
+{
+public:
+
+ enum SetType { MAIN, ALT, INTERN, NB_HYP_TYPES }; //!< hypos/algos type: main, alternative, internal-edges
+
+ //HypothesesSet( const QString& );
+ HypothesesSet( const QString& name,
+ bool useCommonSize, bool isQuadDominated,
+ const QStringList& mainHypos, const QStringList& mainAlgos,
+ const QStringList& altHypos, const QStringList& altAlgos,
+ const QStringList& intHypos, const QStringList& intAlgos );
+
+ QString name() const;
+ bool toUseCommonSize() const { return myUseCommonSize; }
+ bool isQuadDominated() const { return myQuadDominated; }
+ bool hasAlgo( SetType type ) const { return !myAlgoList[ type ].isEmpty(); }
+ //int count( bool, SetType ) const;
+
+ int maxDim() const;
+
+ void setIsCustom( bool );
+ bool getIsCustom() const;
+
+ void setAlgoAvailable( SetType type, bool isAvailable );
+ bool getAlgoAvailable( SetType type );
+
+ static SetType getPreferredHypType();
+ static const char* getCommonHypoSetHypoType();
+
+ //bool isAlgo() const;
+
+ // CASCADE-like iteration
+ void init( bool, SetType );
+ bool more() const;
+ void next();
+ QString current() const;
+
+private:
+ QStringList* list(bool,SetType) const;
+ QStringList* list() const;
+
+private:
+ bool myUseCommonSize; // Average size is asked only and used to create default hypotheses
+ bool myQuadDominated;
+ QString myHypoSetName;
+ QStringList myHypoList[3], myAlgoList[3]; // per SetType
+ bool myIsAlgoAvailable[3]; // current state depending on geometry etc
+
+ // iteration
+ SetType myHypType;
+ bool myIsAlgo, myIsCustom;
+ int myIndex;