/** * Copyright (C) 2013 Tokanagrammar Team * * This is a jigsaw-like puzzle game, * except each piece is token from a source file, * and the 'complete picture' is the program. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package edu.umb.cs.source; import edu.umb.cs.parser.BracingStyle; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * This represents a source file * * @author Vy Thao Nguyen */ public interface SourceFile { ArrayList<Position> getNonWhitespaces(); /** * * @return name of the outer most class */ String getClassName(); BracingStyle getStyle(); /** * @deprecate * Use List<SourceToken> getTokens(line) instead */ String getLine(int line); List<SourceToken> getTokens(int line); /** * * @param line * @param position * @return the token at the given line and position */ SourceToken getToken(int line, int position); /** * * @param line (First line is 0) * @return number of non-distinct tokens in the give line */ int tokenCount(int line); /** * * @return number of non-distinct tokens in the source */ int tokenCount(); /** * @return number of lines in the source */ int lineCount(); /** * Each entry == [SourceToken --> Number of occurrences ] * @return a SourceToken-to-Occurrences mapping */ Map<SourceToken, Integer> getStatistic(); /** * compile the source, execute and return the output */ Output compileAndExecute(); List<List<SourceToken>> getAll(); }