// // MODULE: APGTSCAC.H // // PURPOSE: Cache (maps from a set of NID/IST pairs to a set of recommended NIDs) // // PROJECT: Generic Troubleshooter DLL for Microsoft AnswerPoint // // COMPANY: Saltmine Creative, Inc. (206)-284-7511 support@saltmine.com // // AUTHOR: Roman Mach, Joe Mabel // // ORIGINAL DATE: 8-2-96 // // NOTES: // 1. Based on Print Troubleshooter DLL // // Version Date By Comments //-------------------------------------------------------------------- // V3.0 7-24-98 JM pulled out of apgts.h // #ifndef _APGTSCAC_H_DEFINED #define _APGTSCAC_H_DEFINED #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include #include "nodestate.h" // maximum cache for belief networks #define MAXCACHESIZE 200 // Maps from a set of node/state pairs to an ordered list of recommended nodes // This is all within the context of a particular belief network. class CCacheItem { private: CBasisForInference BasisForInference; // Cache key. Set of node/state pairs, not all // the nodes in the belief network, just the ones on which we // have state data from the user. State is never ST_UNKNOWN. // No "special" nodes like nidFailNode; these are all valid nodes // on which to base an inference. CRecommendations Recommendations; // Cache value. Unless nodes have been skipped, only the // first element of the vector really matters because we will // only give one recommendation at a time. public: CCacheItem() {}; CCacheItem(const CBasisForInference & Basis, const CRecommendations &Rec) : BasisForInference(Basis), Recommendations(Rec) {}; // note that the following makes a copy; it does not return a reference. CRecommendations GetRecommendations() const {return Recommendations;} // The following comparison operators depend on the assumption that if the cache key // is identical, the cache value will be, too. // Note that this we do not use lexicographical order. We're saying any shorter // cache key compares as less than any longer. bool operator== (const CCacheItem &item) const; bool operator!= (const CCacheItem &item) const; bool operator< (const CCacheItem &item) const; bool operator> (const CCacheItem &item) const; }; class CCache { private: list listItems; enum {k_CacheSizeMax = 200}; public: CCache() {}; ~CCache() {}; void Clear() {listItems.clear();}; bool AddCacheItem(const CBasisForInference &BasisForInference, const CRecommendations &Recommendations); bool FindCacheItem(const CBasisForInference &BasisForInference, CRecommendations &Recommendations) const; UINT GetCount() const; }; #endif //_APGTSCAC_H_DEFINED