diff options
| author | Nicola Mettifogo | 2007-02-19 12:53:59 +0000 | 
|---|---|---|
| committer | Nicola Mettifogo | 2007-02-19 12:53:59 +0000 | 
| commit | 1121fe494856f0d45ac52ac8f4ce59022fbbdfd7 (patch) | |
| tree | 79d5c8e2fd3000c5ed6d278a3db9c478bde69c25 | |
| parent | 85a0a0299638fc2c85021132b6e869da51c23e4d (diff) | |
| download | scummvm-rg350-1121fe494856f0d45ac52ac8f4ce59022fbbdfd7.tar.gz scummvm-rg350-1121fe494856f0d45ac52ac8f4ce59022fbbdfd7.tar.bz2 scummvm-rg350-1121fe494856f0d45ac52ac8f4ce59022fbbdfd7.zip  | |
moved specialised parsing routines in parser.cpp, so code can be refactored more easily
svn-id: r25718
| -rw-r--r-- | engines/parallaction/animation.cpp | 41 | ||||
| -rw-r--r-- | engines/parallaction/parser.cpp | 83 | ||||
| -rw-r--r-- | engines/parallaction/parser.h | 5 | ||||
| -rw-r--r-- | engines/parallaction/table.cpp | 37 | 
4 files changed, 87 insertions, 79 deletions
diff --git a/engines/parallaction/animation.cpp b/engines/parallaction/animation.cpp index d393ef6d59..0dc76d38d4 100644 --- a/engines/parallaction/animation.cpp +++ b/engines/parallaction/animation.cpp @@ -57,7 +57,6 @@ void	sortAnimations();  LValue	getLValue(Instruction *inst, char *str, LocalVariable *locals, Animation *a); -int16	scriptFillBuffers(ArchivedFile *file);  uint16	_numLocals = 0;  char	_localNames[10][10]; @@ -294,46 +293,6 @@ void Parallaction::loadProgram(Animation *a, char *filename) { -//	FIXME -//	this function does the same Job as parseFillBuffers, except that -//	it gets input from an ArchivedFile instead of a memory buffer -// -int16 scriptFillBuffers(ArchivedFile *file) { -//	printf("scriptFillBuffers()\n"); -	char v2[] = "\"\0"; - -	int16 _si = 0; - -	for (; _si < 15; _si++) -		_tokens[_si][0] = '\0'; - -	char vCA[200]; -	char *vCE = NULL; -	do { -		vCE = readArchivedFileText(vCA, 200, file); -		if (vCE == 0) return 0; - -		vCE = Common::ltrim(vCE); -	} while (strlen(vCE) == 0 || vCE[0] == '#'); - -	_si = 0; -	while (strlen(vCE) > 0 && _si < 20) { -		vCE = parseNextToken(vCE, _tokens[_si], 40, " \t\n"); -		if (_tokens[_si][0] == '"' && _tokens[_si][strlen(_tokens[_si])-1] != '"') { - -			vCE = parseNextToken(vCE, _tokens[_si+1], 40, v2); -			strcat(_tokens[_si], _tokens[_si+1]); -			_tokens[_si][0] = ' '; -			vCE++; - -		} - -		vCE = Common::ltrim(vCE); -		_si++; -	} - -	return _si; -} diff --git a/engines/parallaction/parser.cpp b/engines/parallaction/parser.cpp index cfa9da4200..1a03201b11 100644 --- a/engines/parallaction/parser.cpp +++ b/engines/parallaction/parser.cpp @@ -22,7 +22,7 @@  #include "parallaction/defs.h"  #include "parallaction/parser.h" - +#include "parallaction/disk.h"  namespace Parallaction { @@ -119,6 +119,87 @@ uint16 parseFillBuffers() {  	return _si;  } +// +//	FIXME +//	this function does the same Job as parseFillBuffers, except that +//	it gets input from a SeekableStream instead of a memory buffer +// +uint16 tableFillBuffers(Common::SeekableReadStream &stream) { + +	for (uint16 i = 0; i < 20; i++) +		_tokens[i][0] = '\0'; + +	char buf[200]; +	char *line = NULL; +	do { +		line = stream.readLine(buf, 200); +		if (line == NULL) return 0; + +		line = Common::ltrim(line); +	} while (strlen(line) == 0 || line[0] == '#'); + +	uint16 count = 0; +	while (strlen(line) > 0 && count < 20) { +		line = parseNextToken(line, _tokens[count], 40, " \t\n"); +		if (_tokens[count][0] == '"' && _tokens[count][strlen(_tokens[count]) - 1] != '"') { + +			line = parseNextToken(line, _tokens[count+1], 40, "\""); +			strcat(_tokens[count], _tokens[count+1] ); +			_tokens[count][0] = ' '; +			line++; + +		} + +		line = Common::ltrim(line); +		count++; +	} + +	return count; + +} + +//	FIXME +//	this function does the same Job as parseFillBuffers, except that +//	it gets input from an ArchivedFile instead of a memory buffer +// +int16 scriptFillBuffers(ArchivedFile *file) { +//	printf("scriptFillBuffers()\n"); +	char v2[] = "\"\0"; + +	int16 _si = 0; + +	for (; _si < 15; _si++) +		_tokens[_si][0] = '\0'; + +	char vCA[200]; +	char *vCE = NULL; +	do { +		vCE = readArchivedFileText(vCA, 200, file); +		if (vCE == 0) return 0; + +		vCE = Common::ltrim(vCE); +	} while (strlen(vCE) == 0 || vCE[0] == '#'); + +	_si = 0; +	while (strlen(vCE) > 0 && _si < 20) { +		vCE = parseNextToken(vCE, _tokens[_si], 40, " \t\n"); +		if (_tokens[_si][0] == '"' && _tokens[_si][strlen(_tokens[_si])-1] != '"') { + +			vCE = parseNextToken(vCE, _tokens[_si+1], 40, v2); +			strcat(_tokens[_si], _tokens[_si+1]); +			_tokens[_si][0] = ' '; +			vCE++; + +		} + +		vCE = Common::ltrim(vCE); +		_si++; +	} + +	return _si; +} + +  //	looks for next token in a string  //  //	scans 's' until one of the stop-chars in 'brk' is found diff --git a/engines/parallaction/parser.h b/engines/parallaction/parser.h index e78d7f5e8b..f8e8741914 100644 --- a/engines/parallaction/parser.h +++ b/engines/parallaction/parser.h @@ -24,6 +24,7 @@  #define PARALLACTION_PARSER_H  #include "parallaction/defs.h" +#include "common/file.h"  namespace Parallaction { @@ -35,6 +36,10 @@ char   *parseComment(ArchivedFile *file);  uint16	parseFillBuffers();  char   *parseNextToken(char *s, char *tok, uint16 count, const char *brk); +uint16  tableFillBuffers(Common::SeekableReadStream &stream); +int16	scriptFillBuffers(ArchivedFile *file); + +  extern char _tokens[][40];  } // namespace Parallaction diff --git a/engines/parallaction/table.cpp b/engines/parallaction/table.cpp index 7df6120d7b..8d184410bb 100644 --- a/engines/parallaction/table.cpp +++ b/engines/parallaction/table.cpp @@ -28,46 +28,9 @@  namespace Parallaction { -uint16 tableFillBuffers(Common::SeekableReadStream &stream); -// -//	FIXME -//	this function does the same Job as parseFillBuffers, except that -//	it gets input from a SeekableStream instead of a memory buffer -// -uint16 tableFillBuffers(Common::SeekableReadStream &stream) { -	for (uint16 i = 0; i < 20; i++) -		_tokens[i][0] = '\0'; -	char buf[200]; -	char *line = NULL; -	do { -		line = stream.readLine(buf, 200); -		if (line == NULL) return 0; - -		line = Common::ltrim(line); -	} while (strlen(line) == 0 || line[0] == '#'); - -	uint16 count = 0; -	while (strlen(line) > 0 && count < 20) { -		line = parseNextToken(line, _tokens[count], 40, " \t\n"); -		if (_tokens[count][0] == '"' && _tokens[count][strlen(_tokens[count]) - 1] != '"') { - -			line = parseNextToken(line, _tokens[count+1], 40, "\""); -			strcat(_tokens[count], _tokens[count+1] ); -			_tokens[count][0] = ' '; -			line++; - -		} - -		line = Common::ltrim(line); -		count++; -	} - -	return count; - -}  void Parallaction::initTable(const char *path, char** table) {  //	printf("initTable(%s)\n", path);  | 
