All pastes #2079492 Raw Edit

Something

public text v1 · immutable
#2079492 ·published 2011-09-01 23:22 UTC
rendered paste body
#include <iostream>
#include <sstream>
#include <fstream>
#include <stdlib.h>
#include <windows.h>
using namespace std;

int OldIndex[2] = {0};
int OldSize;
int NewIndex = 0;
string List[2][50000][2];

void FindSame(string NewString) {
	while(1) {
		if(OldIndex[0]>OldSize) {
			break;
		}
		if(NewString.compare(List[1][OldIndex[0]][0])==0) {
			List[0][NewIndex][0].clear();
			OldIndex[1] = OldIndex[0];
			break;
		}
		OldIndex[0]++;
		if(NewString.compare(List[1][OldIndex[0]][0])<0) {
			break;
		}
	}
}

void ListInsert() {
	int a;
	while(1) {
		if(OldIndex[0]>OldSize) {
			OldSize++;
			List[0][OldIndex[0]][0] = List[1][NewIndex][0];
			OldIndex[0]++;
			break;
		}
		if(List[1][NewIndex][1].compare(List[0][OldIndex[0]][1])==0) {
			List[0][OldIndex[0]][0] = List[1][NewIndex][0];
			break;
		}
		if(List[1][NewIndex][1].compare(List[0][OldIndex[0]][1])<0) {
			OldSize++;
			OldIndex[0]++;
			a = OldSize;
			while(a>(OldIndex[0]+1)) {
				List[0][a][0] = List[0][a-1][0];
				a--;
			}

			List[0][OldIndex[0]][0] = List[1][NewIndex][0];
			break;
		}
		OldIndex[0]++;
	}
}

void MakeRelativePath(string* Char, string RelativePath) {
	char buffer[MAX_PATH];
	GetModuleFileName( NULL, buffer, MAX_PATH );
	string::size_type pos = string( buffer ).find_last_of( "\\/" );
	Char->clear();
	Char->append(string( buffer ).substr( 0, pos));
	Char->append("\\");
	Char->append(RelativePath);
}

int main() {
	string File[4];
	bool StreamState[3];
	int NewSize;
	char *Path;
	string Nigger;
	stringstream Buffer[3];

	MakeRelativePath(&Nigger, "NewStrings.txt");
	Path = (char*)Nigger.c_str();
	ifstream Stream1(Path);
	Buffer[0] << Stream1.rdbuf();
	File[0] = Buffer[0].str();
	StreamState[0] = !Stream1;

	MakeRelativePath(&Nigger, "OldStrings.txt");
	Path = (char*)Nigger.c_str();
	ifstream Stream2(Path);
	Buffer[1] << Stream2.rdbuf();
	File[1] = Buffer[1].str();
	StreamState[1] = !Stream2;

	MakeRelativePath(&Nigger, "Translate.txt");
	Path = (char*)Nigger.c_str();
	ifstream Stream3(Path);
	Buffer[2] << Stream3.rdbuf();
	File[2] = Buffer[2].str();
	StreamState[2] = !Stream3;

	if(StreamState[1]==true) {
		cout << "Error opening OldStrings.txt" << endl;
		Sleep(3000);
		return 0;
	}

	if(StreamState[2]==false) {
		cout << "Merging changes..." << endl;

		int a, c = 1;
		bool d;
		unsigned int b[2] = {0};
		while(c<3) {
			a = 0;
			b[0] = 0, b[1] = 0;
			d = true;
			while(1) {
				if(b[1]>File[c].length()){
					if(c==2) {
						NewSize = a;
					} else {
						OldSize = a;
					}
					break;
				} else {
					if((char)((File[c].substr(b[1],1)).c_str())[0]=='\n') {
						if((b[1]-b[0])>0) {
							List[c-1][a][0].append(File[c].substr(b[0],b[1]-b[0]));
						}
						b[0] = b[1] + 1;
						a++;
						d = true;
					} else {
						if((char)((File[c].substr(b[1],1)).c_str())[0]=='=' and d == true) {
							if((b[1]-b[0])>0) {
								List[c-1][a][1].append(File[c].substr(b[0],b[1]+1-b[0]));
								d = false;
							}
						}
					}
					b[1]++;
				}
			}
			c++;
		}

		while(NewIndex<=NewSize) {
			ListInsert();
			NewIndex++;
		}

		a = 0, c = 0;
		while(a<=OldSize) {
			if(List[0][a][0].length()>1) {
				if(c>0) {
					File[3].append("\n");
				}
				c++;
				File[3].append(List[0][a][0]);
			}
			a++;
		}

		cout << "Strings merging finished; GameStrings.txt created." << endl;
		if(c==1) {
			cout << "The file has " << c << " line." << endl;
		} else {
			cout << "The file has " << c << " lines." << endl;
		}

		ofstream StreamO("GameStrings.txt");
		StreamO << File[3];
		Sleep(3000);
	} else {
		if(StreamState[0]==true) {
			cout << "Error opening NewStrings.txt or Translator.txt" << endl;
			Sleep(3000);
			return 0;
		}

		cout << "Creating translator file..." << endl;

		int a, c = 0;
		unsigned int b[2] = {0};
		while(c<2) {
			a = 0;
			b[0] = 0, b[1] = 0;
			while(1) {
				if(b[1]>File[c].length()){
					if(c==0) {
						NewSize = a;
					} else {
						OldSize = a;
					}
					break;
				} else {
					if((char)((File[c].substr(b[1],1)).c_str())[0]=='\n') {
						if((b[1]-b[0])>0) {
							List[c][a][0].append(File[c].substr(b[0],b[1]-b[0]));
						}
						b[0] = b[1] + 1;
						a++;
					}
					b[1]++;
				}
			}
			c++;
		}

		while(NewIndex<=NewSize) {
			OldIndex[0] = OldIndex[1];
			FindSame(List[0][NewIndex][0]);
			NewIndex++;
		}

		a = 0, c = 0;
		while(a<=NewSize) {
			if(List[0][a][0].length()>1) {
				if(c>0) {
					File[3].append("\n");
				}
				c++;
				File[3].append(List[0][a][0]);
			}
			a++;
		}

		if(c>0) {
			cout << "Strings processing finished; Translate.txt created." << endl;
			if(c==1) {
				cout << "There was " << c << " updated line." << endl;
			} else {
				cout << "There were " << c << " updated lines." << endl;
			}

			ofstream StreamO("Translate.txt");
			StreamO << File[3];
		} else {
			cout << "Strings match; no file created." << endl;
		}
		Sleep(3000);
	}

	return 0;
}