#ifndef _PP_PROJ_H_ #define _PP_PROJ_H_ //*********************************************************************************** // C header for accessing PMAC Global, CSGlobal, Ptr vars // _PPScriptMode_ for Pmac Script like access global & csglobal // global Mypvar - access with "Mypvar" // global Myparray(32) - access with "Myparray(i)" // csglobal Myqvar - access with "Myqvar(i)" where "i" is Coord # // csglobal Myqarray(16) - access with "Myqvar(i,j)" where "j" is index // _EnumMode_ for Pmac enum data type checking on Set & Get global functions // Example // global Mypvar // csglobal Myqvar // "SetGlobalVar(Myqvar, data)" will give a compile error because its a csglobal var. // "SetCSGlobalVar(Mypvar, data)" will give a compile error because its a global var. //************************************************************************************ #ifdef _PPScriptMode_ enum globalP {_globalP_=-1}; enum globalParray {_globalParray_=-1}; enum csglobalQ {_csglobalQ_=-1}; enum csglobalQarray {_csglobalQarray_=-1}; enum ptrM {_ptrM_=-1}; enum ptrMarray {_ptrMarray_=-1}; void SetEnumGlobalVar(enum globalP var, double data) { pshm->P[var] = data; } double GetEnumGlobalVar(enum globalP var) { return pshm->P[var]; } void SetEnumGlobalArrayVar(enum globalParray var, unsigned index, double data) { pshm->P[(var + index)%MAX_P] = data; } double GetEnumGlobalArrayVar(enum globalParray var, unsigned index) { return pshm->P[(var + index)%MAX_P]; } void SetEnumCSGlobalVar(enum csglobalQ var, unsigned cs, double data) { pshm->Coord[cs % MAX_COORDS].Q[var] = data; } double GetEnumCSGlobalVar(enum csglobalQ var, unsigned cs) { return pshm->Coord[cs % MAX_COORDS].Q[var]; } void SetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs, double data) { pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q] = data; } double GetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs) { return pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q]; } void SetEnumPtrVar(enum ptrM var, double data) { im_write(pshm->Mdef + var, data, &pshm->Ldata); } double GetEnumPtrVar(enum ptrM var) { return im_read(pshm->Mdef + var, &pshm->Ldata); } void SetEnumPtrArrayVar(enum ptrMarray var, unsigned index, double data) { im_write(pshm->Mdef + ((var + index)%MAX_M), data, &pshm->Ldata); } double GetEnumPtrArrayVar(enum ptrMarray var, unsigned index) { return im_read(pshm->Mdef + ((var + index)%MAX_M), &pshm->Ldata); } #define SetGlobalVar(i, x) SetEnumGlobalVar(i, x) #define SetGlobalArrayVar(i, j, x) SetEnumGlobalArrayVar(i, j, x) #define GetGlobalVar(i) GetEnumGlobalVar(i) #define GetGlobalArrayVar(i, j) GetEnumGlobalArrayVar(i, j) #define SetCSGlobalVar(i, j, x) SetEnumCSGlobalVar(i, j, x) #define SetCSGlobalArrayVar(i, j, k, x) SetEnumCSGlobalArrayVar(i, j, k, x) #define GetCSGlobalVar(i, j) GetEnumCSGlobalVar(i, j) #define GetCSGlobalArrayVar(i, j, k) GetEnumCSGlobalArrayVar(i, j, k) #define SetPtrVar(i, x) SetEnumPtrVar(i, x) #define SetPtrArrayVar(i, j, x) SetEnumPtrArrayVar(i, j, x) #define GetPtrVar(i) GetEnumPtrVar(i) #define GetPtrArrayVar(i, j) GetEnumPtrArrayVar(i, j) // end of #ifdef _PPScriptMode_ #else #ifdef _EnumMode_ enum globalP {_globalP_=-1}; enum globalParray {_globalParray_=-1}; enum csglobalQ {_csglobalQ_=-1}; enum csglobalQarray {_csglobalQarray_=-1}; enum ptrM {_ptrM_=-1}; enum ptrMarray {_ptrMarray_=-1}; void SetEnumGlobalVar(enum globalP var, double data) { pshm->P[var] = data; } double GetEnumGlobalVar(enum globalP var) { return pshm->P[var]; } void SetEnumGlobalArrayVar(enum globalParray var, unsigned index, double data) { pshm->P[(var + index)%MAX_P] = data; } double GetEnumGlobalArrayVar(enum globalParray var, unsigned index) { return pshm->P[(var + index)%MAX_P]; } void SetEnumCSGlobalVar(enum csglobalQ var, unsigned cs, double data) { pshm->Coord[cs % MAX_COORDS].Q[var] = data; } double GetEnumCSGlobalVar(enum csglobalQ var, unsigned cs) { return pshm->Coord[cs % MAX_COORDS].Q[var]; } void SetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs, double data) { pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q] = data; } double GetEnumCSGlobalArrayVar(enum csglobalQarray var, unsigned index, unsigned cs) { return pshm->Coord[cs % MAX_COORDS].Q[(var + index)%MAX_Q]; } void SetEnumPtrVar(enum ptrM var, double data) { im_write(pshm->Mdef + var, data, &pshm->Ldata); } double GetEnumPtrVar(enum ptrM var) { return im_read(pshm->Mdef + var, &pshm->Ldata); } void SetEnumPtrArrayVar(enum ptrMarray var, unsigned index, double data) { im_write(pshm->Mdef + ((var + index)%MAX_M), data, &pshm->Ldata); } double GetEnumPtrArrayVar(enum ptrMarray var, unsigned index) { return im_read(pshm->Mdef + ((var + index)%MAX_M), &pshm->Ldata); } #define SetGlobalVar(i, x) SetEnumGlobalVar(i, x) #define SetGlobalArrayVar(i, j, x) SetEnumGlobalArrayVar(i, j, x) #define GetGlobalVar(i) GetEnumGlobalVar(i) #define GetGlobalArrayVar(i, j) GetEnumGlobalArrayVar(i, j) #define SetCSGlobalVar(i, j, x) SetEnumCSGlobalVar(i, j, x) #define SetCSGlobalArrayVar(i, j, k, x) SetEnumCSGlobalArrayVar(i, j, k, x) #define GetCSGlobalVar(i, j) GetEnumCSGlobalVar(i, j) #define GetCSGlobalArrayVar(i, j, k) GetEnumCSGlobalArrayVar(i, j, k) #define SetPtrVar(i, x) SetEnumPtrVar(i, x) #define SetPtrArrayVar(i, j, x) SetEnumPtrArrayVar(i, j, x) #define GetPtrVar(i) GetEnumPtrVar(i) #define GetPtrArrayVar(i, j) GetEnumPtrArrayVar(i, j) // end of #ifdef _EnumMode_ #else // ***** Standard default mode ***** #endif #endif #endif //_PP_PROJ_H_