< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/NativeString.java

Print this page




 193     // String characters can be accessed with array-like indexing..
 194     @Override
 195     public Object get(final Object key) {
 196         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 197         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 198         if (index >= 0 && index < value.length()) {
 199             return String.valueOf(value.charAt(index));
 200         }
 201         return super.get(primitiveKey);
 202     }
 203 
 204     @Override
 205     public Object get(final double key) {
 206         if (isRepresentableAsInt(key)) {
 207             return get((int)key);
 208         }
 209         return super.get(key);
 210     }
 211 
 212     @Override
 213     public Object get(final long key) {
 214         if (key >= 0 && key < value.length()) {
 215             return String.valueOf(value.charAt((int)key));
 216         }
 217         return super.get(key);
 218     }
 219 
 220     @Override
 221     public Object get(final int key) {
 222         if (key >= 0 && key < value.length()) {
 223             return String.valueOf(value.charAt(key));
 224         }
 225         return super.get(key);
 226     }
 227 
 228     @Override
 229     public int getInt(final Object key, final int programPoint) {
 230         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 231     }
 232 
 233     @Override
 234     public int getInt(final double key, final int programPoint) {
 235         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 236     }
 237 
 238     @Override
 239     public int getInt(final long key, final int programPoint) {
 240         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 241     }
 242 
 243     @Override
 244     public int getInt(final int key, final int programPoint) {
 245         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 246     }
 247 
 248     @Override
 249     public long getLong(final Object key, final int programPoint) {
 250         return JSType.toLongMaybeOptimistic(get(key), programPoint);
 251     }
 252 
 253     @Override
 254     public long getLong(final double key, final int programPoint) {
 255         return JSType.toLongMaybeOptimistic(get(key), programPoint);
 256     }
 257 
 258     @Override
 259     public long getLong(final long key, final int programPoint) {
 260         return JSType.toLongMaybeOptimistic(get(key), programPoint);
 261     }
 262 
 263     @Override
 264     public long getLong(final int key, final int programPoint) {
 265         return JSType.toLongMaybeOptimistic(get(key), programPoint);
 266     }
 267 
 268     @Override
 269     public double getDouble(final Object key, final int programPoint) {
 270         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 271     }
 272 
 273     @Override
 274     public double getDouble(final double key, final int programPoint) {
 275         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 276     }
 277 
 278     @Override
 279     public double getDouble(final long key, final int programPoint) {
 280         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 281     }
 282 
 283     @Override
 284     public double getDouble(final int key, final int programPoint) {
 285         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 286     }
 287 
 288     @Override
 289     public boolean has(final Object key) {
 290         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 291         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 292         return isValidStringIndex(index) || super.has(primitiveKey);
 293     }
 294 
 295     @Override
 296     public boolean has(final int key) {
 297         return isValidStringIndex(key) || super.has(key);
 298     }
 299 
 300     @Override
 301     public boolean has(final long key) {
 302         final int index = ArrayIndex.getArrayIndex(key);
 303         return isValidStringIndex(index) || super.has(key);
 304     }
 305 
 306     @Override
 307     public boolean has(final double key) {
 308         final int index = ArrayIndex.getArrayIndex(key);
 309         return isValidStringIndex(index) || super.has(key);
 310     }
 311 
 312     @Override
 313     public boolean hasOwnProperty(final Object key) {
 314         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 315         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 316         return isValidStringIndex(index) || super.hasOwnProperty(primitiveKey);
 317     }
 318 
 319     @Override
 320     public boolean hasOwnProperty(final int key) {
 321         return isValidStringIndex(key) || super.hasOwnProperty(key);
 322     }
 323 
 324     @Override
 325     public boolean hasOwnProperty(final long key) {
 326         final int index = ArrayIndex.getArrayIndex(key);
 327         return isValidStringIndex(index) || super.hasOwnProperty(key);
 328     }
 329 
 330     @Override
 331     public boolean hasOwnProperty(final double key) {
 332         final int index = ArrayIndex.getArrayIndex(key);
 333         return isValidStringIndex(index) || super.hasOwnProperty(key);
 334     }
 335 
 336     @Override
 337     public boolean delete(final int key, final boolean strict) {
 338         return checkDeleteIndex(key, strict)? false : super.delete(key, strict);
 339     }
 340 
 341     @Override
 342     public boolean delete(final long key, final boolean strict) {
 343         final int index = ArrayIndex.getArrayIndex(key);
 344         return checkDeleteIndex(index, strict)? false : super.delete(key, strict);
 345     }
 346 
 347     @Override
 348     public boolean delete(final double key, final boolean strict) {
 349         final int index = ArrayIndex.getArrayIndex(key);
 350         return checkDeleteIndex(index, strict)? false : super.delete(key, strict);
 351     }
 352 
 353     @Override
 354     public boolean delete(final Object key, final boolean strict) {
 355         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 356         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 357         return checkDeleteIndex(index, strict)? false : super.delete(primitiveKey, strict);
 358     }
 359 
 360     private boolean checkDeleteIndex(final int index, final boolean strict) {
 361         if (isValidStringIndex(index)) {
 362             if (strict) {
 363                 throw typeError("cant.delete.property", Integer.toString(index), ScriptRuntime.safeToString(this));
 364             }




 193     // String characters can be accessed with array-like indexing..
 194     @Override
 195     public Object get(final Object key) {
 196         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 197         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 198         if (index >= 0 && index < value.length()) {
 199             return String.valueOf(value.charAt(index));
 200         }
 201         return super.get(primitiveKey);
 202     }
 203 
 204     @Override
 205     public Object get(final double key) {
 206         if (isRepresentableAsInt(key)) {
 207             return get((int)key);
 208         }
 209         return super.get(key);
 210     }
 211 
 212     @Override








 213     public Object get(final int key) {
 214         if (key >= 0 && key < value.length()) {
 215             return String.valueOf(value.charAt(key));
 216         }
 217         return super.get(key);
 218     }
 219 
 220     @Override
 221     public int getInt(final Object key, final int programPoint) {
 222         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 223     }
 224 
 225     @Override
 226     public int getInt(final double key, final int programPoint) {
 227         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 228     }
 229 
 230     @Override





 231     public int getInt(final int key, final int programPoint) {
 232         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 233     }
 234 
 235     @Override




















 236     public double getDouble(final Object key, final int programPoint) {
 237         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 238     }
 239 
 240     @Override
 241     public double getDouble(final double key, final int programPoint) {
 242         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 243     }
 244 
 245     @Override





 246     public double getDouble(final int key, final int programPoint) {
 247         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 248     }
 249 
 250     @Override
 251     public boolean has(final Object key) {
 252         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 253         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 254         return isValidStringIndex(index) || super.has(primitiveKey);
 255     }
 256 
 257     @Override
 258     public boolean has(final int key) {
 259         return isValidStringIndex(key) || super.has(key);
 260     }
 261 
 262     @Override






 263     public boolean has(final double key) {
 264         final int index = ArrayIndex.getArrayIndex(key);
 265         return isValidStringIndex(index) || super.has(key);
 266     }
 267 
 268     @Override
 269     public boolean hasOwnProperty(final Object key) {
 270         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 271         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 272         return isValidStringIndex(index) || super.hasOwnProperty(primitiveKey);
 273     }
 274 
 275     @Override
 276     public boolean hasOwnProperty(final int key) {
 277         return isValidStringIndex(key) || super.hasOwnProperty(key);
 278     }
 279 
 280     @Override






 281     public boolean hasOwnProperty(final double key) {
 282         final int index = ArrayIndex.getArrayIndex(key);
 283         return isValidStringIndex(index) || super.hasOwnProperty(key);
 284     }
 285 
 286     @Override
 287     public boolean delete(final int key, final boolean strict) {
 288         return checkDeleteIndex(key, strict)? false : super.delete(key, strict);






 289     }
 290 
 291     @Override
 292     public boolean delete(final double key, final boolean strict) {
 293         final int index = ArrayIndex.getArrayIndex(key);
 294         return checkDeleteIndex(index, strict)? false : super.delete(key, strict);
 295     }
 296 
 297     @Override
 298     public boolean delete(final Object key, final boolean strict) {
 299         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 300         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 301         return checkDeleteIndex(index, strict)? false : super.delete(primitiveKey, strict);
 302     }
 303 
 304     private boolean checkDeleteIndex(final int index, final boolean strict) {
 305         if (isValidStringIndex(index)) {
 306             if (strict) {
 307                 throw typeError("cant.delete.property", Integer.toString(index), ScriptRuntime.safeToString(this));
 308             }


< prev index next >