本文整理汇总了C#中Microsoft.JScript.Vsa.VsaEngine.ScriptObjectStackTop方法的典型用法代码示例。如果您正苦于以下问题:C# VsaEngine.ScriptObjectStackTop方法的具体用法?C# VsaEngine.ScriptObjectStackTop怎么用?C# VsaEngine.ScriptObjectStackTop使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.JScript.Vsa.VsaEngine
的用法示例。
在下文中一共展示了VsaEngine.ScriptObjectStackTop方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Construct
internal ScriptFunction Construct(object[] args, VsaEngine engine)
{
ScriptFunction function;
StringBuilder builder = new StringBuilder("function anonymous(");
int index = 0;
int num2 = args.Length - 2;
while (index < num2)
{
builder.Append(Microsoft.JScript.Convert.ToString(args[index]));
builder.Append(", ");
index++;
}
if (args.Length > 1)
{
builder.Append(Microsoft.JScript.Convert.ToString(args[args.Length - 2]));
}
builder.Append(") {\n");
if (args.Length > 0)
{
builder.Append(Microsoft.JScript.Convert.ToString(args[args.Length - 1]));
}
builder.Append("\n}");
Context context = new Context(new DocumentContext("anonymous", engine), builder.ToString());
JSParser parser = new JSParser(context);
engine.PushScriptObject(((IActivationObject) engine.ScriptObjectStackTop()).GetGlobalScope());
try
{
function = (ScriptFunction) parser.ParseFunctionExpression().PartiallyEvaluate().Evaluate();
}
finally
{
engine.PopScriptObject();
}
return function;
}
示例2: JScriptPackage
public static void JScriptPackage(string rootName, VsaEngine engine)
{
GlobalScope globalScope = ((IActivationObject) engine.ScriptObjectStackTop()).GetGlobalScope();
if (globalScope.GetLocalField(rootName) == null)
{
FieldInfo info = globalScope.AddNewField(rootName, Namespace.GetNamespace(rootName, engine), FieldAttributes.Literal | FieldAttributes.Public);
}
}
示例3: JScriptImport
public static void JScriptImport(String name, VsaEngine engine){
int dotPos = name.IndexOf('.');
String rootName = dotPos > 0 ? name.Substring(0, dotPos) : name;
GlobalScope scope = ((IActivationObject)engine.ScriptObjectStackTop()).GetGlobalScope();
FieldInfo field = scope.GetLocalField(rootName);
if (field == null)
field = scope.AddNewField(rootName, Namespace.GetNamespace(rootName, engine), FieldAttributes.Public|FieldAttributes.Literal);
engine.SetEnclosingContext(new WrappedNamespace(name, engine, false));
}
示例4: JScriptImport
public static void JScriptImport(string name, VsaEngine engine)
{
int index = name.IndexOf('.');
string str = (index > 0) ? name.Substring(0, index) : name;
GlobalScope globalScope = ((IActivationObject) engine.ScriptObjectStackTop()).GetGlobalScope();
if (globalScope.GetLocalField(str) == null)
{
FieldInfo info = globalScope.AddNewField(str, Namespace.GetNamespace(str, engine), FieldAttributes.Literal | FieldAttributes.Public);
}
engine.SetEnclosingContext(new WrappedNamespace(name, engine, false));
}
示例5: JScriptFunctionExpression
public static FunctionObject JScriptFunctionExpression (RuntimeTypeHandle handle, string name,
string methodName, string [] formalParams,
JSLocalField [] fields, bool mustSaveStackLocals,
bool hasArgumentsObject, string text,
VsaEngine engine)
{
MethodInfo method = engine.ScriptObjectStackTop ().GetType ().GetMethod (methodName);
FunctionObject fun = new FunctionObject (method);
fun.source = text;
fun.vsa_engine = engine;
return fun;
}
示例6: GetClosureInstance
public static object GetClosureInstance(VsaEngine engine)
{
if (engine != null)
{
StackFrame frame = engine.ScriptObjectStackTop() as StackFrame;
if (frame != null)
{
return frame.closureInstance;
}
}
return null;
}
示例7: JScriptFunctionDeclaration
public static Closure JScriptFunctionDeclaration (RuntimeTypeHandle handle, string name,
string methodName, string [] formalParameters,
JSLocalField [] fields, bool mustSaveStackLocals,
bool hasArgumentsObjects, string text,
Object declaringObject, VsaEngine engine)
{
FunctionObject f = new FunctionObject (name, null, null, null, null);
f.source = text;
MethodInfo method = engine.ScriptObjectStackTop ().GetType ().GetMethod (methodName);
f.method = method;
f.vsa_engine = engine;
return new Closure (f);
}
示例8: JScriptWith
// Push into a "with" scope and return the converted object.
public static Object JScriptWith(Object withOb, VsaEngine engine)
{
withOb = Convert.ToObject(withOb, engine);
if(withOb != null)
{
engine.PushScriptObjectChecked
(new WithScope(engine.ScriptObjectStackTop(), withOb));
return withOb;
}
else
{
throw new JScriptException(JSError.ObjectExpected);
}
}
示例9: JScriptEvaluate
public static Object JScriptEvaluate(Object source, VsaEngine engine){
if (Convert.GetTypeCode(source) != TypeCode.String)
return source;
if (engine.doFast)
engine.PushScriptObject(new BlockScope(engine.ScriptObjectStackTop()));
try{
Context context = new Context(new DocumentContext("eval code", engine), ((IConvertible)source).ToString());
JSParser p = new JSParser(context);
return ((Completion)p.ParseEvalBody().PartiallyEvaluate().Evaluate()).value;
}finally{
if (engine.doFast)
engine.PopScriptObject();
}
}
示例10: Construct
internal ScriptFunction Construct(Object[] args, VsaEngine engine){
StringBuilder func_string = new StringBuilder("function anonymous(");
for (int i = 0, n = args.Length-2; i < n; i++){
func_string.Append(Convert.ToString(args[i]));
func_string.Append(", ");
}
if (args.Length > 1)
func_string.Append(Convert.ToString(args[args.Length-2]));
func_string.Append(") {\n");
if (args.Length > 0)
func_string.Append(Convert.ToString(args[args.Length-1]));
func_string.Append("\n}");
Context context = new Context(new DocumentContext("anonymous", engine), func_string.ToString());
JSParser p = new JSParser(context);
engine.PushScriptObject(((IActivationObject)engine.ScriptObjectStackTop()).GetGlobalScope());
try{
return (ScriptFunction)p.ParseFunctionExpression().PartiallyEvaluate().Evaluate();
}finally{
engine.PopScriptObject();
}
}
示例11: DoEvaluate
private static object DoEvaluate(object source, VsaEngine engine, bool isUnsafe)
{
object obj2;
if (engine.doFast)
{
engine.PushScriptObject(new BlockScope(engine.ScriptObjectStackTop()));
}
try
{
Context context = new Context(new DocumentContext("eval code", engine), ((IConvertible) source).ToString());
JSParser parser = new JSParser(context);
obj2 = ((Completion) parser.ParseEvalBody().PartiallyEvaluate().Evaluate()).value;
}
finally
{
if (engine.doFast)
{
engine.PopScriptObject();
}
}
return obj2;
}
示例12: PushHandlerScope
public static void PushHandlerScope(VsaEngine engine, String id, int scopeId){
engine.PushScriptObject(new BlockScope(engine.ScriptObjectStackTop(), id, scopeId));
}
示例13: Eval
public override Object Eval(VsaEngine engine)
#line 322 "./Nodes/JNode.tc"
{
// Get the scope to declare the function within.
ScriptObject scope = engine.ScriptObjectStackTop();
// Create a function object to wrap up this function.
FunctionObject obj = new FunctionObject
(EngineInstance.GetEngineInstance(engine).GetFunctionPrototype(),
this, scope);
// javascript allows for anonymous functions
if(name != null)
{
// Add the function to the scope.
if(scope is IVariableAccess)
{
((IVariableAccess)scope).SetVariable(name, obj);
}
else
{
scope.Put(name, obj);
}
}
// Return compiled function object
return obj;
}
示例14: JScriptEvaluate
// Evaluate a JScript expression in the context of a specific engine.
public static Object JScriptEvaluate(Object source, VsaEngine engine)
{
Object value = null;
// Bail out if we weren't supplied a string.
if(!(source is String))
{
return source;
}
// Parse the "eval" statement.
Context context = new Context((String)source);
context.codebase = new CodeBase("eval code", null);
JSParser parser = new JSParser(context);
JNode node = parser.ParseSource(true);
// Push a scope for use during evaluation.
engine.PushScriptObject
(new BlockScope(engine.ScriptObjectStackTop(),
new JSObject (null, engine)));
// Evaluate the statement.
try
{
value = node.Eval(engine);
if(value == Empty.Value)
{
value = null;
}
}
catch(JScriptException e)
{
// Attach the context information to low-level exceptions.
if(e.context == null)
{
e.context = context;
}
throw;
}
catch(BreakJumpOut brk)
{
// "break" used incorrectly.
throw new JScriptException(JSError.BadBreak, brk.context);
}
catch(ContinueJumpOut cont)
{
// "continue" used incorrectly.
throw new JScriptException(JSError.BadContinue,
cont.context);
}
catch(ReturnJumpOut ret)
{
// "return" used incorrectly.
throw new JScriptException(JSError.BadReturn, ret.context);
}
finally
{
// Pop the script scope.
engine.PopScriptObject();
}
// Return the result of the evaluation to the caller.
return value;
}
示例15: GetAndPrepare
public override Object GetAndPrepare(VsaEngine engine, ref Object data1, ref Object data2)
#line 130 "./Nodes/JExpr.tc"
{
IVariableAccess scope = (engine.ScriptObjectStackTop() as IVariableAccess);
while(scope != null)
{
if(scope.HasVariable(name))
{
data1 = scope;
return scope.GetVariable(name);
}
scope = scope.GetParentScope();
}
scope = (IVariableAccess)(engine.GetMainScope());
data1 = scope;
return scope.GetVariable(name);
}