aboutsummaryrefslogtreecommitdiffstats
path: root/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/VariableContext.xtend
blob: 3073d88f1b8d0dad19979123caacc41dbef8919f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package hu.bme.mit.inf.dslreasoner.logic.model.builder

import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguageFactory
import java.util.List
import java.util.LinkedList
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable
import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.TypeDescriptor

class VariableContext {
	val extension LogiclanguageFactory language;
	val extension LogicProblemBuilder logicProblemBuilder;
	
	new(LogicProblemBuilder logicProblemBuilder, LogiclanguageFactory language) {
		this.logicProblemBuilder = logicProblemBuilder
		this.language = language
	}
	
	private List<Variable> variables = new LinkedList;
	def public getVariables(){variables}
	
	
	//def public -(TypeDescriptor type) { Variable(type) }
	def public Variable addVar(TypeDescriptor type) {	
		return addVar(null, type);
	}
	
	def public Variable addVar(CharSequence variableName, TypeDescriptor type) {
		if(variables.exists[name.equals(variableName)]) throw new IllegalArgumentException("Variable with name " + variableName +" is already defined.")
		val variable = createVariable => [name = variableName.canonize range = type.toTypeReference]
		variables += variable
		return variable
	}
}