AutoPtr<StaticBoundObject> ScopeMethodDelegate::CreateDelegate(KObjectRef global, KObjectRef bo) { AutoPtr<StaticBoundObject> scope = new StaticBoundObject(); SharedStringList keys = bo->GetPropertyNames(); StringList::iterator iter = keys->begin(); while(iter!=keys->end()) { SharedString key_ptr = (*iter++); std::string key = *key_ptr; KValueRef value = bo->Get(key.c_str()); if (key == "set") { KMethodRef d = new ScopeMethodDelegate(SET, global, scope, value->ToMethod()); KValueRef v = Value::NewMethod(d); scope->Set(key.c_str(), v); } else if (key == "get") { KMethodRef d = new ScopeMethodDelegate(GET, global, scope, value->ToMethod()); KValueRef v = Value::NewMethod(d); scope->Set(key.c_str(), v); } else { scope->Set(key.c_str(), value); } } return scope; }