VirtualBox

source: vbox/trunk/src/VBox/Storage/testcase/VDScriptInternal.h@ 58090

Last change on this file since 58090 was 44901, checked in by vboxsync, 12 years ago

Storage/VDScript: Interpreter updates

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.4 KB
Line 
1/** @file
2 *
3 * VBox HDD container test utility - scripting engine, internal script structures.
4 */
5
6/*
7 * Copyright (C) 2013 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17#ifndef _VDScriptInternal_h__
18#define _VDScriptInternal_h__
19
20#include <iprt/list.h>
21#include <iprt/string.h>
22
23#include "VDScript.h"
24
25/**
26 * Script function which can be called.
27 */
28typedef struct VDSCRIPTFN
29{
30 /** String space core. */
31 RTSTRSPACECORE Core;
32 /** Flag whether function is defined in the source or was
33 * registered from the outside. */
34 bool fExternal;
35 /** Flag dependent data. */
36 union
37 {
38 /** Data for functions defined in the source. */
39 struct
40 {
41 /** Pointer to the AST defining the function. */
42 PVDSCRIPTASTFN pAstFn;
43 } Internal;
44 /** Data for external defined functions. */
45 struct
46 {
47 /** Callback function. */
48 PFNVDSCRIPTCALLBACK pfnCallback;
49 /** Opaque user data. */
50 void *pvUser;
51 } External;
52 } Type;
53 /** Return type of the function. */
54 VDSCRIPTTYPE enmTypeRetn;
55 /** Number of arguments the function takes. */
56 unsigned cArgs;
57 /** Variable sized array of argument types. */
58 VDSCRIPTTYPE aenmArgTypes[1];
59} VDSCRIPTFN;
60/** Pointer to a script function registration structure. */
61typedef VDSCRIPTFN *PVDSCRIPTFN;
62
63/** Pointer to a tokenize state. */
64typedef struct VDTOKENIZER *PVDTOKENIZER;
65
66/**
67 * Script context.
68 */
69typedef struct VDSCRIPTCTXINT
70{
71 /** String space of external registered and source defined functions. */
72 RTSTRSPACE hStrSpaceFn;
73 /** List of ASTs for functions - VDSCRIPTASTFN. */
74 RTLISTANCHOR ListAst;
75 /** Pointer to the current tokenizer state. */
76 PVDTOKENIZER pTokenizer;
77} VDSCRIPTCTXINT;
78/** Pointer to a script context. */
79typedef VDSCRIPTCTXINT *PVDSCRIPTCTXINT;
80
81/**
82 * Check the context for type correctness.
83 *
84 * @returns VBox status code.
85 * @param pThis The script context.
86 */
87DECLHIDDEN(int) vdScriptCtxCheck(PVDSCRIPTCTXINT pThis);
88
89/**
90 * Interprete a given function AST. The executed functions
91 * must be type correct, otherwise the behavior is undefined
92 * (Will assert in debug builds).
93 *
94 * @returns VBox status code.
95 * @param pThis The script context.
96 * @param pszFn The function name to interprete.
97 * @param paArgs Arguments to pass to the function.
98 * @param cArgs Number of arguments.
99 * @param pRet Where to store the return value on success.
100 *
101 * @note: The AST is not modified in any way during the interpretation process.
102 */
103DECLHIDDEN(int) vdScriptCtxInterprete(PVDSCRIPTCTXINT pThis, const char *pszFn,
104 PVDSCRIPTARG paArgs, unsigned cArgs,
105 PVDSCRIPTARG pRet);
106
107#endif /* _VDScriptInternal_h__ */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette