blob: e1ab20c21683f889c39a71ef3609c364bf6f956d (
plain)
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
|
/* $Id: CFGMInternal.h $ */
/** @file
* CFGM - Internal header file.
*/
/*
* Copyright (C) 2006-2007 Sun Microsystems, Inc.
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* you can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
* Clara, CA 95054 USA or visit http://www.sun.com if you need
* additional information or have any questions.
*/
#ifndef ___CFGMInternal_h
#define ___CFGMInternal_h
#include <VBox/cdefs.h>
#include <VBox/types.h>
/** @defgroup grp_cfgm_int Internals.
* @ingroup grp_cfgm
* @{
*/
/**
* Configuration manager propertype value.
*/
typedef union CFGMVALUE
{
/** Integer value. */
struct CFGMVALUE_INTEGER
{
/** The integer represented as 64-bit unsigned. */
uint64_t u64;
} Integer;
/** String value. (UTF-8 of course) */
struct CFGMVALUE_STRING
{
/** Length of string. (In bytes, including the terminator.) */
size_t cch;
/** Pointer to the string. */
char *psz;
} String;
/** Byte string value. */
struct CFGMVALUE_BYTES
{
/** Length of byte string. (in bytes) */
size_t cb;
/** Pointer to the byte string. */
uint8_t *pau8;
} Bytes;
} CFGMVALUE;
/** Pointer to configuration manager property value. */
typedef CFGMVALUE *PCFGMVALUE;
/**
* Configuration manager tree node.
*/
typedef struct CFGMLEAF
{
/** Pointer to the next leaf. */
PCFGMLEAF pNext;
/** Pointer to the previous leaf. */
PCFGMLEAF pPrev;
/** Property type. */
CFGMVALUETYPE enmType;
/** Property value. */
CFGMVALUE Value;
/** Name length. (exclusive) */
size_t cchName;
/** Name. */
char szName[1];
} CFGMLEAF;
/**
* Configuration manager tree node.
*/
typedef struct CFGMNODE
{
/** Pointer to the next node (on this level). */
PCFGMNODE pNext;
/** Pointer to the previuos node (on this level). */
PCFGMNODE pPrev;
/** Pointer Parent node. */
PCFGMNODE pParent;
/** Pointer to first child node. */
PCFGMNODE pFirstChild;
/** Pointer to first property leaf. */
PCFGMLEAF pFirstLeaf;
/** Pointer to the VM owning this node. */
PVM pVM;
/** The root of a 'restricted' subtree, i.e. the parent is
* invisible to non-trusted users.
*/
bool fRestrictedRoot;
/** Name length. (exclusive) */
size_t cchName;
/** Name. */
char szName[1];
} CFGMNODE;
/**
* CFGM VM Instance data.
* Changes to this must checked against the padding of the cfgm union in VM!
*/
typedef struct CFGM
{
/** Pointer to root node. */
R3PTRTYPE(PCFGMNODE) pRoot;
} CFGM;
/** @} */
#endif
|