TITANIC: Implement TTword copy

This commit is contained in:
Paul Gilbert
2016-07-10 16:39:25 -04:00
parent ae5cd8d8dd
commit 06876335cd
2 changed files with 38 additions and 1 deletions
+33 -1
View File
@@ -33,7 +33,39 @@ TTword::TTword(TTString &str, int mode, int val2) : _string(str),
}
TTword::TTword(TTword *src) {
// TODO
if (src->getStatus() != SS_VALID) {
_status = SS_5;
return;
}
_string = src->_string;
_wordMode = src->_wordMode;
_field1C = src->_field1C;
_field20 = src->_field20;
_synP = nullptr;
TTsynonym *priorSyn = nullptr;
for (TTsynonym *synP = _synP; synP && !_status;) {
TTsynonym *newSyn = new TTsynonym(synP);
if (!newSyn) {
_status = SS_7;
} else {
newSyn->_pPrior = priorSyn;
newSyn->_pNext = nullptr;
if (priorSyn) {
priorSyn->_pNext = newSyn;
} else {
_synP = newSyn;
}
priorSyn = newSyn;
}
}
_pNext = src->_pNext;
_field24 = src->_field24;
_field28 = src->_field28;
}
void TTword::deleteSiblings() {
+5
View File
@@ -78,6 +78,11 @@ public:
const char *c_str() const { return _string.c_str(); }
operator const char *() const { return c_str(); }
/**
* Return the status of the word
*/
TTStringStatus getStatus() const { return _status; }
/**
* Creates a copy of the word
*/