forked from Taritsyn/JavaScriptEngineSwitcher
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIJsEngine.cs
More file actions
180 lines (157 loc) · 5.5 KB
/
IJsEngine.cs
File metadata and controls
180 lines (157 loc) · 5.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
using System;
using System.Text;
using System.Reflection;
namespace JavaScriptEngineSwitcher.Core
{
/// <summary>
/// Defines a interface of JS engine
/// </summary>
public interface IJsEngine : IDisposable
{
/// <summary>
/// Gets a name of JS engine
/// </summary>
string Name
{
get;
}
/// <summary>
/// Gets a version of original JS engine
/// </summary>
string Version
{
get;
}
/// <summary>
/// Gets a value that indicates if the JS engine supports garbage collection
/// </summary>
bool SupportsGarbageCollection
{
get;
}
/// <summary>
/// Evaluates an expression
/// </summary>
/// <param name="expression">JS-expression</param>
/// <returns>Result of the expression</returns>
object Evaluate(string expression);
/// <summary>
/// Evaluates an expression
/// </summary>
/// <param name="expression">JS-expression</param>
/// <param name="documentName">Document name</param>
/// <returns>Result of the expression</returns>
object Evaluate(string expression, string documentName);
/// <summary>
/// Evaluates an expression
/// </summary>
/// <typeparam name="T">Type of result</typeparam>
/// <param name="expression">JS-expression</param>
/// <returns>Result of the expression</returns>
T Evaluate<T>(string expression);
/// <summary>
/// Evaluates an expression
/// </summary>
/// <typeparam name="T">Type of result</typeparam>
/// <param name="expression">JS-expression</param>
/// <param name="documentName">Document name</param>
/// <returns>Result of the expression</returns>
T Evaluate<T>(string expression, string documentName);
/// <summary>
/// Executes a code
/// </summary>
/// <param name="code">JS-code</param>
void Execute(string code);
/// <summary>
/// Executes a code
/// </summary>
/// <param name="code">JS-code</param>
/// <param name="documentName">Document name</param>
void Execute(string code, string documentName);
/// <summary>
/// Executes a code from JS-file
/// </summary>
/// <param name="path">Path to the JS-file</param>
/// <param name="encoding">Text encoding</param>
void ExecuteFile(string path, Encoding encoding = null);
/// <summary>
/// Executes a code from embedded JS-resource
/// </summary>
/// <param name="resourceName">The case-sensitive resource name without the namespace of the specified type</param>
/// <param name="type">The type, that determines the assembly and whose namespace is used to scope
/// the resource name</param>
void ExecuteResource(string resourceName, Type type);
/// <summary>
/// Executes a code from embedded JS-resource
/// </summary>
/// <param name="resourceName">The case-sensitive resource name</param>
/// <param name="assembly">The assembly, which contains the embedded resource</param>
void ExecuteResource(string resourceName, Assembly assembly);
/// <summary>
/// Calls a function
/// </summary>
/// <param name="functionName">Function name</param>
/// <param name="args">Function arguments</param>
/// <returns>Result of the function execution</returns>
object CallFunction(string functionName, params object[] args);
/// <summary>
/// Calls a function
/// </summary>
/// <typeparam name="T">Type of function result</typeparam>
/// <param name="functionName">Function name</param>
/// <param name="args">Function arguments</param>
/// <returns>Result of the function execution</returns>
T CallFunction<T>(string functionName, params object[] args);
/// <summary>
/// Сhecks for the existence of a variable
/// </summary>
/// <param name="variableName">Variable name</param>
/// <returns>Result of check (true - exists; false - not exists</returns>
bool HasVariable(string variableName);
/// <summary>
/// Gets a value of variable
/// </summary>
/// <param name="variableName">Variable name</param>
/// <returns>Value of variable</returns>
object GetVariableValue(string variableName);
/// <summary>
/// Gets a value of variable
/// </summary>
/// <typeparam name="T">Type of variable</typeparam>
/// <param name="variableName">Variable name</param>
/// <returns>Value of variable</returns>
T GetVariableValue<T>(string variableName);
/// <summary>
/// Sets a value of variable
/// </summary>
/// <param name="variableName">Variable name</param>
/// <param name="value">Value of variable</param>
void SetVariableValue(string variableName, object value);
/// <summary>
/// Removes a variable
/// </summary>
/// <param name="variableName">Variable name</param>
void RemoveVariable(string variableName);
/// <summary>
/// Embeds a host object to script code
/// </summary>
/// <param name="itemName">The name for the new global variable or function that will represent the object</param>
/// <param name="value">The object to expose</param>
/// <remarks>Allows to embed instances of simple classes (or structures) and delegates.</remarks>
void EmbedHostObject(string itemName, object value);
/// <summary>
/// Embeds a host type to script code
/// </summary>
/// <param name="itemName">The name for the new global variable that will represent the type</param>
/// <param name="type">The type to expose</param>
/// <remarks>
/// Host types are exposed to script code in the form of objects whose properties and
/// methods are bound to the type's static members.
/// </remarks>
void EmbedHostType(string itemName, Type type);
/// <summary>
/// Performs a full garbage collection
/// </summary>
void CollectGarbage();
}
}