forked from JavaTX/JavaCompilerCore
143 lines
3.7 KiB
Java
Executable File
143 lines
3.7 KiB
Java
Executable File
// ino.module.Modifiers.8588.package
|
|
package mycompiler.mymodifier;
|
|
// ino.end
|
|
|
|
// ino.module.Modifiers.8588.import
|
|
import java.util.Vector;
|
|
|
|
import typinferenz.JavaCodeResult;
|
|
import typinferenz.ResultSet;
|
|
// ino.end
|
|
|
|
import mycompiler.mytype.BaseType;
|
|
|
|
// ino.class.Modifiers.24035.description type=javadoc
|
|
/**
|
|
* Die Klasse beinhaltet die Liste der Access-Modifier fuer eine Klasse,
|
|
* Methode usw.
|
|
*/
|
|
// ino.end
|
|
// ino.class.Modifiers.24035.declaration
|
|
public class Modifiers
|
|
// ino.end
|
|
// ino.class.Modifiers.24035.body
|
|
{
|
|
// ino.attribute.modifier.24038.declaration
|
|
protected Vector<Modifier> modifier = new Vector<Modifier>();
|
|
// ino.end
|
|
|
|
// ino.method.getModifiers.24041.definition
|
|
public Vector<Modifier> getModifiers()
|
|
// ino.end
|
|
// ino.method.getModifiers.24041.body
|
|
{
|
|
return this.modifier;
|
|
}
|
|
// ino.end
|
|
|
|
// ino.method.setModifier.24044.definition
|
|
public void setModifier(Vector<Modifier> modifier)
|
|
// ino.end
|
|
// ino.method.setModifier.24044.body
|
|
{
|
|
if (modifier != null) this.modifier = modifier;
|
|
}
|
|
// ino.end
|
|
|
|
// ino.method.addModifier.24047.defdescription type=javadoc
|
|
/**
|
|
* Fuegt den angegebenen Modifier zur Auflistung hinzu.
|
|
*/
|
|
// ino.end
|
|
// ino.method.addModifier.24047.definition
|
|
public void addModifier(Modifier mod)
|
|
// ino.end
|
|
// ino.method.addModifier.24047.body
|
|
{
|
|
modifier.addElement(mod);
|
|
}
|
|
// ino.end
|
|
|
|
// ino.method.includesModifier.24050.defdescription type=javadoc
|
|
/**
|
|
* Gibt zurueck, ob der angegebene Modifier enthalten ist.
|
|
*/
|
|
// ino.end
|
|
// ino.method.includesModifier.24050.definition
|
|
public boolean includesModifier(Modifier mod)
|
|
// ino.end
|
|
// ino.method.includesModifier.24050.body
|
|
{
|
|
String class1 = mod.getClass().toString();
|
|
String class2;
|
|
|
|
for (int i=0; i<modifier.size(); i++) {
|
|
// Anmerkung: Vergleich mit instanceof nicht moeglich
|
|
class2 = modifier.elementAt(i).getClass().toString();
|
|
|
|
if (class2.equals(class1)) return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
// ino.end
|
|
|
|
// ino.method.ensureAbstract.24053.defdescription type=javadoc
|
|
/**
|
|
* Stellt sicher, dass ABSTRACT in der Modifierliste
|
|
* vorkommt. Wird u.a. bei Interfaces benoetigt.
|
|
*
|
|
*/
|
|
// ino.end
|
|
// ino.method.ensureAbstract.24053.definition
|
|
public void ensureAbstract()
|
|
// ino.end
|
|
// ino.method.ensureAbstract.24053.body
|
|
{
|
|
if (!includesModifier(new Abstract()))
|
|
modifier.addElement(new Abstract());
|
|
}
|
|
// ino.end
|
|
|
|
public void ensurePublic()
|
|
{
|
|
if (!includesModifier(new Public()))
|
|
modifier.addElement(new Public());
|
|
}
|
|
|
|
// ino.method.calculate_access_flags.24056.defdescription type=javadoc
|
|
/**
|
|
* Gibt den Bitmaskenwert fuer die enthaltenen Access-Modifier
|
|
* zurueck.
|
|
*/
|
|
// ino.end
|
|
// ino.method.calculate_access_flags.24056.definition
|
|
public short calculate_access_flags()
|
|
// ino.end
|
|
// ino.method.calculate_access_flags.24056.body
|
|
{
|
|
short ret = 0;
|
|
|
|
for (int i = 0; i < modifier.size(); i++) {
|
|
ret += modifier.elementAt(i).getBitmask();
|
|
}
|
|
// Falls nichts angegeben, auf Public setzen
|
|
if (ret == 0) {
|
|
Public p = new Public();
|
|
ret = p.getBitmask();
|
|
}
|
|
return ret;
|
|
}
|
|
// ino.end
|
|
|
|
public JavaCodeResult printJavaCode(ResultSet resultSet) {
|
|
JavaCodeResult ret = new JavaCodeResult();
|
|
for(Modifier mod : this.modifier){
|
|
ret.attach(mod.printJavaCode(resultSet)).attach( " ");
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
}
|
|
// ino.end
|