VDScriptStack.h revision 5606210c3e3213a247418d91961ef5380fc87640
/** @file
*
* VBox HDD container test utility - scripting engine, internal stack implementation.
*/
/*
* Copyright (C) 2013 Oracle Corporation
*
* 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 (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.
*/
#ifndef _VDScriptStack_h__
#define _VDScriptStack_h__
#include "VDScript.h"
/**
* Stack structure.
*/
typedef struct VDSCRIPTSTACK
{
/** Size of one stack element. */
/** Stack memory. */
void *pvStack;
/** Number of elements on the stack. */
unsigned cOnStack;
/** Maximum number of elements the stack can hold. */
unsigned cOnStackMax;
/** Pointer to a stack. */
typedef VDSCRIPTSTACK *PVDSCRIPTSTACK;
/**
* Init the stack structure.
*
* @returns nothing.
* @param pStack The stack to initialize.
* @param cbStackEntry The size of one stack entry.
*/
{
pStack->cOnStackMax = 0;
}
/**
* Destroys the given stack freeing all memory.
*
* @returns nothing.
* @param pStack The stack to destroy.
*/
{
pStack->cbStackEntry = 0;
pStack->cOnStackMax = 0;
}
/**
* Gets the topmost unused stack entry.
*
* @returns Pointer to the first unused entry.
* NULL if there is no room left and increasing the stack failed.
* @param pStack The stack.
*/
{
{
void *pvStackNew = NULL;
/* Try to increase stack space. */
if (pvStackNew)
{
}
}
return pvElem;
}
/**
* Gets the topmost used entry on the stack.
*
* @returns Pointer to the first used entry
* or NULL if the stack is empty.
* @param pStack The stack.
*/
{
return NULL;
else
}
/**
* Increases the used element count for the given stack.
*
* @returns nothing.
* @param pStack The stack.
*/
{
}
/**
* Decreases the used element count for the given stack.
*
* @returns nothing.
* @param pStack The stack.
*/
{
}
#endif /* _VDScriptStack_h__ */