/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ #ifndef _UNO_DATA_H_ #define _UNO_DATA_H_ #include #ifdef __cplusplus extern "C" { #endif struct _typelib_TypeDescriptionReference; struct _typelib_TypeDescription; struct _typelib_InterfaceTypeDescription; struct _uno_Mapping; /** Generic function pointer declaration to query for an interface. @param pInterface interface @param pTypedemanded interface type @return interface pointer */ typedef void * (SAL_CALL * uno_QueryInterfaceFunc)( void * pInterface, struct _typelib_TypeDescriptionReference * pType ); /** Generic function pointer declaration to acquire an interface. @param pInterface interface to be acquired */ typedef void (SAL_CALL * uno_AcquireFunc)( void * pInterface ); /** Generic function pointer declaration to release an interface. @param pInterface interface to be release */ typedef void (SAL_CALL * uno_ReleaseFunc)( void * pInterface ); /** Tests if two values are equal. May compare different types (e.g., short to long). @param pVal1 pointer to a value @param pVal1TypeDescr type description of pVal1 @param pVal2 pointer to another value @param pVal2TypeDescr type description of pVal2 @param queryInterface function called each time two interfaces are tested whether they belong to the same object; defaults (0) to uno @param release function to release queried interfaces; defaults (0) to uno @return true if values are equal */ sal_Bool SAL_CALL uno_equalData( void * pVal1, struct _typelib_TypeDescription * pVal1TypeDescr, void * pVal2, struct _typelib_TypeDescription * pVal2TypeDescr, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) SAL_THROW_EXTERN_C(); /** Tests if two values are equal. May compare different types (e.g., short to long). @param pVal1 pointer to a value @param pVal1Type type of pVal1 @param pVal2 pointer to another value @param pVal2Type type of pVal2 @param queryInterface function called each time two interfaces are tested whether they belong to the same object; defaults (0) to uno @param release function to release queried interfaces; defaults (0) to uno @return true if values are equal */ sal_Bool SAL_CALL uno_type_equalData( void * pVal1, struct _typelib_TypeDescriptionReference * pVal1Type, void * pVal2, struct _typelib_TypeDescriptionReference * pVal2Type, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) SAL_THROW_EXTERN_C(); /** Copy construct memory with given value. The size of the destination value must be larger or equal to the size of the source value. @param pDest pointer to destination value memory @param pSource pointer to source value @param pTypeDescr type description of source @param acquire function called each time an interface needs to be acquired; defaults (0) to uno */ void SAL_CALL uno_copyData( void * pDest, void * pSource, struct _typelib_TypeDescription * pTypeDescr, uno_AcquireFunc acquire ) SAL_THROW_EXTERN_C(); /** Copy construct memory with given value. The size of the destination value must be larger or equal to the size of the source value. @param pDest pointer to destination value memory @param pSource pointer to source value @param pType type of source @param acquire function called each time an interface needs to be acquired; defaults (0) to uno */ void SAL_CALL uno_type_copyData( void * pDest, void * pSource, struct _typelib_TypeDescriptionReference * pType, uno_AcquireFunc acquire ) SAL_THROW_EXTERN_C(); /** Copy construct memory with given value. The size of the destination value must be larger or equal to the size of the source value. Interfaces are converted/ mapped by mapping parameter. @param pDest pointer to destination value memory @param pSource pointer to source value @param pTypeDescr type description of source @param mapping mapping to convert/ map interfaces */ void SAL_CALL uno_copyAndConvertData( void * pDest, void * pSource, struct _typelib_TypeDescription * pTypeDescr, struct _uno_Mapping * mapping ) SAL_THROW_EXTERN_C(); /** Copy construct memory with given value. The size of the destination value must be larger or equal to the size of the source value. Interfaces are converted/ mapped by mapping parameter. @param pDest pointer to destination value memory @param pSource pointer to source value @param pType type of source @param mapping mapping to convert/ map interfaces */ void SAL_CALL uno_type_copyAndConvertData( void * pDest, void * pSource, struct _typelib_TypeDescriptionReference * pType, struct _uno_Mapping * mapping ) SAL_THROW_EXTERN_C(); /** Destructs a given value; does NOT free its memory! @param pValue value to be destructed @param pTypeDescr type description of value @param release function called each time an interface pointer needs to be released; defaults (0) to uno */ void SAL_CALL uno_destructData( void * pValue, struct _typelib_TypeDescription * pTypeDescr, uno_ReleaseFunc release ) SAL_THROW_EXTERN_C(); /** Destructs a given value; does NOT free its memory! @param pValue value to be destructed @param pType type of value @param release function called each time an interface pointer needs to be released; defaults (0) to uno */ void SAL_CALL uno_type_destructData( void * pValue, struct _typelib_TypeDescriptionReference * pType, uno_ReleaseFunc release ) SAL_THROW_EXTERN_C(); /** Default constructs a value. All simple types are set to 0, enums are set to their default value. @param pMem pointer to memory of value to be constructed @param pTypeDescr type description of value to be constructed */ void SAL_CALL uno_constructData( void * pMem, struct _typelib_TypeDescription * pTypeDescr ) SAL_THROW_EXTERN_C(); /** Default constructs a value. All simple types are set to 0, enums are set to their default value. @param pMem pointer to memory of value to be constructed @param pType type of value to be constructed */ void SAL_CALL uno_type_constructData( void * pMem, struct _typelib_TypeDescriptionReference * pType ) SAL_THROW_EXTERN_C(); /** Assigns a destination value with a source value. Widening conversion WITHOUT data loss is allowed (e.g., assigning a long with a short). Querying for demanded interface type is allowed. Assignment from any value to a value of type Any and vice versa is allowed. @param pDest pointer to destination value @param pDestTypeDescr type description of destination value @param pSource pointer to source value; if 0, then destination value will be assigned to default value @param pSourceTypeDescr type destination of source value @param queryInterface function called each time an interface needs to be queried; defaults (0) to uno @param acquire function called each time an interface needs to be acquired; defaults (0) to uno @param release function called each time an interface needs to be released; defaults (0) to uno @return true if destination has been successfully assigned */ sal_Bool SAL_CALL uno_assignData( void * pDest, struct _typelib_TypeDescription * pDestTypeDescr, void * pSource, struct _typelib_TypeDescription * pSourceTypeDescr, uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) SAL_THROW_EXTERN_C(); /** Assigns a destination value with a source value. Widening conversion WITHOUT data loss is allowed (e.g., assigning a long with a short). Querying for demanded interface type is allowed. Assignment from any value to a value of type Any and vice versa is allowed. @param pDest pointer to destination value @param pDestType type of destination value @param pSource pointer to source value; if 0, then destination value will be assigned to default value @param pSourceType type of source value @param queryInterface function called each time an interface needs to be queried; defaults (0) to uno @param acquire function called each time an interface needs to be acquired; defaults (0) to uno @param release function called each time an interface needs to be released; defaults (0) to uno @return true if destination has been successfully assigned */ sal_Bool SAL_CALL uno_type_assignData( void * pDest, struct _typelib_TypeDescriptionReference * pDestType, void * pSource, struct _typelib_TypeDescriptionReference * pSourceType, uno_QueryInterfaceFunc queryInterface, uno_AcquireFunc acquire, uno_ReleaseFunc release ) SAL_THROW_EXTERN_C(); /** Tests whether a value of given type is assignable from given value. Widening conversion WITHOUT data loss is allowed (e.g., assigning a long with a short). Querying for demanded interface type is allowed. Assignment from any value to a value of type Any and vice versa is allowed. @param pAssignable type @param pFrom pointer to value @param pFromType type of value @param queryInterface function called each time an interface needs to be queried; defaults (0) to uno @param release function called each time an interface needs to be released; defaults (0) to uno @return true if value is destination has been successfully assigned */ sal_Bool SAL_CALL uno_type_isAssignableFromData( struct _typelib_TypeDescriptionReference * pAssignable, void * pFrom, struct _typelib_TypeDescriptionReference * pFromType, uno_QueryInterfaceFunc queryInterface, uno_ReleaseFunc release ) SAL_THROW_EXTERN_C(); #ifdef __cplusplus } #endif #endif