bool addExistingFile(string fileName, string address, string owner) { string fileDirectory = getFilePath(fileName); if (!isSaved(fileName)) throw accessError(NOT_SAVED); if (!isExisting(address)) throw accessError(NO_FILE); if (!isAccessable(fileName, owner)) throw accessError(NOT_USER); diffTree tree(fileName); diffNode* start = tree.getTreePathByID(tree.currentVersion); diffNode* finish = tree.getTreePath(); modernizeFile(fileName, tree.getVersionsPath(start, finish)); vector<diffString> exf; vector<diffString> newf; ifstream existingFile(fileDirectory + '\\' + fileName); ifstream newFile(address); while (!existingFile.eof()) { diffString buf; buf.text = new char[MAX]; existingFile.getline(buf.text, MAX); buf.length = strlen(buf.text); exf.push_back(buf); } while (!newFile.eof()) { diffString buf; buf.text = new char[MAX]; newFile.getline(buf.text, MAX); buf.length = strlen(buf.text); newf.push_back(buf); } vector<diffString> difference = diff(exf, newf); showChangesVector(difference); diffNode* child = new diffNode; child->diffLine = difference; tree.addNode(finish, child); ofstream diffFile(fileDirectory + '\\' + fileName + "-diff.dat"); diffFile.close(); tree.printDiffTreeFile(fileName); deleteFile(fileName); addFile(fileName, address); return true; }
Disc* Field::getDisc(int column, int row) { if(!isAccessable(column, row)) return NULL; return currentDiscs.at(column).at(row); }