mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-15 00:24:19 +00:00
Minor refactoring in JS parser.
This commit is contained in:
parent
2cc283fddd
commit
df1483fb49
1 changed files with 10 additions and 9 deletions
|
|
@ -102,6 +102,7 @@ struct JavascriptEngine::RootObject : public DynamicObject
|
|||
static bool isNumericOrUndefined (const var& v) { return v.isInt() || v.isDouble() || v.isInt64() || v.isBool() || v.isUndefined(); }
|
||||
static int64 getOctalValue (const String& s) { BigInteger b; b.parseString (s, 8); return b.toInt64(); }
|
||||
static Identifier getPrototypeIdentifier() { static const Identifier i ("prototype"); return i; }
|
||||
static var* getPropertyPointer (DynamicObject* o, Identifier i) { return o->getProperties().getVarPointer (i); }
|
||||
|
||||
//==============================================================================
|
||||
struct CodeLocation
|
||||
|
|
@ -139,13 +140,13 @@ struct JavascriptEngine::RootObject : public DynamicObject
|
|||
{
|
||||
if (DynamicObject* o = targetObject.getDynamicObject())
|
||||
{
|
||||
if (var* prop = o->getProperties().getVarPointer (functionName))
|
||||
if (const var* prop = getPropertyPointer (o, functionName))
|
||||
return *prop;
|
||||
|
||||
for (DynamicObject* p = o->getProperty (getPrototypeIdentifier()).getDynamicObject(); p != nullptr;
|
||||
p = p->getProperty (getPrototypeIdentifier()).getDynamicObject())
|
||||
{
|
||||
if (var* prop = p->getProperties().getVarPointer (functionName))
|
||||
if (const var* prop = getPropertyPointer (p, functionName))
|
||||
return *prop;
|
||||
}
|
||||
}
|
||||
|
|
@ -168,14 +169,14 @@ struct JavascriptEngine::RootObject : public DynamicObject
|
|||
var* findRootClassProperty (Identifier className, Identifier propName) const
|
||||
{
|
||||
if (DynamicObject* cls = root->getProperty (className).getDynamicObject())
|
||||
return cls->getProperties().getVarPointer (propName);
|
||||
return getPropertyPointer (cls, propName);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
var findSymbolInParentScopes (Identifier name) const
|
||||
{
|
||||
if (var* v = scope->getProperties().getVarPointer (name))
|
||||
if (const var* v = getPropertyPointer (scope, name))
|
||||
return *v;
|
||||
|
||||
return parent != nullptr ? parent->findSymbolInParentScopes (name)
|
||||
|
|
@ -184,13 +185,11 @@ struct JavascriptEngine::RootObject : public DynamicObject
|
|||
|
||||
bool findAndInvokeMethod (Identifier function, const var::NativeFunctionArgs& args, var& result) const
|
||||
{
|
||||
const NamedValueSet& props = scope->getProperties();
|
||||
|
||||
DynamicObject* target = args.thisObject.getDynamicObject();
|
||||
|
||||
if (target == nullptr || target == scope)
|
||||
{
|
||||
if (const var* m = props.getVarPointer (function))
|
||||
if (const var* m = getPropertyPointer (scope, function))
|
||||
{
|
||||
if (FunctionObject* fo = dynamic_cast<FunctionObject*> (m->getObject()))
|
||||
{
|
||||
|
|
@ -200,6 +199,8 @@ struct JavascriptEngine::RootObject : public DynamicObject
|
|||
}
|
||||
}
|
||||
|
||||
const NamedValueSet& props = scope->getProperties();
|
||||
|
||||
for (int i = 0; i < props.size(); ++i)
|
||||
if (DynamicObject* o = props.getValueAt (i).getDynamicObject())
|
||||
if (Scope (this, root, o).findAndInvokeMethod (function, args, result))
|
||||
|
|
@ -353,7 +354,7 @@ struct JavascriptEngine::RootObject : public DynamicObject
|
|||
|
||||
void assign (const Scope& s, const var& newValue) const override
|
||||
{
|
||||
if (var* v = s.scope->getProperties().getVarPointer (name))
|
||||
if (var* v = getPropertyPointer (s.scope, name))
|
||||
*v = newValue;
|
||||
else
|
||||
s.root->setProperty (name, newValue);
|
||||
|
|
@ -378,7 +379,7 @@ struct JavascriptEngine::RootObject : public DynamicObject
|
|||
}
|
||||
|
||||
if (DynamicObject* o = p.getDynamicObject())
|
||||
if (var* v = o->getProperties().getVarPointer (child))
|
||||
if (const var* v = getPropertyPointer (o, child))
|
||||
return *v;
|
||||
|
||||
return var::undefined();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue