Changeset 1799 in webkit for trunk/JavaScriptCore/kjs/internal.cpp
- Timestamp:
- Aug 12, 2002, 1:14:02 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/internal.cpp
r1790 r1799 193 193 // ------------------------------ StringImp ------------------------------------ 194 194 195 StringImp::StringImp(const UString& v)196 : val(v)197 {198 }199 200 195 Value StringImp::toPrimitive(ExecState */*exec*/, Type) const 201 196 { … … 221 216 { 222 217 List args; 223 args.append( String(const_cast<StringImp*>(this)));218 args.append(Value(const_cast<StringImp*>(this))); 224 219 return Object::dynamicCast(exec->interpreter()->builtinString().construct(exec,args)); 225 220 } 226 221 227 222 // ------------------------------ NumberImp ------------------------------------ 228 229 NumberImp::NumberImp(double v)230 : val(v)231 {232 }233 223 234 224 Value NumberImp::toPrimitive(ExecState *, Type) const … … 259 249 } 260 250 251 bool NumberImp::toUInt32(unsigned& uint32) const 252 { 253 uint32 = (unsigned)val; 254 return (double)uint32 == val; 255 } 256 261 257 // ------------------------------ ReferenceImp --------------------------------- 262 258 259 ReferenceImp::ReferenceImp(const Value& v, unsigned p) 260 : base(v.imp()), propertyNameIsNumber(true), propertyNameAsNumber(p) 261 { 262 } 263 263 264 ReferenceImp::ReferenceImp(const Value& v, const UString& p) 264 : base(v.imp()), prop (p)265 : base(v.imp()), propertyNameIsNumber(false), prop(p) 265 266 { 266 267 } … … 306 307 assert(false); 307 308 return Object(); 309 } 310 311 UString ReferenceImp::getPropertyName(ExecState *) const 312 { 313 if (propertyNameIsNumber && prop.isNull()) 314 prop = UString::from(propertyNameAsNumber); 315 return prop; 316 } 317 318 Value ReferenceImp::getValue(ExecState *exec) const 319 { 320 Value o = getBase(exec); 321 322 if (o.isNull() || o.type() == NullType) { 323 UString m = I18N_NOOP("Can't find variable: ") + getPropertyName(exec); 324 Object err = Error::create(exec, ReferenceError, m.ascii()); 325 exec->setException(err); 326 return err; 327 } 328 329 if (o.type() != ObjectType) { 330 UString m = I18N_NOOP("Base is not an object"); 331 Object err = Error::create(exec, ReferenceError, m.ascii()); 332 exec->setException(err); 333 return err; 334 } 335 336 if (propertyNameIsNumber) 337 return static_cast<ObjectImp*>(o.imp())->get(exec,propertyNameAsNumber); 338 return static_cast<ObjectImp*>(o.imp())->get(exec,prop); 339 } 340 341 void ReferenceImp::putValue(ExecState *exec, const Value& w) 342 { 343 #ifdef KJS_VERBOSE 344 printInfo(exec,(UString("setting property ")+getPropertyName(exec)).cstring().c_str(),w); 345 #endif 346 Value o = getBase(exec); 347 if (o.type() == NullType) 348 o = exec->interpreter()->globalObject(); 349 350 if (propertyNameIsNumber) 351 return static_cast<ObjectImp*>(o.imp())->put(exec,propertyNameAsNumber, w); 352 return static_cast<ObjectImp*>(o.imp())->put(exec,prop, w); 353 } 354 355 bool ReferenceImp::deleteValue(ExecState *exec) 356 { 357 Value b = getBase(exec); 358 359 // The spec doesn't mention what to do if the base is null... just return true 360 if (b.type() != ObjectType) { 361 assert(b.type() == NullType); 362 return true; 363 } 364 365 if (propertyNameIsNumber) 366 return static_cast<ObjectImp*>(b.imp())->deleteProperty(exec,propertyNameAsNumber); 367 return static_cast<ObjectImp*>(b.imp())->deleteProperty(exec,prop); 308 368 } 309 369 … … 1120 1180 return Boolean(false); 1121 1181 1122 Value prot = get(exec, "prototype");1182 Value prot = get(exec,prototypePropertyName); 1123 1183 if (prot.type() != ObjectType && prot.type() != NullType) { 1124 1184 Object err = Error::create(exec, TypeError, "Invalid prototype encountered "
Note:
See TracChangeset
for help on using the changeset viewer.