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

Constructor & Destructor Documentation

TupleSignature::TupleSignature ( )
inline

Definition at line 210 of file structures.h.

References isReal, and offset.

210  {
211  offset = NULL;
212  isReal = 1;
213  }
TupleSignature::TupleSignature ( int  n,
TupleSigType  t,
Index  paramType,
char  ir = 1 
)
inline

Definition at line 215 of file structures.h.

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

215  {
216  tupleType = t;
217  numOffset = n;
218  offset = new int[n];
219  tupleParamType = paramType;
220  isReal = ir;
221  }
TupleSigType tupleType
Definition: structures.h:195
Index tupleParamType
Definition: structures.h:202
TupleSignature::TupleSignature ( const TupleSignature oneSig)
inline

Definition at line 222 of file structures.h.

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

222  {
223  tupleType = oneSig.tupleType;
224  numOffset = oneSig.numOffset;
225  offset = new int[numOffset];
226  setOffsets(oneSig.offset);
228  isReal = oneSig.isReal;
229  }
void setOffsets(int *offs)
Definition: structures.h:262
TupleSigType tupleType
Definition: structures.h:195
Index tupleParamType
Definition: structures.h:202
TupleSignature::~TupleSignature ( )
inline

Definition at line 259 of file structures.h.

References offset.

259  {
260  if(offset) delete[] offset;
261  }

Member Function Documentation

int TupleSignature::hash ( void  ) const
inline

Definition at line 304 of file structures.h.

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

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

Definition at line 295 of file structures.h.

References offset.

295  {
296  return offset==NULL;
297  }
TupleSignature& TupleSignature::operator= ( const TupleSignature oneSig)
inline

Definition at line 230 of file structures.h.

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

230  {
231  tupleType = oneSig.tupleType;
232  numOffset = oneSig.numOffset;
233  if(offset) delete [] offset;
234  offset = new int[numOffset];
235  setOffsets(oneSig.offset);
237  isReal = oneSig.isReal;
238  return *this;
239  }
void setOffsets(int *offs)
Definition: structures.h:262
TupleSigType tupleType
Definition: structures.h:195
Index tupleParamType
Definition: structures.h:202
int TupleSignature::operator== ( const TupleSignature sig) const
inline

Definition at line 240 of file structures.h.

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

240  {
241  if(tupleType!=sig.tupleType)
242  return 0;
243 
244  if(tupleParamType != sig.tupleParamType)
245  return 0;
246 
247  if(isReal != sig.isReal)
248  return 0;
249 
250  if(numOffset != sig.numOffset) return 0;
251 
252  int equalCnt=0;
253 
254  for(int i=0; i<numOffset; i++){
255  equalCnt += (offset[i]==sig.offset[i]);
256  }
257  return equalCnt==numOffset;
258  }
TupleSigType tupleType
Definition: structures.h:195
Index tupleParamType
Definition: structures.h:202
void TupleSignature::output ( FILE *  ofp)
inline

Definition at line 298 of file structures.h.

References isReal, numOffset, offset, and tupleParamType.

Referenced by outputCompressedFile().

298  {
299  for(int i=0; i<numOffset; i++)
300  fprintf(ofp, "%d ", offset[i]);
301  fprintf(ofp, "| %d | %d\n", tupleParamType, isReal);
302  }
Index tupleParamType
Definition: structures.h:202
void TupleSignature::pack ( MOStream msg)
void TupleSignature::setEmpty ( )
inline

Definition at line 291 of file structures.h.

References offset.

291  {
292  delete [] offset;
293  offset = NULL;
294  }
void TupleSignature::setOffsets ( int *  offs)
inline

Definition at line 262 of file structures.h.

References numOffset, and offset.

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

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

Member Data Documentation

char TupleSignature::isReal
int TupleSignature::numOffset

Definition at line 196 of file structures.h.

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

int* TupleSignature::offset
Index TupleSignature::tupleParamType
TupleSigType TupleSignature::tupleType

Definition at line 195 of file structures.h.

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


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