Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//
// 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 [email protected]
//
// 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 <list>
#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<CCacheItem> 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
|