diff --git a/org.eclipse.titan.runtime/src/org/eclipse/titan/runtime/core/TitanUniversalCharString.java b/org.eclipse.titan.runtime/src/org/eclipse/titan/runtime/core/TitanUniversalCharString.java index 8b045cf449d7eeab5147221b6280c6cab63af2bb..c47518063de580e5dc74c4670deb3e8f4bad8dcd 100644 --- a/org.eclipse.titan.runtime/src/org/eclipse/titan/runtime/core/TitanUniversalCharString.java +++ b/org.eclipse.titan.runtime/src/org/eclipse/titan/runtime/core/TitanUniversalCharString.java @@ -314,8 +314,8 @@ public class TitanUniversalCharString extends Base_Type { mustBound("The left operand of comparison is an unbound universal charstring value."); aOtherValue.mustBound("The right operand of comparison is an unbound charstring value."); - if (charstring) return new TitanBoolean(cstr.equals(aOtherValue)); - if (val_ptr.size() != aOtherValue.lengthOf()) return new TitanBoolean(false); + if (charstring) return new TitanBoolean(aOtherValue.operatorEquals(cstr.toString())); + if (val_ptr.size() != aOtherValue.lengthOf().getInt()) return new TitanBoolean(false); for (int i = 0; i < val_ptr.size(); ++i) { if (val_ptr.get(i).getUc_group() != 0 || val_ptr.get(i).getUc_plane() !=0 || val_ptr.get(i).getUc_row() != 0 || @@ -451,7 +451,7 @@ public class TitanUniversalCharString extends Base_Type { if (other_len == 0) { return this; } - if ( charstring ) { + if (charstring) { return new TitanUniversalCharString( cstr.append( other_value ) ); } final TitanUniversalCharString ret_val = new TitanUniversalCharString( val_ptr ); @@ -658,6 +658,9 @@ public class TitanUniversalCharString extends Base_Type { // intentionally package public final TitanUniversalChar charAt( final int i ) { //TODO, handle charstring case also if needed + if (charstring) + return new TitanUniversalChar((char) 0, (char) 0, (char) 0, cstr.charAt(i)); + return val_ptr.get( i ); } @@ -667,6 +670,10 @@ public class TitanUniversalCharString extends Base_Type { val_ptr.set( i, c ); } + final void setCharAt( final int i, final char c ) { + cstr.setCharAt( i, c ); + } + // originally operator<<= public TitanUniversalCharString rotateLeft(int rotateCount) { mustBound("The left operand of rotate left operator is an unbound universal charstring value."); @@ -732,4 +739,13 @@ public class TitanUniversalCharString extends Base_Type { return rotateRight(rotateCount.getInt()); } + + public void convertCstrToUni() { + val_ptr = new ArrayList(cstr.length()); + for (int i = 0; i < cstr.length(); ++i) { + val_ptr.add(i,new TitanUniversalChar((char) 0,(char) 0,(char) 0, cstr.charAt(i))); + } + charstring = false; + cstr = null; + } }