00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _STORAGE_ADVISER_H_
00018 #define _STORAGE_ADVISER_H_
00019
00026 class StorageAdviser
00027 {
00028 public:
00029
00030 enum Criteria {
00031 NoCriteria = 0,
00032 SpeedCritical = 1,
00033 PrecisionCritical = 2,
00034 LongRetentionLikely = 4,
00035 FrequentLookupLikely = 8
00036 };
00037
00038
00039 enum Recommendation {
00040 NoRecommendation = 0,
00041 UseMemory = 1,
00042 PreferMemory = 2,
00043 PreferDisc = 4,
00044 UseDisc = 8,
00045 ConserveSpace = 16,
00046 UseAsMuchAsYouLike = 32
00047 };
00048
00059 static Recommendation recommend(Criteria criteria,
00060 int minimumSize,
00061 int maximumSize);
00062
00063 enum AllocationArea {
00064 MemoryAllocation,
00065 DiscAllocation
00066 };
00067
00072 static void notifyPlannedAllocation(AllocationArea area, int size);
00073
00079 static void notifyDoneAllocation(AllocationArea area, int size);
00080
00081 private:
00082 static long m_discPlanned;
00083 static long m_memoryPlanned;
00084 };
00085
00086 #endif
00087