File: PathCache.hpp

package info (click to toggle)
spring 106.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 55,316 kB
  • sloc: cpp: 543,954; ansic: 44,800; python: 12,575; java: 12,201; awk: 5,889; sh: 1,796; asm: 1,546; xml: 655; perl: 405; php: 211; objc: 194; makefile: 76; sed: 2
file content (62 lines) | stat: -rw-r--r-- 1,912 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */

#ifndef QTPFS_PATHCACHE_HDR
#define QTPFS_PATHCACHE_HDR

#include <vector>

#include "PathEnums.hpp"
#include "Path.hpp"
#include "System/UnorderedMap.hpp"

#ifdef GetTempPath
#undef GetTempPath
#undef GetTempPathA
#endif

struct SRectangle;

namespace QTPFS {
	struct PathCache {
		PathCache() {
			numCacheHits.resize(PATH_TYPE_DEAD + 1, 0);
			numCacheMisses.resize(PATH_TYPE_DEAD + 1, 0);
		}

		typedef spring::unordered_map<unsigned int, IPath*> PathMap;
		typedef spring::unordered_map<unsigned int, IPath*>::iterator PathMapIt;

		bool MarkDeadPaths(const SRectangle& r);
		void KillDeadPaths();

		const IPath* GetTempPath(unsigned int pathID) const { return (GetConstPath(pathID, PATH_TYPE_TEMP)); }
		const IPath* GetLivePath(unsigned int pathID) const { return (GetConstPath(pathID, PATH_TYPE_LIVE)); }
		const IPath* GetDeadPath(unsigned int pathID) const { return (GetConstPath(pathID, PATH_TYPE_DEAD)); }
		      IPath* GetTempPath(unsigned int pathID)       { return (GetPath(pathID, PATH_TYPE_TEMP)); }
		      IPath* GetLivePath(unsigned int pathID)       { return (GetPath(pathID, PATH_TYPE_LIVE)); }
		      IPath* GetDeadPath(unsigned int pathID)       { return (GetPath(pathID, PATH_TYPE_DEAD)); }

		void AddTempPath(IPath* path);
		void AddLivePath(IPath* path);

		void DelPath(unsigned int pathID);

		const PathMap& GetTempPaths() const { return tempPaths; }
		const PathMap& GetLivePaths() const { return livePaths; }
		const PathMap& GetDeadPaths() const { return deadPaths; }

	private:
		const IPath* GetConstPath(unsigned int pathID, unsigned int pathType) const;
		      IPath* GetPath(unsigned int pathID, unsigned int pathType);

		PathMap tempPaths;
		PathMap livePaths;
		PathMap deadPaths;

		std::vector<unsigned int> numCacheHits;
		std::vector<unsigned int> numCacheMisses;
	};
}

#endif