Skip to content

Add C++ binding/implementation thread safety options #220

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Examples/ThreadSafety/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
LibThreadSafe_component
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
/*++

Copyright (C) 2025 Thread-safe library developers

All rights reserved.

This file has been generated by the Automatic Component Toolkit (ACT) version 1.8.1-develop.

Abstract: This is an autogenerated C++-Header file in order to allow an easy
use of Thread-safe library

Interface version: 1.0.0

*/

#ifndef __LIBTHREADSAFE_DYNAMICHEADER_CPPTYPES
#define __LIBTHREADSAFE_DYNAMICHEADER_CPPTYPES

#include "libthreadsafe_types.hpp"



/*************************************************************************************************************************
Class definition for Base
**************************************************************************************************************************/

/**
* Get Class Type Id
*
* @param[in] pBase - Base instance.
* @param[out] pClassTypeId - Class type as a 64 bits integer
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeBase_ClassTypeIdPtr) (LibThreadSafe_Base pBase, LibThreadSafe_uint64 * pClassTypeId);

/**
* If thread safety for class in library is enabled it should lock object for calling thread
*
* @param[in] pBase - Base instance.
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeBase__lockInstancePtr) (LibThreadSafe_Base pBase);

/**
* If thread safety for class in library is enabled it should unlock object for other threads
*
* @param[in] pBase - Base instance.
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeBase__unlockInstancePtr) (LibThreadSafe_Base pBase);

/*************************************************************************************************************************
Class definition for StringReturner
**************************************************************************************************************************/

/**
* Returns a string
*
* @param[in] pStringReturner - StringReturner instance.
* @param[in] nValueBufferSize - size of the buffer (including trailing 0)
* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size.
* @param[out] pValueBuffer - buffer of , may be NULL
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeStringReturner_GetStringPtr) (LibThreadSafe_StringReturner pStringReturner, const LibThreadSafe_uint32 nValueBufferSize, LibThreadSafe_uint32* pValueNeededChars, char * pValueBuffer);

/**
* Function that may crash when called from different threads at the same time
*
* @param[in] pStringReturner - StringReturner instance.
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeStringReturner_ThreadSafetyCheckPtr) (LibThreadSafe_StringReturner pStringReturner);

/*************************************************************************************************************************
Class definition for SoftStringReturner
**************************************************************************************************************************/

/**
* Returns a string
*
* @param[in] pSoftStringReturner - SoftStringReturner instance.
* @param[in] nValueBufferSize - size of the buffer (including trailing 0)
* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size.
* @param[out] pValueBuffer - buffer of , may be NULL
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeSoftStringReturner_GetStringPtr) (LibThreadSafe_SoftStringReturner pSoftStringReturner, const LibThreadSafe_uint32 nValueBufferSize, LibThreadSafe_uint32* pValueNeededChars, char * pValueBuffer);

/**
* Function that may crash when called from different threads at the same time
*
* @param[in] pSoftStringReturner - SoftStringReturner instance.
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeSoftStringReturner_ThreadSafetyCheckPtr) (LibThreadSafe_SoftStringReturner pSoftStringReturner);

/*************************************************************************************************************************
Class definition for StrictStringReturner
**************************************************************************************************************************/

/**
* Returns a string
*
* @param[in] pStrictStringReturner - StrictStringReturner instance.
* @param[in] nValueBufferSize - size of the buffer (including trailing 0)
* @param[out] pValueNeededChars - will be filled with the count of the written bytes, or needed buffer size.
* @param[out] pValueBuffer - buffer of , may be NULL
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeStrictStringReturner_GetStringPtr) (LibThreadSafe_StrictStringReturner pStrictStringReturner, const LibThreadSafe_uint32 nValueBufferSize, LibThreadSafe_uint32* pValueNeededChars, char * pValueBuffer);

/**
* Function that shouldn't crash when called from different threads at the same time
*
* @param[in] pStrictStringReturner - StrictStringReturner instance.
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeStrictStringReturner_ThreadSafetyCheckPtr) (LibThreadSafe_StrictStringReturner pStrictStringReturner);

/*************************************************************************************************************************
Global functions
**************************************************************************************************************************/

/**
* retrieves the binary version of this library.
*
* @param[out] pMajor - returns the major version of this library
* @param[out] pMinor - returns the minor version of this library
* @param[out] pMicro - returns the micro version of this library
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeGetVersionPtr) (LibThreadSafe_uint32 * pMajor, LibThreadSafe_uint32 * pMinor, LibThreadSafe_uint32 * pMicro);

/**
* Returns the last error recorded on this object
*
* @param[in] pInstance - Instance Handle
* @param[in] nErrorMessageBufferSize - size of the buffer (including trailing 0)
* @param[out] pErrorMessageNeededChars - will be filled with the count of the written bytes, or needed buffer size.
* @param[out] pErrorMessageBuffer - buffer of Message of the last error, may be NULL
* @param[out] pHasError - Is there a last error to query
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeGetLastErrorPtr) (LibThreadSafe_Base pInstance, const LibThreadSafe_uint32 nErrorMessageBufferSize, LibThreadSafe_uint32* pErrorMessageNeededChars, char * pErrorMessageBuffer, bool * pHasError);

/**
* Acquire shared ownership of an Instance
*
* @param[in] pInstance - Instance Handle
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeAcquireInstancePtr) (LibThreadSafe_Base pInstance);

/**
* Releases shared ownership of an Instance
*
* @param[in] pInstance - Instance Handle
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeReleaseInstancePtr) (LibThreadSafe_Base pInstance);

/**
* Creates a new StringReturner instance
*
* @param[out] pInstance - New StringReturner instance
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeCreateStringReturnerPtr) (LibThreadSafe_StringReturner * pInstance);

/**
* Creates a new SoftStringReturner instance
*
* @param[out] pInstance - New SoftStringReturner instance
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeCreateSoftStringReturnerPtr) (LibThreadSafe_SoftStringReturner * pInstance);

/**
* Creates a new StrictStringReturner instance
*
* @param[out] pInstance - New StrictStringReturner instance
* @return error code or 0 (success)
*/
typedef LibThreadSafeResult (*PLibThreadSafeCreateStrictStringReturnerPtr) (LibThreadSafe_StrictStringReturner * pInstance);

/*************************************************************************************************************************
Function Table Structure
**************************************************************************************************************************/

typedef struct {
void * m_LibraryHandle;
PLibThreadSafeBase_ClassTypeIdPtr m_Base_ClassTypeId;
PLibThreadSafeBase__lockInstancePtr m_Base__lockInstance;
PLibThreadSafeBase__unlockInstancePtr m_Base__unlockInstance;
PLibThreadSafeStringReturner_GetStringPtr m_StringReturner_GetString;
PLibThreadSafeStringReturner_ThreadSafetyCheckPtr m_StringReturner_ThreadSafetyCheck;
PLibThreadSafeSoftStringReturner_GetStringPtr m_SoftStringReturner_GetString;
PLibThreadSafeSoftStringReturner_ThreadSafetyCheckPtr m_SoftStringReturner_ThreadSafetyCheck;
PLibThreadSafeStrictStringReturner_GetStringPtr m_StrictStringReturner_GetString;
PLibThreadSafeStrictStringReturner_ThreadSafetyCheckPtr m_StrictStringReturner_ThreadSafetyCheck;
PLibThreadSafeGetVersionPtr m_GetVersion;
PLibThreadSafeGetLastErrorPtr m_GetLastError;
PLibThreadSafeAcquireInstancePtr m_AcquireInstance;
PLibThreadSafeReleaseInstancePtr m_ReleaseInstance;
PLibThreadSafeCreateStringReturnerPtr m_CreateStringReturner;
PLibThreadSafeCreateSoftStringReturnerPtr m_CreateSoftStringReturner;
PLibThreadSafeCreateStrictStringReturnerPtr m_CreateStrictStringReturner;
} sLibThreadSafeDynamicWrapperTable;

#endif // __LIBTHREADSAFE_DYNAMICHEADER_CPPTYPES

Loading
Loading