CFGMInternal.h revision 17ba03925269c071aa1567eb8c5a49c37a65f62f
/* $Id$ */
/** @file
* CFGM - Internal header file.
*/
/*
* Copyright (C) 2006-2007 innotek GmbH
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License 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.
*
* If you received this file as part of a commercial VirtualBox
* distribution, then only the terms of your commercial VirtualBox
* license agreement apply instead of the previous paragraph.
*/
#ifndef ___CFGMInternal_h
#define ___CFGMInternal_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. */
} Integer;
/** String value. (UTF-8 of course) */
struct CFGMVALUE_STRING
{
/** Length of string. (In bytes, including the terminator.) */
/** Pointer to the string. */
char *psz;
} String;
/** Byte string value. */
struct CFGMVALUE_BYTES
{
/** Length of byte string. (in bytes) */
/** Pointer to the byte string. */
} Bytes;
} CFGMVALUE;
/** Pointer to configuration manager property value. */
typedef CFGMVALUE *PCFGMVALUE;
/**
* Configuration manager tree node.
*/
typedef struct CFGMLEAF
{
/** Pointer to the next leaf. */
/** Pointer to the previous leaf. */
/** Property type. */
/** Property value. */
/** Name length. (exclusive) */
/** Name. */
char szName[1];
} CFGMLEAF;
/**
* Configuration manager tree node.
*/
typedef struct CFGMNODE
{
/** Pointer to the next node (on this level). */
/** Pointer to the previuos node (on this level). */
/** Pointer Parent node. */
/** Pointer to first child node. */
/** Pointer to first property leaf. */
/** Pointer to the VM owning this node. */
/** The root of a 'restricted' subtree, i.e. the parent is
* invisible to non-trusted users.
*/
bool fRestrictedRoot;
/** Name length. (exclusive) */
/** Name. */
char szName[1];
} CFGMNODE;
/**
* Converts a CFGM pointer into a VM pointer.
* @returns Pointer to the VM structure the CFGM is part of.
* @param pCFGM Pointer to CFGM instance data.
*/
/**
* CFGM VM Instance data.
* Changes to this must checked against the padding of the cfgm union in VM!
*/
typedef struct CFGM
{
/** Offset to the VM structure.
* See CFGM2VM(). */
/** Alignment padding. */
/** Pointer to root node. */
} CFGM;
/** @} */
#endif