279 lines
16 KiB
C++
279 lines
16 KiB
C++
|
#include "vrclient_private.h"
|
||
|
#include "vrclient_defs.h"
|
||
|
#include "openvr_v0.9.10/openvr.h"
|
||
|
using namespace vr;
|
||
|
extern "C" {
|
||
|
#include "struct_converters.h"
|
||
|
}
|
||
|
#include "cppIVROverlay_IVROverlay_005.h"
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_FindOverlay(void *linux_side, const char * pchOverlayKey, VROverlayHandle_t * pOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->FindOverlay((const char *)pchOverlayKey, (vr::VROverlayHandle_t *)pOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_CreateOverlay(void *linux_side, const char * pchOverlayKey, const char * pchOverlayFriendlyName, VROverlayHandle_t * pOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->CreateOverlay((const char *)pchOverlayKey, (const char *)pchOverlayFriendlyName, (vr::VROverlayHandle_t *)pOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_DestroyOverlay(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->DestroyOverlay((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetHighQualityOverlay(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetHighQualityOverlay((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayHandle_t cppIVROverlay_IVROverlay_005_GetHighQualityOverlay(void *linux_side)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetHighQualityOverlay();
|
||
|
}
|
||
|
|
||
|
uint32_t cppIVROverlay_IVROverlay_005_GetOverlayKey(void *linux_side, VROverlayHandle_t ulOverlayHandle, char * pchValue, uint32_t unBufferSize, VROverlayError * pError)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayKey((vr::VROverlayHandle_t)ulOverlayHandle, (char *)pchValue, (uint32_t)unBufferSize, (vr::VROverlayError *)pError);
|
||
|
}
|
||
|
|
||
|
uint32_t cppIVROverlay_IVROverlay_005_GetOverlayName(void *linux_side, VROverlayHandle_t ulOverlayHandle, char * pchValue, uint32_t unBufferSize, VROverlayError * pError)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayName((vr::VROverlayHandle_t)ulOverlayHandle, (char *)pchValue, (uint32_t)unBufferSize, (vr::VROverlayError *)pError);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayImageData(void *linux_side, VROverlayHandle_t ulOverlayHandle, void * pvBuffer, uint32_t unBufferSize, uint32_t * punWidth, uint32_t * punHeight)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayImageData((vr::VROverlayHandle_t)ulOverlayHandle, (void *)pvBuffer, (uint32_t)unBufferSize, (uint32_t *)punWidth, (uint32_t *)punHeight);
|
||
|
}
|
||
|
|
||
|
const char * cppIVROverlay_IVROverlay_005_GetOverlayErrorNameFromEnum(void *linux_side, VROverlayError error)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayErrorNameFromEnum((vr::VROverlayError)error);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayFlag(void *linux_side, VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool bEnabled)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayFlag((vr::VROverlayHandle_t)ulOverlayHandle, (vr::VROverlayFlags)eOverlayFlag, (bool)bEnabled);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayFlag(void *linux_side, VROverlayHandle_t ulOverlayHandle, VROverlayFlags eOverlayFlag, bool * pbEnabled)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayFlag((vr::VROverlayHandle_t)ulOverlayHandle, (vr::VROverlayFlags)eOverlayFlag, (bool *)pbEnabled);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayColor(void *linux_side, VROverlayHandle_t ulOverlayHandle, float fRed, float fGreen, float fBlue)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayColor((vr::VROverlayHandle_t)ulOverlayHandle, (float)fRed, (float)fGreen, (float)fBlue);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayColor(void *linux_side, VROverlayHandle_t ulOverlayHandle, float * pfRed, float * pfGreen, float * pfBlue)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayColor((vr::VROverlayHandle_t)ulOverlayHandle, (float *)pfRed, (float *)pfGreen, (float *)pfBlue);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayAlpha(void *linux_side, VROverlayHandle_t ulOverlayHandle, float fAlpha)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayAlpha((vr::VROverlayHandle_t)ulOverlayHandle, (float)fAlpha);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayAlpha(void *linux_side, VROverlayHandle_t ulOverlayHandle, float * pfAlpha)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayAlpha((vr::VROverlayHandle_t)ulOverlayHandle, (float *)pfAlpha);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayGamma(void *linux_side, VROverlayHandle_t ulOverlayHandle, float fGamma)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayGamma((vr::VROverlayHandle_t)ulOverlayHandle, (float)fGamma);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayGamma(void *linux_side, VROverlayHandle_t ulOverlayHandle, float * pfGamma)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayGamma((vr::VROverlayHandle_t)ulOverlayHandle, (float *)pfGamma);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayWidthInMeters(void *linux_side, VROverlayHandle_t ulOverlayHandle, float fWidthInMeters)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayWidthInMeters((vr::VROverlayHandle_t)ulOverlayHandle, (float)fWidthInMeters);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayWidthInMeters(void *linux_side, VROverlayHandle_t ulOverlayHandle, float * pfWidthInMeters)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayWidthInMeters((vr::VROverlayHandle_t)ulOverlayHandle, (float *)pfWidthInMeters);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayAutoCurveDistanceRangeInMeters(void *linux_side, VROverlayHandle_t ulOverlayHandle, float fMinDistanceInMeters, float fMaxDistanceInMeters)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayAutoCurveDistanceRangeInMeters((vr::VROverlayHandle_t)ulOverlayHandle, (float)fMinDistanceInMeters, (float)fMaxDistanceInMeters);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayAutoCurveDistanceRangeInMeters(void *linux_side, VROverlayHandle_t ulOverlayHandle, float * pfMinDistanceInMeters, float * pfMaxDistanceInMeters)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayAutoCurveDistanceRangeInMeters((vr::VROverlayHandle_t)ulOverlayHandle, (float *)pfMinDistanceInMeters, (float *)pfMaxDistanceInMeters);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayTextureBounds(void *linux_side, VROverlayHandle_t ulOverlayHandle, VRTextureBounds_t * pOverlayTextureBounds)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayTextureBounds((vr::VROverlayHandle_t)ulOverlayHandle, (const vr::VRTextureBounds_t *)pOverlayTextureBounds);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayTextureBounds(void *linux_side, VROverlayHandle_t ulOverlayHandle, VRTextureBounds_t * pOverlayTextureBounds)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayTextureBounds((vr::VROverlayHandle_t)ulOverlayHandle, (vr::VRTextureBounds_t *)pOverlayTextureBounds);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayTransformType(void *linux_side, VROverlayHandle_t ulOverlayHandle, VROverlayTransformType * peTransformType)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayTransformType((vr::VROverlayHandle_t)ulOverlayHandle, (vr::VROverlayTransformType *)peTransformType);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayTransformAbsolute(void *linux_side, VROverlayHandle_t ulOverlayHandle, TrackingUniverseOrigin eTrackingOrigin, HmdMatrix34_t * pmatTrackingOriginToOverlayTransform)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayTransformAbsolute((vr::VROverlayHandle_t)ulOverlayHandle, (vr::TrackingUniverseOrigin)eTrackingOrigin, (const vr::HmdMatrix34_t *)pmatTrackingOriginToOverlayTransform);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayTransformAbsolute(void *linux_side, VROverlayHandle_t ulOverlayHandle, TrackingUniverseOrigin * peTrackingOrigin, HmdMatrix34_t * pmatTrackingOriginToOverlayTransform)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayTransformAbsolute((vr::VROverlayHandle_t)ulOverlayHandle, (vr::TrackingUniverseOrigin *)peTrackingOrigin, (vr::HmdMatrix34_t *)pmatTrackingOriginToOverlayTransform);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayTransformTrackedDeviceRelative(void *linux_side, VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unTrackedDevice, HmdMatrix34_t * pmatTrackedDeviceToOverlayTransform)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayTransformTrackedDeviceRelative((vr::VROverlayHandle_t)ulOverlayHandle, (vr::TrackedDeviceIndex_t)unTrackedDevice, (const vr::HmdMatrix34_t *)pmatTrackedDeviceToOverlayTransform);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayTransformTrackedDeviceRelative(void *linux_side, VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t * punTrackedDevice, HmdMatrix34_t * pmatTrackedDeviceToOverlayTransform)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayTransformTrackedDeviceRelative((vr::VROverlayHandle_t)ulOverlayHandle, (vr::TrackedDeviceIndex_t *)punTrackedDevice, (vr::HmdMatrix34_t *)pmatTrackedDeviceToOverlayTransform);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_ShowOverlay(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->ShowOverlay((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_HideOverlay(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->HideOverlay((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
bool cppIVROverlay_IVROverlay_005_IsOverlayVisible(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->IsOverlayVisible((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
bool cppIVROverlay_IVROverlay_005_PollNextOverlayEvent(void *linux_side, VROverlayHandle_t ulOverlayHandle, winVREvent_t_0910 * pEvent)
|
||
|
{
|
||
|
VREvent_t lin;
|
||
|
bool _ret;
|
||
|
_ret = ((IVROverlay*)linux_side)->PollNextOverlayEvent((vr::VROverlayHandle_t)ulOverlayHandle, &lin);
|
||
|
struct_VREvent_t_0910_lin_to_win(&lin, pEvent);
|
||
|
return _ret;
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayInputMethod(void *linux_side, VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod * peInputMethod)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayInputMethod((vr::VROverlayHandle_t)ulOverlayHandle, (vr::VROverlayInputMethod *)peInputMethod);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayInputMethod(void *linux_side, VROverlayHandle_t ulOverlayHandle, VROverlayInputMethod eInputMethod)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayInputMethod((vr::VROverlayHandle_t)ulOverlayHandle, (vr::VROverlayInputMethod)eInputMethod);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetOverlayMouseScale(void *linux_side, VROverlayHandle_t ulOverlayHandle, HmdVector2_t * pvecMouseScale)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetOverlayMouseScale((vr::VROverlayHandle_t)ulOverlayHandle, (vr::HmdVector2_t *)pvecMouseScale);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayMouseScale(void *linux_side, VROverlayHandle_t ulOverlayHandle, HmdVector2_t * pvecMouseScale)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayMouseScale((vr::VROverlayHandle_t)ulOverlayHandle, (const vr::HmdVector2_t *)pvecMouseScale);
|
||
|
}
|
||
|
|
||
|
bool cppIVROverlay_IVROverlay_005_ComputeOverlayIntersection(void *linux_side, VROverlayHandle_t ulOverlayHandle, VROverlayIntersectionParams_t * pParams, VROverlayIntersectionResults_t * pResults)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->ComputeOverlayIntersection((vr::VROverlayHandle_t)ulOverlayHandle, (const vr::VROverlayIntersectionParams_t *)pParams, (vr::VROverlayIntersectionResults_t *)pResults);
|
||
|
}
|
||
|
|
||
|
bool cppIVROverlay_IVROverlay_005_HandleControllerOverlayInteractionAsMouse(void *linux_side, VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t unControllerDeviceIndex)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->HandleControllerOverlayInteractionAsMouse((vr::VROverlayHandle_t)ulOverlayHandle, (vr::TrackedDeviceIndex_t)unControllerDeviceIndex);
|
||
|
}
|
||
|
|
||
|
bool cppIVROverlay_IVROverlay_005_IsFocusOverlay(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->IsFocusOverlay((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayTexture(void *linux_side, VROverlayHandle_t ulOverlayHandle, GraphicsAPIConvention eTextureType, void * pTexture)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayTexture((vr::VROverlayHandle_t)ulOverlayHandle, (vr::GraphicsAPIConvention)eTextureType, (void *)pTexture);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_ClearOverlayTexture(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->ClearOverlayTexture((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayRaw(void *linux_side, VROverlayHandle_t ulOverlayHandle, void * pvBuffer, uint32_t unWidth, uint32_t unHeight, uint32_t unDepth)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayRaw((vr::VROverlayHandle_t)ulOverlayHandle, (void *)pvBuffer, (uint32_t)unWidth, (uint32_t)unHeight, (uint32_t)unDepth);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetOverlayFromFile(void *linux_side, VROverlayHandle_t ulOverlayHandle, const char * pchFilePath)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetOverlayFromFile((vr::VROverlayHandle_t)ulOverlayHandle, (const char *)pchFilePath);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_CreateDashboardOverlay(void *linux_side, const char * pchOverlayKey, const char * pchOverlayFriendlyName, VROverlayHandle_t * pMainHandle, VROverlayHandle_t * pThumbnailHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->CreateDashboardOverlay((const char *)pchOverlayKey, (const char *)pchOverlayFriendlyName, (vr::VROverlayHandle_t *)pMainHandle, (vr::VROverlayHandle_t *)pThumbnailHandle);
|
||
|
}
|
||
|
|
||
|
bool cppIVROverlay_IVROverlay_005_IsDashboardVisible(void *linux_side)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->IsDashboardVisible();
|
||
|
}
|
||
|
|
||
|
bool cppIVROverlay_IVROverlay_005_IsActiveDashboardOverlay(void *linux_side, VROverlayHandle_t ulOverlayHandle)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->IsActiveDashboardOverlay((vr::VROverlayHandle_t)ulOverlayHandle);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_SetDashboardOverlaySceneProcess(void *linux_side, VROverlayHandle_t ulOverlayHandle, uint32_t unProcessId)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->SetDashboardOverlaySceneProcess((vr::VROverlayHandle_t)ulOverlayHandle, (uint32_t)unProcessId);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_GetDashboardOverlaySceneProcess(void *linux_side, VROverlayHandle_t ulOverlayHandle, uint32_t * punProcessId)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetDashboardOverlaySceneProcess((vr::VROverlayHandle_t)ulOverlayHandle, (uint32_t *)punProcessId);
|
||
|
}
|
||
|
|
||
|
void cppIVROverlay_IVROverlay_005_ShowDashboard(void *linux_side, const char * pchOverlayToShow)
|
||
|
{
|
||
|
((IVROverlay*)linux_side)->ShowDashboard((const char *)pchOverlayToShow);
|
||
|
}
|
||
|
|
||
|
vr::VROverlayError cppIVROverlay_IVROverlay_005_ShowKeyboard(void *linux_side, EGamepadTextInputMode eInputMode, EGamepadTextInputLineMode eLineInputMode, const char * pchDescription, uint32_t unCharMax, const char * pchExistingText, bool bUseMinimalMode)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->ShowKeyboard((vr::EGamepadTextInputMode)eInputMode, (vr::EGamepadTextInputLineMode)eLineInputMode, (const char *)pchDescription, (uint32_t)unCharMax, (const char *)pchExistingText, (bool)bUseMinimalMode);
|
||
|
}
|
||
|
|
||
|
uint32_t cppIVROverlay_IVROverlay_005_GetKeyboardText(void *linux_side, char * pchText, uint32_t cchText)
|
||
|
{
|
||
|
return ((IVROverlay*)linux_side)->GetKeyboardText((char *)pchText, (uint32_t)cchText);
|
||
|
}
|
||
|
|
||
|
void cppIVROverlay_IVROverlay_005_HideKeyboard(void *linux_side)
|
||
|
{
|
||
|
((IVROverlay*)linux_side)->HideKeyboard();
|
||
|
}
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|