package oop;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.LinkedList;
public class vTableForwardDeclarations {
LinkedList<String> forwarddeclarations;
LinkedList<String> typedeclarations;
HashSet<String> stored;
public vTableForwardDeclarations(){
forwarddeclarations = new LinkedList<String>();
typedeclarations = new LinkedList<String>();
stored = new HashSet<String>();
}
public boolean hasDeclarations(String s){
if(stored.contains(s)){
return true;
}
return false;
}
public void addForwardDeclaration(String type){
String addition = "struct " + "__" + type + ";";
forwarddeclarations.add(addition);
//System.out.println(addition);
}
public void addForwardVTable(String type){
String addition = "struct " + "__" + type + "_VT" + ";";
forwarddeclarations.add(addition);
//System.out.println(addition);
}
public void addTypeDeclarations(String type){
String addition = "typedef " + " __rt::Ptr<__" + type + "> " + type + ";";
typedeclarations.add(addition);
stored.add(type);
//System.out.println(addition);
}
public void writefile(BufferedWriter writer){
//FileWriter writee;
try {
//writee = new FileWriter (file);
//BufferedWriter writer = new BufferedWriter(writee);
while(!forwarddeclarations.isEmpty()){
writer.write(forwarddeclarations.pop() + "\r");
}
writer.write("\r \r");
while(!typedeclarations.isEmpty()){
writer.write(typedeclarations.pop() + "\r");
}
writer.write("\r\r");
writer.flush();
//writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void printLines(){
while(!forwarddeclarations.isEmpty()){
System.out.print(forwarddeclarations.pop() + "\r");
}
System.out.print("\r \r");
while(!typedeclarations.isEmpty()){
System.out.print(typedeclarations.pop() + "\r");
}
System.out.println("\r\r");
}
}