this.temporarySymbols.clear(); this.temporaryVariables.clear();   if (this.debugManager != null) { String[] debuggingSymbols = this.debugManager.getDebuggingSymbols( className ); for (int i = 0; i < debuggingSymbols.length; i++) { String symbol = debuggingSymbols[i]; this.temporarySymbols.put( symbol, Boolean.TRUE );
this.ifDirectiveCount = 0; File sourceFile = new File( sourceDir.getAbsolutePath()  + "/" + fileName ); String[] sourceLines = FileUtil.readTextFile( sourceFile ); StringList lines = new StringList( sourceLines );  this.variables.put( "polish.source", sourceDir.getAbsolutePath() ); String className = fileName.substring(0, fileName.indexOf('.')); className = TextUtil.replace( className, "/", "." ); int result = preprocess( className, lines ); if (result == SKIP_FILE) { return false; } boolean preprocessed = (result == CHANGED); if (this.newExtension != null) {  int dotPos = fileName.indexOf('.'); if (dotPos != -1) { fileName = fileName.substring( 0, dotPos + 1 ) + this.newExtension; } else { fileName += "." + this.newExtension;
	public int preprocess(String className, StringList lines) 	throws BuildException 	{		// clear the temporary variables and symbols:		this.temporarySymbols.clear();		this.temporaryVariables.clear();				// set debugging preprocessing symbols:		if (this.debugManager != null) {			String[] debuggingSymbols = this.debugManager.getDebuggingSymbols( className );			for (int i = 0; i < debuggingSymbols.length; i++) {				String symbol = debuggingSymbols[i];				this.temporarySymbols.put( symbol, Boolean.TRUE );			}		}		// adding all normal variables and symbols to the temporary ones:		this.temporarySymbols.putAll( this.symbols );		this.temporaryVariables.putAll( this.variables );				boolean changed = false;		if (this.customPreprocessors != null) {			for (int i = 0; i < this.customPreprocessors.length; i++) {				CustomPreprocessor processor = this.customPreprocessors[i];				processor.processClass(lines, className);				lines.reset();			}			changed = changed || lines.hasChanged();		}		try {			while (lines.next()) {				String line = lines.getCurrent();				if (line.indexOf('#') != -1) {					// could be that there is a preprocess instruction:					int result = processSingleLine( className, lines, line, line.trim() );					if (result == CHANGED ) {						changed = true;					} else if (result == SKIP_FILE) {						return SKIP_FILE;					}				}			}		} catch (BuildException e) {			reset();			throw e;		}		if (changed) {			return CHANGED;		} else {			return NOT_CHANGED;		}	}