Browse Source

Minor refactoring in JS parser.

tags/2021-05-28
jules 11 years ago
parent
commit
df1483fb49
1 changed files with 10 additions and 9 deletions
  1. +10
    -9
      modules/juce_core/javascript/juce_Javascript.cpp

+ 10
- 9
modules/juce_core/javascript/juce_Javascript.cpp View File

@@ -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…
Cancel
Save