/******************************************************************************* * Copyright (c) 2013-2014 CWI * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * * * Michael Steindorfer - Michael.Steindorfer@cwi.nl - CWI *******************************************************************************/ package org.rascalmpl.value.impl.persistent; import org.rascalmpl.value.IMap; import org.rascalmpl.value.IMapWriter; import org.rascalmpl.value.ISet; import org.rascalmpl.value.ISetWriter; import org.rascalmpl.value.IValue; import org.rascalmpl.value.type.Type; import org.rascalmpl.value.type.TypeFactory; public class ValueFactory extends org.rascalmpl.value.impl.fast.ValueFactory { protected ValueFactory() { super(); } private static class InstanceKeeper { public final static ValueFactory instance = new ValueFactory(); } public static ValueFactory getInstance() { return InstanceKeeper.instance; } public ISetWriter setWriter(Type upperBoundType) { return new SetWriter(upperBoundType); } public ISetWriter setWriter() { return new SetWriter(); } public ISetWriter relationWriter(Type upperBoundType) { return setWriter(upperBoundType); } public ISetWriter relationWriter() { return new SetWriter(); } public ISet set(Type elementType) { return setWriter().done(); } public ISet set(IValue... elements) { ISetWriter setWriter = setWriter(); setWriter.insert(elements); return setWriter.done(); } public ISet relation(Type tupleType) { return relationWriter(tupleType).done(); } public ISet relation(IValue... elements) { return set(elements); } @Override public IMapWriter mapWriter(Type keyType, Type valueType) { return mapWriter(TypeFactory.getInstance().mapType(keyType, valueType)); } @Override public IMapWriter mapWriter(Type mapType) { return new MapWriter(mapType); } @Override public IMapWriter mapWriter() { return new MapWriter(); } @Override public IMap map(Type mapType) { return mapWriter(mapType).done(); } @Override public IMap map(Type keyType, Type valueType) { return mapWriter(keyType, valueType).done(); } @Override public String toString() { return "VF_PDB_PERSISTENT"; } }