rllib  1
Public Member Functions | Public Attributes | Private Attributes
rlPlcState Class Reference

#include <rlplc.h>

List of all members.

Public Member Functions

 rlPlcState (int numInt=100, int numFloat=100, int numDouble=0)
virtual ~rlPlcState ()
void rememberState ()
int intChanged (int index)
int floatChanged (int index)
int doubleChanged (int index)
int intHasIncreased (int index)
int floatHasIncreased (int index)
int doubleHasIncreased (int index)
int intHasDecreased (int index)
int floatHasDecreased (int index)
int doubleHasDecreased (int index)
int deltaInt (int index)
float deltaFloat (int index)
double deltaDouble (int index)
void set (int index, int bit)
void clear (int index, int bit)
int isSet (int index, int bit)
int isClear (int index, int bit)
int hasBeenSet (int index, int bit)
int hasBeenCleared (int index, int bit)
int maxInt ()
int maxFloat ()
int maxDouble ()

Public Attributes

int * i
int * i_old
float * f
float * f_old
double * d
double * d_old

Private Attributes

int max_int
int max_float
int max_double

Detailed Description

Definition at line 21 of file rlplc.h.


Constructor & Destructor Documentation

rlPlcState::rlPlcState ( int  numInt = 100,
int  numFloat = 100,
int  numDouble = 0 
)

Definition at line 19 of file rlplc.cpp.

{
  max_int = numInt;
  if(max_int <= 0) max_int = 1;
  max_float = numFloat;
  if(max_float <= 0) max_float = 1;
  max_double = numDouble;
  if(max_double <= 0) max_double = 1;
  i     = new int[max_int];
  i_old = new int[max_int];
  f     = new float[max_float];
  f_old = new float[max_float];
  d     = new double[max_double];
  d_old = new double[max_double];
  memset(i    ,0,sizeof(int)*max_int);
  memset(i_old,0,sizeof(int)*max_int);
  memset(f    ,0,sizeof(float)*max_float);
  memset(f_old,0,sizeof(float)*max_float);
  memset(d    ,0,sizeof(double)*max_double);
  memset(d_old,0,sizeof(double)*max_double);
}
rlPlcState::~rlPlcState ( ) [virtual]

Definition at line 41 of file rlplc.cpp.

{
  delete [] i;
  delete [] i_old;
  delete [] f;
  delete [] f_old;
  delete [] d;
  delete [] d_old;
}

Member Function Documentation

void rlPlcState::clear ( int  index,
int  bit 
)

Definition at line 145 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return;
  i[index] = i[index] & ~bit;
}
double rlPlcState::deltaDouble ( int  index)

Definition at line 133 of file rlplc.cpp.

{
  if(index<0 || index >= max_double) return 0;
  return d[index] - d_old[index];
}
float rlPlcState::deltaFloat ( int  index)

Definition at line 127 of file rlplc.cpp.

{
  if(index<0 || index >= max_float) return 0;
  return f[index] - f_old[index];
}
int rlPlcState::deltaInt ( int  index)

Definition at line 121 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  return i[index] - i_old[index];
}
int rlPlcState::doubleChanged ( int  index)

Definition at line 72 of file rlplc.cpp.

{
  if(index<0 || index >= max_double) return 0;
  if(d[index] == d_old[index])       return 0;
  else                               return 1;
}
int rlPlcState::doubleHasDecreased ( int  index)

Definition at line 114 of file rlplc.cpp.

{
  if(index<0 || index >= max_double) return 0;
  if(d[index] < d_old[index])        return 1;
  else                               return 0;
}
int rlPlcState::doubleHasIncreased ( int  index)

Definition at line 93 of file rlplc.cpp.

{
  if(index<0 || index >= max_double) return 0;
  if(d[index] > d_old[index])        return 1;
  else                               return 0;
}
int rlPlcState::floatChanged ( int  index)

Definition at line 65 of file rlplc.cpp.

{
  if(index<0 || index >= max_float) return 0;
  if(f[index] == f_old[index])      return 0;
  else                              return 1;
}
int rlPlcState::floatHasDecreased ( int  index)

Definition at line 107 of file rlplc.cpp.

{
  if(index<0 || index >= max_float) return 0;
  if(f[index] < f_old[index])       return 1;
  else                              return 0;
}
int rlPlcState::floatHasIncreased ( int  index)

Definition at line 86 of file rlplc.cpp.

{
  if(index<0 || index >= max_float) return 0;
  if(f[index] > f_old[index])       return 1;
  else                              return 0;
}
int rlPlcState::hasBeenCleared ( int  index,
int  bit 
)

Definition at line 176 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  if((i[index] & bit) == 0) // is bit clear ?
  {
    if((i_old[index] & bit) == 0) return 0; // both are clear
    else                          return 1; // old one was set
  }
  return 0;
}
int rlPlcState::hasBeenSet ( int  index,
int  bit 
)

Definition at line 165 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  if(i[index] & bit) // is bit set ?
  {
    if(i_old[index] & bit) return 0; // both are set
    else                   return 1; // old one was not set
  }
  return 0;
}
int rlPlcState::intChanged ( int  index)

Definition at line 58 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  if(i[index] == i_old[index])    return 0;
  else                            return 1;
}
int rlPlcState::intHasDecreased ( int  index)

Definition at line 100 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  if(i[index] < i_old[index])     return 1;
  else                            return 0;
}
int rlPlcState::intHasIncreased ( int  index)

Definition at line 79 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  if(i[index] > i_old[index])     return 1;
  else                            return 0;
}
int rlPlcState::isClear ( int  index,
int  bit 
)

Definition at line 158 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  if(i[index] & bit) return 0;
  else               return 1;
}
int rlPlcState::isSet ( int  index,
int  bit 
)

Definition at line 151 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return 0;
  if(i[index] & bit) return 1;
  else               return 0;
}
int rlPlcState::maxDouble ( )

Definition at line 197 of file rlplc.cpp.

{
  return max_float - 1;
}
int rlPlcState::maxFloat ( )

Definition at line 192 of file rlplc.cpp.

{
  return max_float - 1;
}
int rlPlcState::maxInt ( )

Definition at line 187 of file rlplc.cpp.

{
  return max_int - 1;
}
void rlPlcState::rememberState ( )

Definition at line 51 of file rlplc.cpp.

{
  memcpy(i_old,i,sizeof(int)*max_int);
  memcpy(f_old,f,sizeof(float)*max_float);
  memcpy(d_old,d,sizeof(double)*max_double);
}
void rlPlcState::set ( int  index,
int  bit 
)

Definition at line 139 of file rlplc.cpp.

{
  if(index<0 || index >= max_int) return;
  i[index] = i[index] | bit;
}

Member Data Documentation

double* rlPlcState::d

Definition at line 28 of file rlplc.h.

Definition at line 28 of file rlplc.h.

float* rlPlcState::f

Definition at line 27 of file rlplc.h.

Definition at line 27 of file rlplc.h.

Definition at line 26 of file rlplc.h.

Definition at line 26 of file rlplc.h.

int rlPlcState::max_double [private]

Definition at line 53 of file rlplc.h.

int rlPlcState::max_float [private]

Definition at line 53 of file rlplc.h.

int rlPlcState::max_int [private]

Definition at line 53 of file rlplc.h.


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