view src/alice/codesegment/CodeSegment.java @ 335:2f003d5703d5 META_CODESEGMENT

Meta CodeSegment Test
author sugi
date Mon, 14 Apr 2014 15:46:29 +0900
parents f1f0638861ab
children 5fa184113850
line wrap: on
line source

package alice.codesegment;

import java.util.ArrayList;

import alice.codesegment.InputDataSegment;
import alice.datasegment.Receiver;

public abstract class CodeSegment implements Runnable {
	
	public InputDataSegment ids = new InputDataSegment(this);
	public OutputDataSegment ods = new OutputDataSegment();
	public ArrayList<Receiver> list = new ArrayList<Receiver>();
	public CodeSegment codeSegment; 
	private Class<CodeSegment> meta;
	private boolean flag = false;
	
	public void setKey(){
		// for meta CodeSegment
	}
	
	public void execute() {
		ids.receive();
	}
	
	public void recycle(){
		ids.init();
		ids.setCounter(list.size());
		for (Receiver receiver : list) {
			ids.recommand(receiver);
		}
	}

	@SuppressWarnings("unchecked")
	public <T> void setMeta(Class<T> cs){
		flag = true;
		meta = (Class<CodeSegment>) cs;
	}
	
	public boolean hasMeta(){
		return flag;		
	}
	
	public void setCodeSegment(CodeSegment cs){
		codeSegment = cs;
	}
	
	public CodeSegment getCodeSegment(){
		return codeSegment;
	}
	
	public Class<CodeSegment> getMetaClass(){
		flag = false;
		return meta;
	}
	
}