From fed9771ea87b27e5a0570a9d358ed1dbe9d471c4 Mon Sep 17 00:00:00 2001 From: Fakas Izabella Ingrid Date: Wed, 26 Jul 2017 17:17:23 +0200 Subject: [PATCH] Fixed operatorEquals and add convert function. Signed-off-by: Fakas Izabella Ingrid --- .../core/TitanUniversalCharString.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) 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 8b045cf44..c47518063 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; + } } -- GitLab