NAMD
Public Member Functions | Public Attributes | List of all members
TupleSignature Class Reference

#include <structures.h>

Public Member Functions

 TupleSignature ()
 
 TupleSignature (int n, TupleSigType t, Index paramType, char ir=1)
 
 TupleSignature (const TupleSignature &oneSig)
 
TupleSignatureoperator= (const TupleSignature &oneSig)
 
int operator== (const TupleSignature &sig) const
 
 ~TupleSignature ()
 
void setOffsets (int *offs)
 
void setEmpty ()
 
int isEmpty ()
 
void output (FILE *ofp)
 
int hash () const
 
void pack (MOStream *msg)
 
void unpack (MIStream *msg)
 

Public Attributes

TupleSigType tupleType
 
int numOffset
 
int * offset
 
Index tupleParamType
 
char isReal
 

Detailed Description

Definition at line 194 of file structures.h.

Constructor & Destructor Documentation

◆ TupleSignature() [1/3]

TupleSignature::TupleSignature ( )
inline

Definition at line 212 of file structures.h.

References isReal, and offset.

212  {
213  offset = NULL;
214  isReal = 1;
215  }

◆ TupleSignature() [2/3]

TupleSignature::TupleSignature ( int  n,
TupleSigType  t,
Index  paramType,
char  ir = 1 
)
inline

Definition at line 217 of file structures.h.

References isReal, numOffset, offset, tupleParamType, and tupleType.

217  {
218  tupleType = t;
219  numOffset = n;
220  offset = new int[n];
221  tupleParamType = paramType;
222  isReal = ir;
223  }
TupleSigType tupleType
Definition: structures.h:197
Index tupleParamType
Definition: structures.h:204

◆ TupleSignature() [3/3]

TupleSignature::TupleSignature ( const TupleSignature oneSig)
inline

Definition at line 224 of file structures.h.

References isReal, numOffset, offset, setOffsets(), tupleParamType, and tupleType.

224  {
225  tupleType = oneSig.tupleType;
226  numOffset = oneSig.numOffset;
227  offset = new int[numOffset];
228  setOffsets(oneSig.offset);
230  isReal = oneSig.isReal;
231  }
void setOffsets(int *offs)
Definition: structures.h:264
TupleSigType tupleType
Definition: structures.h:197
Index tupleParamType
Definition: structures.h:204

◆ ~TupleSignature()

TupleSignature::~TupleSignature ( )
inline

Definition at line 261 of file structures.h.

References offset.

261  {
262  if(offset) delete[] offset;
263  }

Member Function Documentation

◆ hash()

int TupleSignature::hash ( void  ) const
inline

Definition at line 306 of file structures.h.

References circShift(), numOffset, offset, and tupleType.

306  {
307  unsigned int code = tupleType;
308  unsigned int codesz = 8 * sizeof(int);
309  unsigned int shift = codesz / numOffset;
310 
311  if (shift == 0) shift=1;
312  unsigned int i;
313  for(i=0; i < numOffset; i++) {
314  code = circShift(code,shift);
315  code ^= offset[i];
316  }
317  return code;
318  }
TupleSigType tupleType
Definition: structures.h:197
unsigned int circShift(unsigned int h, unsigned int by)
Definition: structures.h:188

◆ isEmpty()

int TupleSignature::isEmpty ( )
inline

Definition at line 297 of file structures.h.

References offset.

297  {
298  return offset==NULL;
299  }

◆ operator=()

TupleSignature& TupleSignature::operator= ( const TupleSignature oneSig)
inline

Definition at line 232 of file structures.h.

References isReal, numOffset, offset, setOffsets(), tupleParamType, and tupleType.

232  {
233  tupleType = oneSig.tupleType;
234  numOffset = oneSig.numOffset;
235  if(offset) delete [] offset;
236  offset = new int[numOffset];
237  setOffsets(oneSig.offset);
239  isReal = oneSig.isReal;
240  return *this;
241  }
void setOffsets(int *offs)
Definition: structures.h:264
TupleSigType tupleType
Definition: structures.h:197
Index tupleParamType
Definition: structures.h:204

◆ operator==()

int TupleSignature::operator== ( const TupleSignature sig) const
inline

Definition at line 242 of file structures.h.

References isReal, numOffset, offset, tupleParamType, and tupleType.

242  {
243  if(tupleType!=sig.tupleType)
244  return 0;
245 
246  if(tupleParamType != sig.tupleParamType)
247  return 0;
248 
249  if(isReal != sig.isReal)
250  return 0;
251 
252  if(numOffset != sig.numOffset) return 0;
253 
254  int equalCnt=0;
255 
256  for(int i=0; i<numOffset; i++){
257  equalCnt += (offset[i]==sig.offset[i]);
258  }
259  return equalCnt==numOffset;
260  }
TupleSigType tupleType
Definition: structures.h:197
Index tupleParamType
Definition: structures.h:204

◆ output()

void TupleSignature::output ( FILE *  ofp)
inline

Definition at line 300 of file structures.h.

References isReal, numOffset, offset, and tupleParamType.

Referenced by outputCompressedFile().

300  {
301  for(int i=0; i<numOffset; i++)
302  fprintf(ofp, "%d ", offset[i]);
303  fprintf(ofp, "| %d | %d\n", tupleParamType, isReal);
304  }
Index tupleParamType
Definition: structures.h:204

◆ pack()

void TupleSignature::pack ( MOStream msg)

◆ setEmpty()

void TupleSignature::setEmpty ( )
inline

Definition at line 293 of file structures.h.

References offset.

293  {
294  delete [] offset;
295  offset = NULL;
296  }

◆ setOffsets()

void TupleSignature::setOffsets ( int *  offs)
inline

Definition at line 264 of file structures.h.

References numOffset, and offset.

Referenced by buildAngleData(), buildCrosstermData(), buildDihedralData(), buildImproperData(), operator=(), and TupleSignature().

264  {
265  for(int i=0; i<numOffset; i++)
266  offset[i] = offs[i];
267  //sort the offset in increasing order
268  //based on the input files, this offset is almost sorted increasingly
269  //Therefore using insertion sort
270  /*switch(numOffset){
271  case 1:
272  break;
273  case 2:
274  if(offset[0]>offset[1]){
275  int tmp = offset[0];
276  offset[0] = offset[1];
277  offset[1] = tmp;
278  }
279  break;
280  default: //insertion sort
281  for(int ii=1; ii<numOffset; ii++){
282  int val = offset[ii];
283  for(int jj=ii-1; jj>=0; jj--){
284  if(offset[jj]<val){
285  offset[jj+1] = offset[jj];
286  offset[jj] = val;
287  }else
288  break;
289  }
290  }
291  }*/
292  }

◆ unpack()

void TupleSignature::unpack ( MIStream msg)

Member Data Documentation

◆ isReal

char TupleSignature::isReal

◆ numOffset

int TupleSignature::numOffset

Definition at line 198 of file structures.h.

Referenced by hash(), operator=(), operator==(), output(), setOffsets(), and TupleSignature().

◆ offset

int* TupleSignature::offset

◆ tupleParamType

Index TupleSignature::tupleParamType

◆ tupleType

TupleSigType TupleSignature::tupleType

Definition at line 197 of file structures.h.

Referenced by hash(), operator=(), operator==(), and TupleSignature().


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