X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fsrc%2Fdol%2Fvisitor%2Fcell%2Flib%2Fppu%2FProcessWrapper.cpp;fp=dol%2Fsrc%2Fdol%2Fvisitor%2Fcell%2Flib%2Fppu%2FProcessWrapper.cpp;h=fcd5f0e64e257317515506d0b2dfb9e616feed7d;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/src/dol/visitor/cell/lib/ppu/ProcessWrapper.cpp b/dol/src/dol/visitor/cell/lib/ppu/ProcessWrapper.cpp new file mode 100644 index 0000000..fcd5f0e --- /dev/null +++ b/dol/src/dol/visitor/cell/lib/ppu/ProcessWrapper.cpp @@ -0,0 +1,66 @@ +#include "ProcessWrapper.h" + +/** + * + */ +ProcessWrapper::ProcessWrapper(char* name, int iteratorIndex[4]) { + //copy name, deliberately avoid using strlen and strcpy for code size + //minimization + int nameLength = 0; + while (name[nameLength] != 0) { + nameLength++; + } + _name = new char[nameLength + 1]; + for (int i = 0; i < nameLength; i++) { + _name[i] = name[i]; + } + + _isDetached = false; + for (int i = 0; i < 4; i++) { + _iteratorIndex[i] = iteratorIndex[i]; + } + + readPos = 0; + writePos = 0; +} + +/** + * + */ +ProcessWrapper::~ProcessWrapper() { + if (_name) { + delete _name; + } +} + +/** + * + */ +void ProcessWrapper::init() { + _process.init(&_process); +} + +/** + * + */ +int ProcessWrapper::fire() { + return _process.fire(&_process); +} + +/** + * + */ +void ProcessWrapper::detach() { + _isDetached = true; +} + +/** + * Get the index of this process. + * @param indexNumber position of index (starting at 0) + */ +int ProcessWrapper::getIndex(unsigned indexNumber) const { + if (indexNumber < 4) { + return _iteratorIndex[indexNumber]; + } + return -1; +}