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 202 of file structures.h.

Constructor & Destructor Documentation

◆ TupleSignature() [1/3]

TupleSignature::TupleSignature ( )
inline

Definition at line 220 of file structures.h.

References isReal, and offset.

220  {
221  offset = NULL;
222  isReal = 1;
223  }

◆ TupleSignature() [2/3]

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

Definition at line 225 of file structures.h.

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

225  {
226  tupleType = t;
227  numOffset = n;
228  offset = new int[n];
229  tupleParamType = paramType;
230  isReal = ir;
231  }
TupleSigType tupleType
Definition: structures.h:205
Index tupleParamType
Definition: structures.h:212

◆ TupleSignature() [3/3]

TupleSignature::TupleSignature ( 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  offset = new int[numOffset];
236  setOffsets(oneSig.offset);
238  isReal = oneSig.isReal;
239  }
void setOffsets(int *offs)
Definition: structures.h:272
TupleSigType tupleType
Definition: structures.h:205
Index tupleParamType
Definition: structures.h:212

◆ ~TupleSignature()

TupleSignature::~TupleSignature ( )
inline

Definition at line 269 of file structures.h.

References offset.

269  {
270  if(offset) delete[] offset;
271  }

Member Function Documentation

◆ hash()

int TupleSignature::hash ( void  ) const
inline

Definition at line 314 of file structures.h.

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

314  {
315  unsigned int code = tupleType;
316  unsigned int codesz = 8 * sizeof(int);
317  unsigned int shift = codesz / numOffset;
318 
319  if (shift == 0) shift=1;
320  unsigned int i;
321  for(i=0; i < numOffset; i++) {
322  code = circShift(code,shift);
323  code ^= offset[i];
324  }
325  return code;
326  }
TupleSigType tupleType
Definition: structures.h:205
unsigned int circShift(unsigned int h, unsigned int by)
Definition: structures.h:196

◆ isEmpty()

int TupleSignature::isEmpty ( )
inline

Definition at line 305 of file structures.h.

References offset.

305  {
306  return offset==NULL;
307  }

◆ operator=()

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

Definition at line 240 of file structures.h.

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

240  {
241  tupleType = oneSig.tupleType;
242  numOffset = oneSig.numOffset;
243  if(offset) delete [] offset;
244  offset = new int[numOffset];
245  setOffsets(oneSig.offset);
247  isReal = oneSig.isReal;
248  return *this;
249  }
void setOffsets(int *offs)
Definition: structures.h:272
TupleSigType tupleType
Definition: structures.h:205
Index tupleParamType
Definition: structures.h:212

◆ operator==()

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

Definition at line 250 of file structures.h.

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

250  {
251  if(tupleType!=sig.tupleType)
252  return 0;
253 
254  if(tupleParamType != sig.tupleParamType)
255  return 0;
256 
257  if(isReal != sig.isReal)
258  return 0;
259 
260  if(numOffset != sig.numOffset) return 0;
261 
262  int equalCnt=0;
263 
264  for(int i=0; i<numOffset; i++){
265  equalCnt += (offset[i]==sig.offset[i]);
266  }
267  return equalCnt==numOffset;
268  }
TupleSigType tupleType
Definition: structures.h:205
Index tupleParamType
Definition: structures.h:212

◆ output()

void TupleSignature::output ( FILE *  ofp)
inline

Definition at line 308 of file structures.h.

References isReal, numOffset, offset, and tupleParamType.

Referenced by outputCompressedFile().

308  {
309  for(int i=0; i<numOffset; i++)
310  fprintf(ofp, "%d ", offset[i]);
311  fprintf(ofp, "| %d | %d\n", tupleParamType, isReal);
312  }
Index tupleParamType
Definition: structures.h:212

◆ pack()

void TupleSignature::pack ( MOStream msg)

◆ setEmpty()

void TupleSignature::setEmpty ( )
inline

Definition at line 301 of file structures.h.

References offset.

301  {
302  delete [] offset;
303  offset = NULL;
304  }

◆ setOffsets()

void TupleSignature::setOffsets ( int *  offs)
inline

Definition at line 272 of file structures.h.

References numOffset, and offset.

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

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

◆ unpack()

void TupleSignature::unpack ( MIStream msg)

Member Data Documentation

◆ isReal

char TupleSignature::isReal

◆ numOffset

int TupleSignature::numOffset

Definition at line 206 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 205 of file structures.h.

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


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