TORCS  1.3.9
The Open Racing Car Simulator
RespTable.h
Go to the documentation of this file.
1 /*
2  SOLID - Software Library for Interference Detection
3  Copyright (C) 1997-1998 Gino van den Bergen
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public
16  License along with this library; if not, write to the Free
17  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 
19  Please send remarks, questions and bug reports to gino@win.tue.nl,
20  or write to:
21  Gino van den Bergen
22  Department of Mathematics and Computing Science
23  Eindhoven University of Technology
24  P.O. Box 513, 5600 MB Eindhoven, The Netherlands
25 */
26 
27 #ifndef _RESPTABLE_H_
28 #define _RESPTABLE_H_
29 
30 #ifdef _MSC_VER
31 #pragma warning(disable:4786) // identifier was truncated to '255'
32 #endif // _MSC_VER
33 
34 #include "Response.h"
35 
36 #include <SOLID/solid.h>
37 #include <map>
38 
39 typedef map<DtObjectRef, Response, less<DtObjectRef> > SingleList;
40 typedef pair<DtObjectRef, DtObjectRef> ObjPair;
41 typedef map<ObjPair, Response, less<ObjPair> > PairList;
42 
44  return y < x ? make_pair(y, x) : make_pair(x, y);
45 }
46 
47 class RespTable {
48 public:
49  const Response& find(DtObjectRef obj1, DtObjectRef obj2) const;
50  void cleanObject(DtObjectRef obj);
51 
52  void setDefault(const Response& resp) { defaultResp = resp; }
53 
54  void setSingle(DtObjectRef obj, const Response& resp) {
55  singleList[obj] = resp;
56  }
57 
58  void resetSingle(DtObjectRef obj) { singleList.erase(obj); }
59 
60  void setPair(DtObjectRef obj1, DtObjectRef obj2, const Response& resp) {
61  pairList[make_ObjPair(obj1, obj2)] = resp;
62  }
63 
64  void resetPair(DtObjectRef obj1, DtObjectRef obj2) {
65  pairList.erase(make_ObjPair(obj1, obj2));
66  }
67 
68 
69 
70 private:
74 };
75 
76 #endif
pair< DtObjectRef, DtObjectRef > ObjPair
Definition: RespTable.h:40
void resetPair(DtObjectRef obj1, DtObjectRef obj2)
Definition: RespTable.h:64
void resetSingle(DtObjectRef obj)
Definition: RespTable.h:58
void setDefault(const Response &resp)
Definition: RespTable.h:52
void cleanObject(DtObjectRef obj)
Definition: RespTable.cpp:48
PairList pairList
Definition: RespTable.h:73
void setPair(DtObjectRef obj1, DtObjectRef obj2, const Response &resp)
Definition: RespTable.h:60
static Vector y[4]
Definition: Convex.cpp:56
SingleList singleList
Definition: RespTable.h:72
void * DtObjectRef
Definition: solid.h:39
map< DtObjectRef, Response, less< DtObjectRef > > SingleList
Definition: RespTable.h:39
ObjPair make_ObjPair(DtObjectRef x, DtObjectRef y)
Definition: RespTable.h:43
map< ObjPair, Response, less< ObjPair > > PairList
Definition: RespTable.h:41
Response defaultResp
Definition: RespTable.h:71
void setSingle(DtObjectRef obj, const Response &resp)
Definition: RespTable.h:54
const Response & find(DtObjectRef obj1, DtObjectRef obj2) const
Definition: RespTable.cpp:35