Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

MGridforceParamsList Class Reference

#include <MGridforceParams.h>

List of all members.

Public Member Functions

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

Static Public Member Functions

int atoBool (const char *s)


Constructor & Destructor Documentation

MGridforceParamsList::MGridforceParamsList  )  [inline]
 

Definition at line 46 of file MGridforceParams.h.

00046                          {
00047     clear();
00048   }

MGridforceParamsList::~MGridforceParamsList  )  [inline]
 

Definition at line 50 of file MGridforceParams.h.

00051   {
00052     MGFElem* cur;
00053     while (head != NULL) {
00054       cur = head;
00055       head = cur->nxt;
00056       delete cur;
00057     }
00058     clear();
00059   }


Member Function Documentation

MGridforceParams * MGridforceParamsList::add const char *  key  ) 
 

Definition at line 32 of file MGridforceParams.C.

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

Referenced by unpack_data().

00033 {
00034     // If the key is already in the list, we can't add it
00035     if (find_key(key)!=NULL) {
00036       return NULL;
00037     }
00038     
00039     MGFElem* new_elem = new MGFElem();
00040     int len = strlen(key);
00041     MGridforceParams* elem = &(new_elem->elem);
00042     elem->gridforceKey = new char[len+1];
00043     strncpy(elem->gridforceKey,key,len+1);
00044     elem->gridforceVfile = NULL;
00045     elem->gridforceFile = NULL;
00046     elem->gridforceCol = NULL;
00047     elem->gridforceQcol = NULL;
00048     elem->next = NULL;
00049     new_elem->nxt = NULL;
00050     if (head == NULL) {
00051       head = new_elem;
00052     }
00053     if (tail != NULL) {
00054       tail->nxt = new_elem;
00055       tail->elem.next = elem;
00056     }
00057     tail = new_elem;
00058     n_elements++;
00059     
00060     return elem;
00061 }

int MGridforceParamsList::atoBool const char *  s  )  [inline, static]
 

Definition at line 82 of file MGridforceParams.h.

00083   {
00084     if (!strcasecmp(s, "on")) return 1;
00085     if (!strcasecmp(s, "off")) return 0;
00086     if (!strcasecmp(s, "true")) return 1;
00087     if (!strcasecmp(s, "false")) return 0;
00088     if (!strcasecmp(s, "yes")) return 1;
00089     if (!strcasecmp(s, "no")) return 0;
00090     if (!strcasecmp(s, "1")) return 1;
00091     if (!strcasecmp(s, "0")) return 0;
00092     return -1;
00093   }

void MGridforceParamsList::clear  )  [inline]
 

Definition at line 64 of file MGridforceParams.h.

Referenced by SimParameters::receive_SimParameters().

00064                {
00065     head = tail = NULL;
00066     n_elements = 0;
00067   }

MGridforceParams * MGridforceParamsList::find_key const char *  key  ) 
 

Definition at line 13 of file MGridforceParams.C.

Referenced by add().

00014 {
00015     MGFElem* cur = head;
00016     MGFElem* found = NULL;
00017     MGridforceParams* result = NULL;
00018     
00019     while (found == NULL && cur != NULL) {
00020        if (!strcasecmp((cur->elem).gridforceKey,key)) {
00021         found = cur;
00022       } else {
00023         cur = cur->nxt;
00024       }
00025     }
00026     if (found != NULL) {
00027       result = &(found->elem);
00028     }
00029     return result;
00030 }

MGridforceParams* MGridforceParamsList::get_first  )  [inline]
 

Definition at line 72 of file MGridforceParams.h.

Referenced by pack_data().

00072                                 {
00073     if (head == NULL) {
00074       return NULL;
00075     } else return &(head->elem);
00076   }

void MGridforceParamsList::pack_data MOStream msg  ) 
 

Definition at line 63 of file MGridforceParams.C.

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

Referenced by SimParameters::send_SimParameters().

00064 {
00065     int i = n_elements;
00066     msg->put(n_elements);
00067     MGridforceParams *elem = get_first();
00068     while (elem != NULL) {
00069       int len;
00070       len = strlen(elem->gridforceKey) + 1;
00071       msg->put(len);
00072       msg->put(len,elem->gridforceKey);
00073 
00074       len = strlen(elem->gridforceVfile) + 1;
00075       msg->put(len);
00076       msg->put(len,elem->gridforceVfile);
00077 
00078       Vector v = elem->gridforceScale;
00079       msg->put(&v);
00080       
00081       len = strlen(elem->gridforceFile) + 1;
00082       msg->put(len);
00083       msg->put(len,elem->gridforceFile);
00084       
00085       len = strlen(elem->gridforceCol) + 1;
00086       msg->put(len);
00087       msg->put(len,elem->gridforceCol);
00088       
00089       if (elem->gridforceQcol == NULL) 
00090         msg->put(1); // Qcol_is_null = true
00091       else {
00092         msg->put(0); // Qcol_is_null = false
00093         len = strlen(elem->gridforceQcol) + 1;
00094         msg->put(len);
00095         msg->put(len,elem->gridforceQcol);
00096       }
00097       
00098       v = elem->gridforceVOffset;
00099       msg->put(&v);
00100       
00101       short boolvals[4];
00102       boolvals[0] = (elem->gridforceCont[0] ? 1 : 0);
00103       boolvals[1] = (elem->gridforceCont[1] ? 1 : 0);
00104       boolvals[2] = (elem->gridforceCont[2] ? 1 : 0);
00105       boolvals[3] = (elem->gridforceVolts ? 1 : 0);
00106       msg->put(4,boolvals);
00107       
00108       i--;
00109       elem = elem->next;
00110     }
00111     if (i != 0) {
00112       NAMD_die("MGridforceParams message packing error\n");
00113     }
00114     return;
00115 }

void MGridforceParamsList::unpack_data MIStream msg  ) 
 

Definition at line 117 of file MGridforceParams.C.

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

Referenced by SimParameters::receive_SimParameters().

00118 {
00119     int elements;
00120     msg->get(elements);
00121     
00122     for(int i=0; i < elements; i++) {
00123       // Get key
00124       int len;
00125       msg->get(len);
00126       char *key = new char[len];
00127       msg->get(len,key);
00128       MGridforceParams *elem = add(key);
00129       
00130       msg->get(len);
00131       char *str = new char[len];
00132       msg->get(len,str);
00133       elem->gridforceVfile = str;
00134 
00135       Vector v;
00136       msg->get(&v);
00137       elem->gridforceScale = v;
00138       
00139       msg->get(len);
00140       str = new char[len];
00141       msg->get(len,str);
00142       elem->gridforceFile = str;
00143       
00144       msg->get(len);
00145       str = new char[len];
00146       msg->get(len,str);
00147       elem->gridforceCol = str;
00148       
00149       int qcol_is_null;
00150       msg->get(qcol_is_null);
00151       if (qcol_is_null)
00152         elem->gridforceQcol = NULL;
00153       else {
00154         msg->get(len);
00155         str = new char[len];
00156         msg->get(len,str);
00157         elem->gridforceQcol = str;
00158       }
00159       
00160       msg->get(&v);
00161       elem->gridforceVOffset = v;
00162       
00163       short boolvals[4];
00164       msg->get(4,boolvals);
00165       elem->gridforceCont[0] = ( boolvals[0] != 0 );
00166       elem->gridforceCont[1] = ( boolvals[1] != 0 );
00167       elem->gridforceCont[2] = ( boolvals[2] != 0 );
00168       elem->gridforceVolts = ( boolvals[3] != 0 );
00169       
00170       delete [] key;
00171     }
00172 }


The documentation for this class was generated from the following files:
Generated on Tue Nov 24 04:07:50 2009 for NAMD by  doxygen 1.3.9.1