NAMD
Classes | Public Member Functions | Static Public Member Functions | List of all members
MGridforceParamsList Class Reference

#include <MGridforceParams.h>

Public Member Functions

 MGridforceParamsList ()
 
 ~MGridforceParamsList ()
 
void clear ()
 
MGridforceParamsfind_key (const char *key)
 
int index_for_key (const char *key)
 
MGridforceParamsat_index (int idx)
 
MGridforceParamsadd (const char *key)
 
MGridforceParamsget_first ()
 
void pack_data (MOStream *msg)
 
void unpack_data (MIStream *msg)
 

Static Public Member Functions

static int atoBool (const char *s)
 

Detailed Description

Definition at line 51 of file MGridforceParams.h.

Constructor & Destructor Documentation

◆ MGridforceParamsList()

MGridforceParamsList::MGridforceParamsList ( )
inline

Definition at line 53 of file MGridforceParams.h.

References clear().

53  {
54  clear();
55  }

◆ ~MGridforceParamsList()

MGridforceParamsList::~MGridforceParamsList ( )
inline

Definition at line 57 of file MGridforceParams.h.

References clear().

58  {
59  MGFElem* cur;
60  while (head != NULL) {
61  cur = head;
62  head = cur->nxt;
63  delete cur;
64  }
65  clear();
66  }

Member Function Documentation

◆ add()

MGridforceParams * MGridforceParamsList::add ( const char *  key)

Definition at line 76 of file MGridforceParams.C.

References find_key(), MGridforceParams::gridforceCol, MGridforceParams::gridforceFile, MGridforceParams::gridforceKey, MGridforceParams::gridforceQcol, MGridforceParams::gridforceVfile, and MGridforceParams::next.

Referenced by unpack_data().

77 {
78  // If the key is already in the list, we can't add it
79  if (find_key(key)!=NULL) {
80  return NULL;
81  }
82 
83  MGFElem* new_elem = new MGFElem();
84  int len = strlen(key);
85  MGridforceParams* elem = &(new_elem->elem);
86  elem->gridforceKey = new char[len+1];
87  strncpy(elem->gridforceKey,key,len+1);
88  elem->gridforceVfile = NULL;
89  elem->gridforceFile = NULL;
90  elem->gridforceCol = NULL;
91  elem->gridforceQcol = NULL;
92  elem->next = NULL;
93  new_elem->nxt = NULL;
94  if (head == NULL) {
95  head = new_elem;
96  }
97  if (tail != NULL) {
98  tail->nxt = new_elem;
99  tail->elem.next = elem;
100  }
101  tail = new_elem;
102  n_elements++;
103 
104  return elem;
105 }
MGridforceParams * find_key(const char *key)
MGridforceParams * next

◆ at_index()

MGridforceParams * MGridforceParamsList::at_index ( int  idx)

Definition at line 54 of file MGridforceParams.C.

Referenced by Node::updateGridScale().

55 {
56  MGFElem* cur = head;
57  MGFElem* found = NULL;
58  MGridforceParams* result = NULL;
59 
60  int counter = 0;
61  while (found == NULL && cur != NULL) {
62  if (counter == idx) {
63  found = cur;
64  } else {
65  cur = cur->nxt;
66  counter++;
67  }
68  }
69  if (found != NULL) {
70  result = &(found->elem);
71  }
72  return result;
73 }

◆ atoBool()

static int MGridforceParamsList::atoBool ( const char *  s)
inlinestatic

Definition at line 91 of file MGridforceParams.h.

92  {
93  if (!strcasecmp(s, "on")) return 1;
94  if (!strcasecmp(s, "off")) return 0;
95  if (!strcasecmp(s, "true")) return 1;
96  if (!strcasecmp(s, "false")) return 0;
97  if (!strcasecmp(s, "yes")) return 1;
98  if (!strcasecmp(s, "no")) return 0;
99  if (!strcasecmp(s, "1")) return 1;
100  if (!strcasecmp(s, "0")) return 0;
101  return -1;
102  }

◆ clear()

void MGridforceParamsList::clear ( )
inline

Definition at line 71 of file MGridforceParams.h.

Referenced by MGridforceParamsList(), and ~MGridforceParamsList().

71  {
72  head = tail = NULL;
73  n_elements = 0;
74  }

◆ find_key()

MGridforceParams * MGridforceParamsList::find_key ( const char *  key)

Definition at line 14 of file MGridforceParams.C.

Referenced by add(), Node::reloadGridforceGrid(), and Node::updateGridScale().

15 {
16  MGFElem* cur = head;
17  MGFElem* found = NULL;
18  MGridforceParams* result = NULL;
19 
20  while (found == NULL && cur != NULL) {
21  if (!strcasecmp((cur->elem).gridforceKey,key)) {
22  found = cur;
23  } else {
24  cur = cur->nxt;
25  }
26  }
27  if (found != NULL) {
28  result = &(found->elem);
29  }
30  return result;
31 }

◆ get_first()

MGridforceParams* MGridforceParamsList::get_first ( )
inline

Definition at line 81 of file MGridforceParams.h.

Referenced by pack_data().

81  {
82  if (head == NULL) {
83  return NULL;
84  } else return &(head->elem);
85  }

◆ index_for_key()

int MGridforceParamsList::index_for_key ( const char *  key)

Definition at line 33 of file MGridforceParams.C.

Referenced by colvarproxy_namd::check_volmap_by_name(), colvarproxy_namd::get_volmap_id_from_name(), colvarproxy_namd::init_volmap_by_name(), Node::reloadGridforceGrid(), and Node::updateGridScale().

34 {
35  MGFElem* cur = head;
36  MGFElem* found = NULL;
37  int result = -1;
38 
39  int idx = 0;
40  while (found == NULL && cur != NULL) {
41  if (!strcasecmp((cur->elem).gridforceKey,key)) {
42  found = cur;
43  } else {
44  cur = cur->nxt;
45  idx++;
46  }
47  }
48  if (found != NULL) {
49  result = idx;
50  }
51  return result;
52 }

◆ pack_data()

void MGridforceParamsList::pack_data ( MOStream msg)

Definition at line 107 of file MGridforceParams.C.

References get_first(), MGridforceParams::gridforceCheckSize, MGridforceParams::gridforceCol, MGridforceParams::gridforceCont, MGridforceParams::gridforceFile, MGridforceParams::gridforceKey, MGridforceParams::gridforceLite, MGridforceParams::gridforceQcol, MGridforceParams::gridforceScale, MGridforceParams::gridforceVfile, MGridforceParams::gridforceVOffset, MGridforceParams::gridforceVolts, NAMD_die(), MGridforceParams::next, and MOStream::put().

108 {
109  int i = n_elements;
110  msg->put(n_elements);
111  MGridforceParams *elem = get_first();
112  while (elem != NULL) {
113  int len;
114  len = strlen(elem->gridforceKey) + 1;
115  msg->put(len);
116  msg->put(len,elem->gridforceKey);
117 
118  len = strlen(elem->gridforceVfile) + 1;
119  msg->put(len);
120  msg->put(len,elem->gridforceVfile);
121 
122  Vector v = elem->gridforceScale;
123  msg->put(&v);
124 
125  len = strlen(elem->gridforceFile) + 1;
126  msg->put(len);
127  msg->put(len,elem->gridforceFile);
128 
129  len = strlen(elem->gridforceCol) + 1;
130  msg->put(len);
131  msg->put(len,elem->gridforceCol);
132 
133  if (elem->gridforceQcol == NULL)
134  msg->put(1); // Qcol_is_null = true
135  else {
136  msg->put(0); // Qcol_is_null = false
137  len = strlen(elem->gridforceQcol) + 1;
138  msg->put(len);
139  msg->put(len,elem->gridforceQcol);
140  }
141 
142  v = elem->gridforceVOffset;
143  msg->put(&v);
144 
145  short boolvals[6];
146  boolvals[0] = (elem->gridforceCont[0] ? 1 : 0);
147  boolvals[1] = (elem->gridforceCont[1] ? 1 : 0);
148  boolvals[2] = (elem->gridforceCont[2] ? 1 : 0);
149  boolvals[3] = (elem->gridforceVolts ? 1 : 0);
150  boolvals[4] = (elem->gridforceLite ? 1 : 0);
151  boolvals[5] = (elem->gridforceCheckSize ? 1 : 0);
152  msg->put(6,boolvals);
153 
154  i--;
155  elem = elem->next;
156  }
157  if (i != 0) {
158  NAMD_die("MGridforceParams message packing error\n");
159  }
160  return;
161 }
Definition: Vector.h:72
MGridforceParams * get_first()
void NAMD_die(const char *err_msg)
Definition: common.C:147
MGridforceParams * next
MOStream * put(char data)
Definition: MStream.h:112

◆ unpack_data()

void MGridforceParamsList::unpack_data ( MIStream msg)

Definition at line 163 of file MGridforceParams.C.

References add(), MIStream::get(), MGridforceParams::gridforceCheckSize, MGridforceParams::gridforceCol, MGridforceParams::gridforceCont, MGridforceParams::gridforceFile, MGridforceParams::gridforceLite, MGridforceParams::gridforceQcol, MGridforceParams::gridforceScale, MGridforceParams::gridforceVfile, MGridforceParams::gridforceVOffset, and MGridforceParams::gridforceVolts.

164 {
165  int elements;
166  msg->get(elements);
167 
168  for(int i=0; i < elements; i++) {
169  // Get key
170  int len;
171  msg->get(len);
172  char *key = new char[len];
173  msg->get(len,key);
174  MGridforceParams *elem = add(key);
175 
176  msg->get(len);
177  char *str = new char[len];
178  msg->get(len,str);
179  elem->gridforceVfile = str;
180 
181  Vector v;
182  msg->get(&v);
183  elem->gridforceScale = v;
184 
185  msg->get(len);
186  str = new char[len];
187  msg->get(len,str);
188  elem->gridforceFile = str;
189 
190  msg->get(len);
191  str = new char[len];
192  msg->get(len,str);
193  elem->gridforceCol = str;
194 
195  int qcol_is_null;
196  msg->get(qcol_is_null);
197  if (qcol_is_null)
198  elem->gridforceQcol = NULL;
199  else {
200  msg->get(len);
201  str = new char[len];
202  msg->get(len,str);
203  elem->gridforceQcol = str;
204  }
205 
206  msg->get(&v);
207  elem->gridforceVOffset = v;
208 
209  short boolvals[6];
210  msg->get(6,boolvals);
211  elem->gridforceCont[0] = ( boolvals[0] != 0 );
212  elem->gridforceCont[1] = ( boolvals[1] != 0 );
213  elem->gridforceCont[2] = ( boolvals[2] != 0 );
214  elem->gridforceVolts = ( boolvals[3] != 0 );
215  elem->gridforceLite = ( boolvals[4] != 0 );
216  elem->gridforceCheckSize = ( boolvals[5] != 0 );
217 
218  delete [] key;
219  }
220 }
Definition: Vector.h:72
MIStream * get(char &data)
Definition: MStream.h:29
MGridforceParams * add(const char *key)

The documentation for this class was generated from the following files: