+ /// The type of map of descriptors
+ typedef std::map< std::string, BlackBoxDescriptor*> BlackBoxMapType;
+ const BlackBoxMapType& GetBlackBoxMap() const { return mBlackBoxMap; }
+ BlackBoxMapType& GetBlackBoxMap() { return mBlackBoxMap; }
+
+ /// The type of key in the map of adaptor descriptors
+ class AdaptorKey
+ {
+ public:
+ AdaptorKey( const DataInfo& typein, const DataInfo& typeout,
+ BlackBoxDescriptor::Kind kind )
+ : mTypeIn(typein), mTypeOut(typeout), mKind(kind) {}
+
+ bool operator< ( const AdaptorKey& k ) const
+ {
+ return ( ( mKind < k.mKind ) ||
+ ( ( mKind == k.mKind ) &&
+ ( ( mTypeIn < k.mTypeIn ) ||
+ ( ( mTypeIn == k.mTypeIn ) &&
+ ( mTypeOut < k.mTypeOut ) ) ) ) );
+ }
+
+ bool operator== ( const AdaptorKey& k ) const
+ {
+ return ( ( mKind == k.mKind ) &&
+ ( mTypeIn == k.mTypeIn ) &&
+ ( mTypeOut == k.mTypeOut ) );
+ }
+ DataInfo mTypeIn;
+ DataInfo mTypeOut;
+ BlackBoxDescriptor::Kind mKind;
+ };
+
+ /// The type of map of adaptor descriptors
+ typedef std::map< AdaptorKey, BlackBoxDescriptor*> AdaptorMapType;
+
+
+ const AdaptorMapType& GetAdaptorMap() const { return mAdaptorMap; }
+
+
+ // Factories management
+ /// Adds the factory to the set of factories which use the package
+ void AddFactory(Factory* f) { mFactorySet.insert(f); }
+ /// Removes the factory from the set of factories which use the package
+ void RemoveFactory(Factory* f) { mFactorySet.erase(f); }
+
+ /// Gets the set of factories which use the package
+ std::set<Factory*>& GetFactorySet() { return mFactorySet; }
+ /// Gets the set of factories which use the package (const)
+ const std::set<Factory*>& GetFactorySet() const { return mFactorySet; }
+
+ void CheckBoxes() const;