< prev index next >

src/jdk/nashorn/internal/objects/NativeString.java

Print this page




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




 204     // String characters can be accessed with array-like indexing..
 205     @Override
 206     public Object get(final Object key) {
 207         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 208         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 209         if (index >= 0 && index < value.length()) {
 210             return String.valueOf(value.charAt(index));
 211         }
 212         return super.get(primitiveKey);
 213     }
 214 
 215     @Override
 216     public Object get(final double key) {
 217         if (isRepresentableAsInt(key)) {
 218             return get((int)key);
 219         }
 220         return super.get(key);
 221     }
 222 
 223     @Override








 224     public Object get(final int key) {
 225         if (key >= 0 && key < value.length()) {
 226             return String.valueOf(value.charAt(key));
 227         }
 228         return super.get(key);
 229     }
 230 
 231     @Override
 232     public int getInt(final Object key, final int programPoint) {
 233         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 234     }
 235 
 236     @Override
 237     public int getInt(final double key, final int programPoint) {
 238         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 239     }
 240 
 241     @Override





 242     public int getInt(final int key, final int programPoint) {
 243         return JSType.toInt32MaybeOptimistic(get(key), programPoint);
 244     }
 245 
 246     @Override




















 247     public double getDouble(final Object key, final int programPoint) {
 248         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 249     }
 250 
 251     @Override
 252     public double getDouble(final double key, final int programPoint) {
 253         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 254     }
 255 
 256     @Override





 257     public double getDouble(final int key, final int programPoint) {
 258         return JSType.toNumberMaybeOptimistic(get(key), programPoint);
 259     }
 260 
 261     @Override
 262     public boolean has(final Object key) {
 263         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 264         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 265         return isValidStringIndex(index) || super.has(primitiveKey);
 266     }
 267 
 268     @Override
 269     public boolean has(final int key) {
 270         return isValidStringIndex(key) || super.has(key);
 271     }
 272 
 273     @Override






 274     public boolean has(final double key) {
 275         final int index = ArrayIndex.getArrayIndex(key);
 276         return isValidStringIndex(index) || super.has(key);
 277     }
 278 
 279     @Override
 280     public boolean hasOwnProperty(final Object key) {
 281         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 282         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 283         return isValidStringIndex(index) || super.hasOwnProperty(primitiveKey);
 284     }
 285 
 286     @Override
 287     public boolean hasOwnProperty(final int key) {
 288         return isValidStringIndex(key) || super.hasOwnProperty(key);
 289     }
 290 
 291     @Override






 292     public boolean hasOwnProperty(final double key) {
 293         final int index = ArrayIndex.getArrayIndex(key);
 294         return isValidStringIndex(index) || super.hasOwnProperty(key);
 295     }
 296 
 297     @Override
 298     public boolean delete(final int key, final boolean strict) {
 299         return checkDeleteIndex(key, strict)? false : super.delete(key, strict);






 300     }
 301 
 302     @Override
 303     public boolean delete(final double key, final boolean strict) {
 304         final int index = ArrayIndex.getArrayIndex(key);
 305         return checkDeleteIndex(index, strict)? false : super.delete(key, strict);
 306     }
 307 
 308     @Override
 309     public boolean delete(final Object key, final boolean strict) {
 310         final Object primitiveKey = JSType.toPrimitive(key, String.class);
 311         final int index = ArrayIndex.getArrayIndex(primitiveKey);
 312         return checkDeleteIndex(index, strict)? false : super.delete(primitiveKey, strict);
 313     }
 314 
 315     private boolean checkDeleteIndex(final int index, final boolean strict) {
 316         if (isValidStringIndex(index)) {
 317             if (strict) {
 318                 throw typeError("cant.delete.property", Integer.toString(index), ScriptRuntime.safeToString(this));
 319             }


< prev index next >