1 package de.lathanda.eos.baseparser;
3 import java.util.ArrayList;
4 import java.util.LinkedList;
5 import java.util.TreeMap;
7 import de.lathanda.eos.baseparser.exceptions.CyclicStorageException;
8 import de.lathanda.eos.baseparser.exceptions.DoubleClassDeclarationException;
9 import de.lathanda.eos.vm.Command;
10 import de.lathanda.eos.vm.MClass;
11 import de.lathanda.eos.vm.MProcedure;
12 import de.lathanda.eos.vm.MType;
13 import de.lathanda.eos.vm.ReservedVariables;
14 import de.lathanda.eos.vm.commands.DeclareVariable;
15 import de.lathanda.eos.vm.commands.StoreVariable;
23 private String supCls =
null;
24 private TreeMap<String, Method> usermethods =
new TreeMap<>();
25 private TreeMap<String, Property> userproperties =
new TreeMap<>();
26 private boolean isAbstract =
false;
32 private boolean checked =
false;
33 private boolean marked =
false;
34 private boolean isUndefined =
true;
47 if (
superType ==
null && supCls !=
null) {
54 for (
Method s : usermethods.values()) {
55 s.createMethodType(env);
56 super.registerMethod(s.getMethodType(env));
63 checkCyclicStorageInternal();
72 for (Property prop : userproperties.values()) {
73 checkCyclicStorageInternal(prop.getPropertyType());
79 private void checkCyclicStorageInternal(
Type t)
throws CyclicStorageException {
80 if (t !=
null && t instanceof
UserType) {
88 for (
Property p : userproperties.values()) {
89 aci.addAll(p.getAutoCompletes());
91 for (
Method m : usermethods.values()) {
92 aci.add(m.getAutoComplete());
113 for (String name : prop.
getNames()) {
114 userproperties.put(name, prop);
119 usermethods.put(meth.
getName(), meth);
128 for (
Property p : userproperties.values()) {
129 for (String name : p.getNames()) {
130 mtype.
addProperty(name, p.getPropertyType().getMType());
134 for (
Method m : usermethods.values()) {
135 ArrayList<Command> methCmd =
new ArrayList<>();
140 m.compile(methCmd,
false);
148 if (userproperties.containsKey(name)) {
159 if (userproperties.containsKey(name)) {
178 TreeMap<String, MethodType> all =
new TreeMap<>();
179 for (var entry : userproperties.entrySet()) {
180 all.put(entry.getKey(),
new UserReadProperty(
this, entry.getKey(), entry.getValue()));
187 TreeMap<String, MethodType> all =
new TreeMap<>();
188 for (var entry : userproperties.entrySet()) {
189 all.put(entry.getKey(),
new UserAssignProperty(
this, entry.getKey(), entry.getValue()));
196 LinkedList<PropertyViewer> list =
new LinkedList<>();
197 for (String name : userproperties.keySet()) {
List< String > getNames()
Type getTypeByName(String name)
static String createVMMethodSignature(MethodType m)
abstract MType getMType()
abstract MethodType getAssignProperty(String name)
LinkedList< AutoCompleteInformation > getAutoCompletes()
abstract MethodType getReadProperty(String name)
LinkedList< AutoCompleteInformation > getAutoCompletes()
MethodType getReadProperty(String name)
MethodType getAssignProperty(String name)
void addProperty(Property prop)
void checkCyclicStorage()
TreeMap< String, MethodType > getAllAssignProperties()
TreeMap< String, MethodType > getAllReadProperties()
LinkedList< PropertyViewer > getPropertyViewers(Object target)
void setSuperclass(String sup)
void addMethod(Method meth)
void bind(Environment env)
void addProperty(String signature, MType t)
void addMethod(String signature, MProcedure m)