File: assignTypes.h

package info (click to toggle)
ball 1.5.0%2Bgit20180813.37fc53c-6
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 239,888 kB
  • sloc: cpp: 326,149; ansic: 4,208; python: 2,303; yacc: 1,778; lex: 1,099; xml: 958; sh: 322; makefile: 95
file content (130 lines) | stat: -rw-r--r-- 2,456 bytes parent folder | download | duplicates (9)
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: assignTypes.h,v 1.16 2005/12/23 17:01:51 amoll Exp $
//

// Molecular Mechanics: atom type assignment

#ifndef BALL_MOLMEC_COMMON_ASSIGNTYPES_H
#define BALL_MOLMEC_COMMON_ASSIGNTYPES_H

#ifndef BALL_CONCEPT_PROCESSOR_H
#	include <BALL/CONCEPT/processor.h>
#endif

#ifndef BALL_MOLMEC_PARAMETER_ATOMTYPES_H
#	include <BALL/MOLMEC/PARAMETER/atomTypes.h>
#endif

#include <vector>

namespace BALL 
{
	/// Only used for deriving interface
	class	BALL_EXPORT AssignBaseProcessor
		:	public UnaryProcessor<Atom>
	{
		public:

		///
		AssignBaseProcessor();

		/** Set the number of atoms, for which the setup of the forcefield can
		    fail, until the setup() methods aborts and return false.
				By default, there is no limit set.
		*/
		void setMaximumUnassignedAtoms(Size nr);

		/** Get the number of atoms, for which the setup of the forcefield can
		    fail, until the setup() methods aborts and return false.
		*/
		Size getMaximumUnassignedAtoms() const;

		/// Get the number of atoms, for which the force field setup failed.
		Size getNumberOfUnassignedAtoms() const;

		/// Get the atoms, for which the force field setup failed.
		HashSet<const Atom*>& getUnassignedAtoms();

		protected:

		//_ Atoms, for which the setup of the force field fails
		HashSet<const Atom*> unassigned_atoms_;

		//_ max number of unassigned atoms
		Size max_number_unassigned_atoms_;
	};


	/**	Type assignment processor.
    	\ingroup  MolmecCommon
	*/
	class	BALL_EXPORT AssignTypeProcessor
		:	public AssignBaseProcessor
	{
		public:

		/**	@name Constructors and Destructors
		*/
		//@{

		/**
		*/
		AssignTypeProcessor(const AtomTypes& atom_types);

		//@}
		/**	@name Processor related methods
		*/
		//@{

		/**
		*/
		virtual Processor::Result operator () (Atom& atom);

		//@}

		protected:
		
		AtomTypes atom_types_;

	};


	/**	Assign type names to atoms.
    	\ingroup  MolmecCommon
	*/
	class	BALL_EXPORT AssignTypeNameProcessor
		:	public AssignBaseProcessor
	{
		public:

		/**	@name Constructors and Destructors
		*/
		//@{

		/**
		*/
		AssignTypeNameProcessor(const String& filename, bool overwrite = false);

		//@}
		/**	@name	Processor related methods
		*/
		//@{

		/**
		*/
		virtual Processor::Result operator () (Atom& atom);

		//@}

		protected:
		
		StringHashMap<String>	type_map_;
		
		bool overwrite_;
	};
} // namespace BALL


#endif // BALL_MOLMEC_COMMON_ASSIGNTYPES_H