/**
* 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;
/**
*
* @author Vy Thao Nguyen
*/
public interface Shuffler
{
/**
* Remove <pre>toRemove</pre> number of tokens from <pre>src</pre>
* Any token has the same probability of being removed.
*
* Note: Two tokens that *look* the same are still counted as two.
* For instance, if src hypothetically looks like this:
*
* <pre>
* public int public void
* private int main
* </pre>
*
* There are two 'public' tokens, but these still counts as two different tokens.
*
* What makes up the 'id' for a token is its line and column positions, and
* NOT what it looks like
*
* @param src
* @return
*/
public ShuffledSource shuffle(SourceFile src, int toRemove);
/**
* Similar to shuffle(SourceFile, int), but this places more weights
* on the tokens included in <code>toks</code>, hence these are more likely
* to be removed
*
* @param src
* @param toks
* @return
*/
public ShuffledSource shuffle(SourceFile src, int toRemove, String...toks);
}