| /************************************************************** |
| * |
| * 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 <sal/types.h> |
| |
| #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 |