GCC Code Coverage Report


Directory: avs_core/
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 0.0% 0 / 0 / 7
Functions: 0.0% 0 / 0 / 1
Branches: 0.0% 0 / 0 / 4

core/parser/script.h
Line Branch Exec Source
1 // Avisynth v2.5. Copyright 2002 Ben Rudiak-Gould et al.
2 // http://avisynth.nl
3
4 // This program is free software; you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation; either version 2 of the License, or
7 // (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA, or visit
17 // http://www.gnu.org/copyleft/gpl.html .
18 //
19 // Linking Avisynth statically or dynamically with other modules is making a
20 // combined work based on Avisynth. Thus, the terms and conditions of the GNU
21 // General Public License cover the whole combination.
22 //
23 // As a special exception, the copyright holders of Avisynth give you
24 // permission to link Avisynth with independent modules that communicate with
25 // Avisynth solely through the interfaces defined in avisynth.h, regardless of the license
26 // terms of these independent modules, and to copy and distribute the
27 // resulting combined work under terms of your choice, provided that
28 // every copy of the combined work is accompanied by a complete copy of
29 // the source code of Avisynth (the version of Avisynth used to produce the
30 // combined work), being distributed under the terms of the GNU General
31 // Public License plus this exception. An independent module is a module
32 // which is not derived from or based on Avisynth, such as 3rd-party filters,
33 // import and export plugins, or graphical user interfaces.
34
35 #ifndef __Script_H__
36 #define __Script_H__
37
38 #include <avisynth.h>
39 #ifdef AVS_WINDOWS
40 #include <avs/win.h>
41 #include <tchar.h>
42 #else
43 #include <avs/posix.h>
44 #endif
45
46 #include "../internal.h"
47 #include "expression.h"
48 #include "scriptparser.h"
49
50
51 /********************************************************************
52 ********************************************************************/
53
54 class ScriptFunction
55 /**
56 * Executes a script
57 **/
58 {
59 public:
60 ScriptFunction(const PExpression& _body, const bool* _param_floats, const char** _param_names, int param_count);
61 virtual ~ScriptFunction()
62 {
63 delete[] param_floats;
64 delete[] param_names;
65 }
66
67 static AVSValue Execute(AVSValue args, void* user_data, IScriptEnvironment* env);
68 static void Delete(void* self, IScriptEnvironment*);
69
70 private:
71 const PExpression body;
72 bool* param_floats;
73 const char** param_names;
74 };
75
76
77 /**** Helper functions ****/
78
79 AVSValue Assert(AVSValue args, void*, IScriptEnvironment* env);
80 AVSValue AssertEval(AVSValue args, void*, IScriptEnvironment* env);
81 AVSValue Eval(AVSValue args, void*, IScriptEnvironment* env);
82 AVSValue EvalOop(AVSValue args, void*, IScriptEnvironment* env);
83 AVSValue Apply(AVSValue args, void*, IScriptEnvironment* env) ;
84
85 AVSValue Import(AVSValue args, void*, IScriptEnvironment* env);
86
87 AVSValue SetWorkingDir(AVSValue args, void*, IScriptEnvironment* env);
88
89 /***** Entry/Factory Methods ******/
90
91 AVSValue Muldiv(AVSValue args, void*, IScriptEnvironment* env);
92
93 AVSValue Floor(AVSValue args, void*, IScriptEnvironment* env);
94 AVSValue Ceil(AVSValue args, void*, IScriptEnvironment* env);
95 AVSValue Round(AVSValue args, void*, IScriptEnvironment* env);
96
97 AVSValue Acos(AVSValue args, void* user_data, IScriptEnvironment* env);
98 AVSValue Asin(AVSValue args, void* user_data, IScriptEnvironment* env);
99 AVSValue Atan(AVSValue args, void* user_data, IScriptEnvironment* env);
100 AVSValue Atan2(AVSValue args, void* user_data, IScriptEnvironment* env);
101 AVSValue Cos(AVSValue args, void* user_data, IScriptEnvironment* env);
102 AVSValue Cosh(AVSValue args, void* user_data, IScriptEnvironment* env);
103 AVSValue Exp(AVSValue args, void* user_data, IScriptEnvironment* env);
104 AVSValue Fmod(AVSValue args, void* user_data, IScriptEnvironment* env);
105 AVSValue Log(AVSValue args, void* user_data, IScriptEnvironment* env);
106 AVSValue Log10(AVSValue args, void* user_data, IScriptEnvironment* env);
107 AVSValue Pow(AVSValue args, void* user_data, IScriptEnvironment* env);
108 AVSValue Sin(AVSValue args, void* user_data, IScriptEnvironment* env);
109 AVSValue Sinh(AVSValue args, void* user_data, IScriptEnvironment* env);
110 AVSValue Tan(AVSValue args, void* user_data, IScriptEnvironment* env);
111 AVSValue Tanh(AVSValue args, void* user_data, IScriptEnvironment* env);
112 AVSValue Sqrt(AVSValue args, void* user_data, IScriptEnvironment* env);
113
114 AVSValue Abs(AVSValue args, void* user_data, IScriptEnvironment* env);
115 AVSValue FAbs(AVSValue args, void* user_data, IScriptEnvironment* env);
116 AVSValue Pi(AVSValue args, void* user_data, IScriptEnvironment* env);
117 #ifdef OPT_ScriptFunctionTau
118 AVSValue Tau(AVSValue args, void* user_data, IScriptEnvironment* env);
119 #endif
120 AVSValue Sign(AVSValue args, void*, IScriptEnvironment* env);
121
122 AVSValue PixelType (AVSValue args, void*, IScriptEnvironment* env);
123 AVSValue Width(AVSValue args, void*, IScriptEnvironment* env);
124 AVSValue Height(AVSValue args, void*, IScriptEnvironment* env);
125 AVSValue FrameCount(AVSValue args, void*, IScriptEnvironment* env);
126 AVSValue FrameRate(AVSValue args, void*, IScriptEnvironment* env);
127 AVSValue FrameRateNumerator(AVSValue args, void*, IScriptEnvironment* env);
128 AVSValue FrameRateDenominator(AVSValue args, void*, IScriptEnvironment* env);
129 AVSValue AudioRate(AVSValue args, void*, IScriptEnvironment* env);
130 AVSValue AudioLength(AVSValue args, void*, IScriptEnvironment* env);
131 AVSValue AudioLengthLo(AVSValue args, void*, IScriptEnvironment* env);
132 AVSValue AudioLengthHi(AVSValue args, void*, IScriptEnvironment* env);
133 AVSValue AudioLengthS(AVSValue args, void*, IScriptEnvironment* env);
134 AVSValue AudioLengthF(AVSValue args, void*, IScriptEnvironment* env);
135 AVSValue AudioDuration(AVSValue args, void*, IScriptEnvironment* env);
136 AVSValue AudioChannels(AVSValue args, void*, IScriptEnvironment* env);
137 AVSValue AudioBits(AVSValue args, void*, IScriptEnvironment* env);
138 AVSValue IsAudioFloat(AVSValue args, void*, IScriptEnvironment* env);
139 AVSValue IsAudioInt(AVSValue args, void*, IScriptEnvironment* env);
140 AVSValue IsChannelMaskKnown(AVSValue args, void*, IScriptEnvironment* env);
141 AVSValue GetChannelMask(AVSValue args, void*, IScriptEnvironment* env);
142
143 AVSValue IsRGB(AVSValue args, void*, IScriptEnvironment* env);
144 AVSValue IsY8(AVSValue args, void*, IScriptEnvironment* env);
145 AVSValue IsYV12(AVSValue args, void*, IScriptEnvironment* env);
146 AVSValue IsYV16(AVSValue args, void*, IScriptEnvironment* env);
147 AVSValue IsYV24(AVSValue args, void*, IScriptEnvironment* env);
148 AVSValue IsYV411(AVSValue args, void*, IScriptEnvironment* env);
149 AVSValue IsYUY2(AVSValue args, void*, IScriptEnvironment* env);
150 AVSValue IsYUV(AVSValue args, void*, IScriptEnvironment* env);
151 AVSValue IsRGB24(AVSValue args, void*, IScriptEnvironment* env);
152 AVSValue IsRGB32(AVSValue args, void*, IScriptEnvironment* env);
153 AVSValue IsPlanar(AVSValue args, void*, IScriptEnvironment* env);
154 AVSValue IsInterleaved(AVSValue args, void*, IScriptEnvironment* env);
155 AVSValue IsFieldBased(AVSValue args, void*, IScriptEnvironment* env);
156 AVSValue IsFrameBased(AVSValue args, void*, IScriptEnvironment* env);
157 AVSValue GetParity(AVSValue args, void*, IScriptEnvironment* env);
158 AVSValue String(AVSValue args, void*, IScriptEnvironment* env);
159 AVSValue Hex(AVSValue args, void*, IScriptEnvironment* env);
160 AVSValue Func(AVSValue args, void*, IScriptEnvironment* env);
161 AVSValue FormatString(AVSValue args, void*, IScriptEnvironment* env);
162
163 AVSValue IsBool(AVSValue args, void*, IScriptEnvironment* env);
164 AVSValue IsInt(AVSValue args, void*, IScriptEnvironment* env);
165 AVSValue IsLongStrict(AVSValue args, void*, IScriptEnvironment* env); // v11
166 AVSValue IsFloat(AVSValue args, void*, IScriptEnvironment* env);
167 AVSValue IsFloatfStrict(AVSValue args, void*, IScriptEnvironment* env); // v11
168 AVSValue IsString(AVSValue args, void*, IScriptEnvironment* env);
169 AVSValue IsClip(AVSValue args, void*, IScriptEnvironment* env);
170 AVSValue IsFunction(AVSValue args, void*, IScriptEnvironment* env);
171 AVSValue Defined(AVSValue args, void*, IScriptEnvironment* env);
172
173 AVSValue TypeName(AVSValue args, void*, IScriptEnvironment* env);
174
175 AVSValue Default(AVSValue args, void*, IScriptEnvironment* env);
176
177 AVSValue VersionNumber(AVSValue args, void*, IScriptEnvironment* env);
178 AVSValue VersionString(AVSValue args, void*, IScriptEnvironment* env);
179 AVSValue IsVersionOrGreater(AVSValue args, void*, IScriptEnvironment* env);
180
181 AVSValue Int(AVSValue args, void*, IScriptEnvironment* env);
182 AVSValue Frac(AVSValue args, void*, IScriptEnvironment* env);
183 AVSValue Float(AVSValue args, void*,IScriptEnvironment* env);
184 AVSValue IntI(AVSValue args, void*, IScriptEnvironment* env); // v11
185 AVSValue Long(AVSValue args, void*, IScriptEnvironment* env); // v11
186 AVSValue Double(AVSValue args, void*, IScriptEnvironment* env); // v11
187 AVSValue Floatf(AVSValue args, void*, IScriptEnvironment* env); // v11
188 AVSValue Value(AVSValue args, void*, IScriptEnvironment* env);
189 AVSValue HexValue(AVSValue args, void*, IScriptEnvironment* env);
190 AVSValue HexValue64(AVSValue args, void*, IScriptEnvironment* env); // v11
191
192 AVSValue BitAnd(AVSValue args, void*, IScriptEnvironment* env);
193 AVSValue BitNot(AVSValue args, void*, IScriptEnvironment* env);
194 AVSValue BitOr(AVSValue args, void*, IScriptEnvironment* env);
195 AVSValue BitXor(AVSValue args, void*, IScriptEnvironment* env);
196 AVSValue BitAnd64(AVSValue args, void*, IScriptEnvironment* env); // v11
197 AVSValue BitNot64(AVSValue args, void*, IScriptEnvironment* env); // v11
198 AVSValue BitOr64(AVSValue args, void*, IScriptEnvironment* env); // v11
199 AVSValue BitXor64(AVSValue args, void*, IScriptEnvironment* env); // v11
200
201 AVSValue BitLShift(AVSValue args, void*, IScriptEnvironment* env);
202 AVSValue BitRShiftL(AVSValue args, void*, IScriptEnvironment* env);
203 AVSValue BitRShiftA(AVSValue args, void*, IScriptEnvironment* env);
204 AVSValue BitLShift64(AVSValue args, void*, IScriptEnvironment* env); // v11
205 AVSValue BitRShift64L(AVSValue args, void*, IScriptEnvironment* env); // v11
206 AVSValue BitRShift64A(AVSValue args, void*, IScriptEnvironment* env); // v11
207
208 AVSValue BitRotateL(AVSValue args, void*, IScriptEnvironment* env);
209 AVSValue BitRotateR(AVSValue args, void*, IScriptEnvironment* env);
210 AVSValue BitRotate64L(AVSValue args, void*, IScriptEnvironment* env); // v11
211 AVSValue BitRotate64R(AVSValue args, void*, IScriptEnvironment* env); // v11
212
213 AVSValue BitChg(AVSValue args, void*, IScriptEnvironment* env);
214 AVSValue BitClr(AVSValue args, void*, IScriptEnvironment* env);
215 AVSValue BitSet(AVSValue args, void*, IScriptEnvironment* env);
216 AVSValue BitTst(AVSValue args, void*, IScriptEnvironment* env);
217 AVSValue BitChg64(AVSValue args, void*, IScriptEnvironment* env); // v11
218 AVSValue BitClr64(AVSValue args, void*, IScriptEnvironment* env); // v11
219 AVSValue BitSet64(AVSValue args, void*, IScriptEnvironment* env); // v11
220 AVSValue BitTst64(AVSValue args, void*, IScriptEnvironment* env); // v11
221 AVSValue BitSetCount(AVSValue args, void*, IScriptEnvironment* env);
222 AVSValue BitSetCount64(AVSValue args, void*, IScriptEnvironment* env); // v11
223
224 AVSValue UCase(AVSValue args, void*, IScriptEnvironment* env);
225 AVSValue LCase(AVSValue args, void*, IScriptEnvironment* env);
226 AVSValue StrLen(AVSValue args, void*, IScriptEnvironment* env);
227 AVSValue RevStr(AVSValue args, void*, IScriptEnvironment* env);
228 AVSValue LeftStr(AVSValue args, void*, IScriptEnvironment* env);
229 AVSValue MidStr(AVSValue args, void*, IScriptEnvironment* env);
230 AVSValue RightStr(AVSValue args, void*, IScriptEnvironment* env);
231 AVSValue FindStr(AVSValue args, void*, IScriptEnvironment* env);
232 AVSValue FillStr(AVSValue args, void*, IScriptEnvironment* env);
233 AVSValue StrCmp(AVSValue args, void*, IScriptEnvironment* env);
234 AVSValue StrCmpi(AVSValue args, void*, IScriptEnvironment* env);
235
236 AVSValue TrimAll(AVSValue args, void*, IScriptEnvironment* env);
237 AVSValue TrimLeft(AVSValue args, void*, IScriptEnvironment* env);
238 AVSValue TrimRight(AVSValue args, void*, IScriptEnvironment* env);
239
240 AVSValue Rand(AVSValue args, void* user_data, IScriptEnvironment* env);
241
242 AVSValue Select(AVSValue args, void*, IScriptEnvironment* env);
243
244 AVSValue NOP(AVSValue args, void*, IScriptEnvironment* env);
245
246 AVSValue Undefined(AVSValue args, void*, IScriptEnvironment* env);
247
248 AVSValue Exist(AVSValue args, void*, IScriptEnvironment* env);
249
250 // WE ->
251 AVSValue AVSChr(AVSValue args, void*, IScriptEnvironment* env);
252 AVSValue AVSOrd(AVSValue args, void*, IScriptEnvironment* env);
253 AVSValue AVSTime(AVSValue args, void*, IScriptEnvironment* env);
254 AVSValue Spline(AVSValue args, void*, IScriptEnvironment* env);
255 // WE <-
256
257 AVSValue HasVideo(AVSValue args, void*, IScriptEnvironment* env);
258 AVSValue HasAudio(AVSValue args, void*, IScriptEnvironment* env);
259
260 AVSValue AvsMin(AVSValue args, void*, IScriptEnvironment* env);
261 AVSValue AvsMax(AVSValue args, void*, IScriptEnvironment* env);
262
263 AVSValue ScriptName(AVSValue args, void*, IScriptEnvironment* env);
264 AVSValue ScriptFile(AVSValue args, void*, IScriptEnvironment* env);
265 AVSValue ScriptDir (AVSValue args, void*, IScriptEnvironment* env);
266 AVSValue ScriptNameUtf8(AVSValue args, void*, IScriptEnvironment* env);
267 AVSValue ScriptFileUtf8(AVSValue args, void*, IScriptEnvironment* env);
268 AVSValue ScriptDirUtf8(AVSValue args, void*, IScriptEnvironment* env);
269
270 AVSValue AddAutoloadDir (AVSValue args, void*, IScriptEnvironment* env);
271 AVSValue ClearAutoloadDirs (AVSValue args, void*, IScriptEnvironment* env);
272 AVSValue ListAutoloadDirs(AVSValue args, void*, IScriptEnvironment* env);
273 AVSValue AutoloadPlugins (AVSValue args, void*, IScriptEnvironment* env);
274 AVSValue FunctionExists (AVSValue args, void*, IScriptEnvironment* env);
275 AVSValue InternalFunctionExists (AVSValue args, void*, IScriptEnvironment* env);
276
277 AVSValue SetFilterMTMode (AVSValue args, void*, IScriptEnvironment* env);
278 AVSValue SetLogParams(AVSValue args, void*, IScriptEnvironment* env);
279 AVSValue LogMsg(AVSValue args, void*, IScriptEnvironment* env);
280
281 AVSValue SetCacheMode(AVSValue args, void*, IScriptEnvironment* env);
282 AVSValue SetDeviceOpt(AVSValue args, void*, IScriptEnvironment* env);
283 AVSValue SetMemoryMax(AVSValue args, void*, IScriptEnvironment* env);
284 AVSValue SetMaxCPU(AVSValue args, void*, IScriptEnvironment* env); // 20200331
285 AVSValue SetFilterProp(AVSValue args, void*, IScriptEnvironment* env);
286 AVSValue GetFilterProps(AVSValue args, void*, IScriptEnvironment* env);
287 AVSValue SetFilterPropPassthrough(AVSValue args, void*, IScriptEnvironment* env);
288
289 AVSValue IsY(AVSValue args, void*, IScriptEnvironment* env);
290 AVSValue Is420(AVSValue args, void*, IScriptEnvironment* env);
291 AVSValue Is422(AVSValue args, void*, IScriptEnvironment* env);
292 AVSValue Is444(AVSValue args, void*, IScriptEnvironment* env);
293 AVSValue IsRGB48(AVSValue args, void*, IScriptEnvironment* env);
294 AVSValue IsRGB64(AVSValue args, void*, IScriptEnvironment* env);
295 AVSValue ComponentSize(AVSValue args, void*, IScriptEnvironment* env);
296 AVSValue BitsPerComponent(AVSValue args, void*, IScriptEnvironment* env);
297 AVSValue IsYUVA(AVSValue args, void*, IScriptEnvironment* env);
298 AVSValue IsPlanarRGB(AVSValue args, void*, IScriptEnvironment* env);
299 AVSValue IsPlanarRGBA(AVSValue args, void*, IScriptEnvironment* env);
300 AVSValue ColorSpaceNameToPixelType(AVSValue args, void*, IScriptEnvironment* env);
301 AVSValue NumComponents(AVSValue args, void*, IScriptEnvironment* env);
302 AVSValue HasAlpha(AVSValue args, void*, IScriptEnvironment* env);
303 AVSValue IsPackedRGB(AVSValue args, void*, IScriptEnvironment* env);
304
305 AVSValue ReplaceStr(AVSValue args, void*, IScriptEnvironment* env); // avs+ 161230
306 AVSValue IsVideoFloat(AVSValue args, void*, IScriptEnvironment* env); // avs+ 170309
307
308 AVSValue GetProcessInfo(AVSValue args, void*, IScriptEnvironment* env); // avs+ 170526
309 AVSValue StrToUtf8(AVSValue args, void*, IScriptEnvironment* env); // avs+ 170601
310 AVSValue StrFromUtf8(AVSValue args, void*, IScriptEnvironment* env); // avs+ 170601
311
312 AVSValue IsFloatUvZeroBased(AVSValue args, void*, IScriptEnvironment* env); // avs+ 180516
313 AVSValue BuildPixelType(AVSValue args, void*, IScriptEnvironment* env); // avs+ 180517
314 AVSValue VarExist(AVSValue args, void*, IScriptEnvironment* env); // avs+ 180606
315
316 AVSValue ArrayCreate(AVSValue args, void*, IScriptEnvironment* env);
317 AVSValue IsArray(AVSValue args, void*, IScriptEnvironment* env);
318 AVSValue ArrayGet(AVSValue args, void*, IScriptEnvironment* env);
319 AVSValue ArraySize(AVSValue args, void*, IScriptEnvironment* env);
320 AVSValue ArrayIns(AVSValue args, void*, IScriptEnvironment* env);
321 AVSValue ArrayDel(AVSValue args, void*, IScriptEnvironment* env);
322 AVSValue ArraySort(AVSValue args, void*, IScriptEnvironment* env);
323
324 #endif // __Script_H__
325