001 // This file is part of the Attempto Java Packages. 002 // Copyright 2008-2009, Attempto Group, University of Zurich (see http://attempto.ifi.uzh.ch). 003 // 004 // The Attempto Java Packages is free software: you can redistribute it and/or modify it under the 005 // terms of the GNU Lesser General Public License as published by the Free Software Foundation, 006 // either version 3 of the License, or (at your option) any later version. 007 // 008 // The Attempto Java Packages is distributed in the hope that it will be useful, but WITHOUT ANY 009 // WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 010 // PURPOSE. See the GNU Lesser General Public License for more details. 011 // 012 // You should have received a copy of the GNU Lesser General Public License along with the Attempto 013 // Java Packages. If not, see http://www.gnu.org/licenses/. 014 015 package ch.uzh.ifi.attempto.chartparser; 016 017 /** 018 * This class represents a string object that can unify with other string objects. 019 * 020 * @author Tobias Kuhn 021 */ 022 public class StringRef { 023 024 private StringEntity stringEntity; 025 026 /** 027 * Creates a new string object with null as value. 028 */ 029 public StringRef() { 030 this((String) null); 031 } 032 033 /** 034 * Creates a new string object with the given value. 035 * 036 * @param string The value of the new string object. 037 */ 038 public StringRef(String string) { 039 stringEntity = new StringEntity(string); 040 stringEntity.addReference(this); 041 } 042 043 StringRef(StringEntity stringEntity) { 044 this.stringEntity = stringEntity; 045 stringEntity.addReference(this); 046 } 047 048 void setStringEntity(StringEntity stringEntity) { 049 this.stringEntity = stringEntity; 050 } 051 052 /** 053 * Unifies this string object with another string object. If unification is not possible, 054 * an exception is thrown. 055 * 056 * @param stringObj The string object to be unified with this string object. 057 * @throws UnificationFailedException If unification fails. 058 */ 059 public void unify(StringRef stringObj) throws UnificationFailedException { 060 stringEntity.unify(stringObj.stringEntity); 061 } 062 063 /** 064 * Returns the value of this string object. 065 * 066 * @return The value of this string object. 067 */ 068 public String getString() { 069 return stringEntity.getString(); 070 } 071 072 int getID() { 073 return stringEntity.getID(); 074 } 075 076 StringEntity getStringEntity() { 077 return stringEntity; 078 } 079 080 }