VirtualBox

source: vbox/trunk/src/VBox/VMM/CFGMInternal.h@ 2291

Last change on this file since 2291 was 23, checked in by vboxsync, 18 years ago

string.h & stdio.h + header cleanups.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.6 KB
Line 
1/* $Id: CFGMInternal.h 23 2007-01-15 14:08:28Z vboxsync $ */
2/** @file
3 * CFGM - Internal header file.
4 */
5
6/*
7 * Copyright (C) 2006 InnoTek Systemberatung GmbH
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 as published by the Free Software Foundation,
13 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
14 * distribution. VirtualBox OSE is distributed in the hope that it will
15 * be useful, but WITHOUT ANY WARRANTY of any kind.
16 *
17 * If you received this file as part of a commercial VirtualBox
18 * distribution, then only the terms of your commercial VirtualBox
19 * license agreement apply instead of the previous paragraph.
20 */
21
22#ifndef __CFGMInternal_h__
23#define __CFGMInternal_h__
24
25#include <VBox/cdefs.h>
26#include <VBox/types.h>
27
28
29/** @defgroup grp_cfgm_int Internals.
30 * @ingroup grp_cfgm
31 * @{
32 */
33
34
35/**
36 * Configuration manager propertype value.
37 */
38typedef union CFGMVALUE
39{
40 /** Integer value. */
41 struct CFGMVALUE_INTEGER
42 {
43 /** The integer represented as 64-bit unsigned. */
44 uint64_t u64;
45 } Integer;
46
47 /** String value. (UTF-8 of course) */
48 struct CFGMVALUE_STRING
49 {
50 /** Length of string. (In bytes, including the terminator.) */
51 RTUINT cch;
52 /** Pointer to the string. */
53 char *psz;
54 } String;
55
56 /** Byte string value. */
57 struct CFGMVALUE_BYTES
58 {
59 /** Length of byte string. (in bytes) */
60 RTUINT cb;
61 /** Pointer to the byte string. */
62 uint8_t *pau8;
63 } Bytes;
64} CFGMVALUE;
65/** Pointer to configuration manager property value. */
66typedef CFGMVALUE *PCFGMVALUE;
67
68
69/**
70 * Configuration manager tree node.
71 */
72typedef struct CFGMLEAF
73{
74 /** Pointer to the next leaf. */
75 PCFGMLEAF pNext;
76 /** Pointer to the previous leaf. */
77 PCFGMLEAF pPrev;
78
79 /** Property type. */
80 CFGMVALUETYPE enmType;
81 /** Property value. */
82 CFGMVALUE Value;
83
84 /** Name length. (exclusive) */
85 RTUINT cchName;
86 /** Name. */
87 char szName[1];
88} CFGMLEAF;
89
90
91/**
92 * Configuration manager tree node.
93 */
94typedef struct CFGMNODE
95{
96 /** Pointer to the next node (on this level). */
97 PCFGMNODE pNext;
98 /** Pointer to the previuos node (on this level). */
99 PCFGMNODE pPrev;
100 /** Pointer Parent node. */
101 PCFGMNODE pParent;
102 /** Pointer to first child node. */
103 PCFGMNODE pFirstChild;
104 /** Pointer to first property leaf. */
105 PCFGMLEAF pFirstLeaf;
106
107 /** Pointer to the VM owning this node. */
108 PVM pVM;
109
110 /** The root of a 'restricted' subtree, i.e. the parent is
111 * invisible to non-trusted users.
112 */
113 bool fRestrictedRoot;
114
115 /** Name length. (exclusive) */
116 RTUINT cchName;
117 /** Name. */
118 char szName[1];
119} CFGMNODE;
120
121
122
123
124/**
125 * Converts a CFGM pointer into a VM pointer.
126 * @returns Pointer to the VM structure the CFGM is part of.
127 * @param pCFGM Pointer to CFGM instance data.
128 */
129#define CFGM2VM(pCFGM) ( (PVM)((char*)pCFGM - pCFGM->offVM) )
130
131/**
132 * CFGM VM Instance data.
133 * Changes to this must checked against the padding of the cfgm union in VM!
134 */
135typedef struct CFGM
136{
137 /** Offset to the VM structure.
138 * See CFGM2VM(). */
139 RTUINT offVM;
140 /** Alignment padding. */
141 RTUINT uPadding0;
142
143 /** Pointer to root node. */
144 HCPTRTYPE(PCFGMNODE) pRoot;
145} CFGM;
146
147/** @} */
148
149#endif
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