ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/ConstraintAlgorithm.hpp
Revision: 1248
Committed: Fri Jun 4 19:30:05 2004 UTC (20 years, 1 month ago) by tim
File size: 1944 byte(s)
Log Message:
constraint algorithm for minimization is working

File Contents

# Content
1 #ifndef _CONSTRAINTALGORITHM_H_
2 #define _CONSTRAINTALGORITHM_H_
3
4 #include <iostream>
5 #include <map>
6 #include "CallbackFunctor.hpp"
7 #include "TypeInfo.hpp"
8 #include "ConstraintIterator.hpp"
9 using namespace std;
10
11 class ConstraintManager;
12 class ConstraintPair;
13 class JointConstraintPair;
14 class DistanceConstraintPair;
15 class SimInfo;
16
17 enum ConsAlgoStatus{
18 consPairHandlerFail = -3,
19 consElemHandlerFail = -2,
20 consFail = -1,
21 consSuccess = 0,
22 consAlready = 1};
23
24 ////////////////////////////////////////////////////////////////////////////////
25 //Declaration of ConstraintAlgorithm
26 ////////////////////////////////////////////////////////////////////////////////
27 //base class of constraint algorithm
28 //Actuallly we encount a triple dispatch problem here, something like
29 //ConstrainPair(ConsPairType*, ConsElementType1*, ConsElementType2*)
30 //To solve this problem, we apply visitor pattern and standard double dispatch technique
31 class ConstraintAlgorithm{
32
33 public:
34 ~ConstraintAlgorithm();
35 virtual void doConstrain();
36
37 //using RTTI (Run Time Type Information) to dispatch
38 int doConstrainPair(ConstraintPair* consPair);
39 void registerCallback(const TypeInfo& ti, CallbackFunctor* functor);
40 void unRegister(TypeInfo& ti);
41 bool haveError() { return error;}
42 protected:
43 ConstraintAlgorithm(SimInfo* rhs);
44
45 SimInfo* info;
46 ConstraintPairIterator* cpIter;
47 ConstraintElementIterator* ceIter;
48
49 map<TypeInfo, CallbackFunctor*> callbackMap;
50
51 bool error;
52 };
53
54 ////////////////////////////////////////////////////////////////////////////////
55 //Declaration of ConsAlgoFramework
56 ////////////////////////////////////////////////////////////////////////////////
57 class ConsAlgoFramework{
58 public:
59 ~ConsAlgoFramework();
60
61 void doPreConstraint();
62
63 protected:
64 ConsAlgoFramework(SimInfo* rhs);
65
66 private:
67 ConstraintElementIterator* ceIter;
68
69 };
70
71 #endif //endif _CONSTRAINTALGORITHM_H_

Properties

Name Value
svn:executable *