14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  ESR_SessionType.h  *
34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the 'License');          *
74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  you may not use this file except in compliance with the License.         *
84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  You may obtain a copy of the License at                                  *
104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0                           *
114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software      *
134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  distributed under the License is distributed on an 'AS IS' BASIS,        *
144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  See the License for the specific language governing permissions and      *
164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  limitations under the License.                                           *
174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *                                                                           *
184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/
194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#ifndef __ESR_SESSIONTYPE_H
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __ESR_SESSIONTYPE_H
224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_ReturnCode.h"
264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_SharedPrefix.h"
274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_VariableTypes.h"
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_SessionTypeListener.h"
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pstdio.h"
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ptypes.h"
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @addtogroup ESR_SessionTypeModule ESR_SessionType API functions
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_Session interface functions.
354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @{
374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Hashmap with helper functions for adding primitives and add-if-empty.
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct ESR_SessionType_t
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns session property value.
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param type Expected variable type (for strong-typing purposes)
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not of the specified type
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getProperty)(struct ESR_SessionType_t* self, const LCHAR* name, void** value, VariableTypes type);
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns the type of a property value.
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param type [out] Value type
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null or property cannot be found
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getPropertyType)(struct ESR_SessionType_t* self, const LCHAR* name, VariableTypes* type);
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a int
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getInt)(struct ESR_SessionType_t* self, const LCHAR* name, int* value);
724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a asr_uint16_t
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getUint16_t)(struct ESR_SessionType_t* self, const LCHAR* name, asr_uint16_t* value);
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a size_t
874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a size_t
884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getSize_t)(struct ESR_SessionType_t* self, const LCHAR* name, size_t* value);
904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a float
974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getFloat)(struct ESR_SessionType_t* self, const LCHAR* name, float* value);
994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a bool
1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getBool)(struct ESR_SessionType_t* self, const LCHAR* name, ESR_BOOL* value);
1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param len Size of value argument. If the return code is ESR_BUFFER_OVERFLOW,
1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *            the required length is returned in this variable.
1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a LCHAR*
1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getLCHAR)(struct ESR_SessionType_t* self, const LCHAR* name, LCHAR* value, size_t* len);
1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Indicates if key exists in the session.
1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param exists True if key exists, false otherwise
1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null
1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*contains)(struct ESR_SessionType_t* self, const LCHAR* name, ESR_BOOL* exists);
1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value.
1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param type Type of value being set
1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setProperty)(struct ESR_SessionType_t* self, const LCHAR* name, void* value, VariableTypes type);
1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setInt)(struct ESR_SessionType_t* self, const LCHAR* name, int value);
1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setUint16_t)(struct ESR_SessionType_t* self, const LCHAR* name, asr_uint16_t value);
1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setSize_t)(struct ESR_SessionType_t* self, const LCHAR* name, size_t value);
1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setFloat)(struct ESR_SessionType_t* self, const LCHAR* name, float value);
1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setBool)(struct ESR_SessionType_t* self, const LCHAR* name, ESR_BOOL value);
1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setLCHAR)(struct ESR_SessionType_t* self, const LCHAR* name, LCHAR* value);
1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetInt().
1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setIntIfEmpty)(struct ESR_SessionType_t* self, const LCHAR* name, int value);
2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetUint16_t().
2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setUint16_tIfEmpty)(struct ESR_SessionType_t* self, const LCHAR* name, asr_uint16_t value);
2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetSize_t().
2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setSize_tIfEmpty)(struct ESR_SessionType_t* self, const LCHAR* name, size_t value);
2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetFloat().
2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setFloatIfEmpty)(struct ESR_SessionType_t* self, const LCHAR* name, float value);
2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetBool().
2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setBoolIfEmpty)(struct ESR_SessionType_t* self, const LCHAR* name, ESR_BOOL value);
2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetLCHAR().
2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setLCHARIfEmpty)(struct ESR_SessionType_t* self, const LCHAR* name, LCHAR* value);
2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Removes property from session.
2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_NO_MATCH_ERROR if key cannot be found
2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*removeProperty)(struct ESR_SessionType_t* self, const LCHAR* name);
2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Removes and deallocates property from session.
2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_NO_MATCH_ERROR if key cannot be found
2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*removeAndFreeProperty)(struct ESR_SessionType_t* self, const LCHAR* name);
2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Imports commandline arguments into the system session.
2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Keys are imported as "cmdline.[name]" where [name] is the name of the command-line argument
2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Values are set in char* format.
2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * For example, given the argument "-timer=5", the following key will be added to the session:
2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * ["cmdline.timer", "5"]
2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Validation is left up to the application.
2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the session contains a key that is clobbered by the parser, the old [key, value]
2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * pair will be deallocated. For example, if the session contained
2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * ["cmdline.timer", "value"] before the aforementioned example occured, then the old
2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * [key, value] pair will be allocated by the parser.
2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param argc Number of arguments
2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param argv Argument values
2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if the system is out of memory;
2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*importCommandLine)(struct ESR_SessionType_t* self, int argc, char* argv[]);
3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns the number of elements in the session.
3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param size [out] Session size
3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null
3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getSize)(struct ESR_SessionType_t* self, size_t* size);
3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns the key associated with the specified index.
3104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param index Element index
3134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key [out] Key name
3144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null; ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds
3154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getKeyAtIndex)(struct ESR_SessionType_t* self, size_t index, LCHAR** key);
3174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to int.
3194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
3224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a LCHAR*; ESR_OUT_OF_MEMORY if system is out of memory;
3234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * ESR_INVALID_ARGUMENT if self is null or property cannot be converted to int
3244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToInt)(struct ESR_SessionType_t* self, const LCHAR* key);
3264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to asr_uint16_t.
3294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
3324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * @return ESR_INVALID_RESULT_TYPE if the property is not a LCHAR*; ESR_OUT_OF_MEMORY if system is out of memory;
3334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * ESR_INVALID_ARGUMENT if self is null or property cannot be converted to asr_uint16_t
3344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToUint16_t)(struct ESR_SessionType_t* self, const LCHAR* key);
3364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to size_t.
3394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
3424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * @return ESR_INVALID_RESULT_TYPE if the property is not a LCHAR*; ESR_OUT_OF_MEMORY if system is out of memory;
3434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * ESR_INVALID_ARGUMENT if self is null or property cannot be converted to size_t
3444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToSize_t)(struct ESR_SessionType_t* self, const LCHAR* key);
3464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to float.
3494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
3524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * @return ESR_INVALID_RESULT_TYPE if the property is not a LCHAR*; ESR_OUT_OF_MEMORY if system is out of memory;
3534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * ESR_INVALID_ARGUMENT if self is null or property cannot be converted to float
3544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToFloat)(struct ESR_SessionType_t* self, const LCHAR* key);
3564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to bool.
3594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
3624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_RESULT_TYPE if the property is not a LCHAR*; ESR_OUT_OF_MEMORY if system is out of memory;
3634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * ESR_INVALID_ARGUMENT if self is null or property cannot be converted to bool
3644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToBool)(struct ESR_SessionType_t* self, const LCHAR* key);
3664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Destroys the Session.
3684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_ARGUMENT if self is null
3714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*destroy)(struct ESR_SessionType_t* self);
3734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Import PAR file into session.
3754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param file File to read session from
3784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @return ESR_INVALID_STATE if self is null; ESR_OPEN_ERROR if file cannot be opened; ESR_READ_ERROR if file cannot be
3794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  * read; ESR_OUT_OF_MEMORY if system is out of memory
3804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*importParFile)(struct ESR_SessionType_t* self, const LCHAR* filename);
3824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Import ARG file into session.
3844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param file File to read arguments from
3874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*importArgFile)(struct ESR_SessionType_t* self, const LCHAR* filename);
3894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Adds an event-listener.
3924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
3944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param listener The event-listener to add
3954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
3964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*addListener)(struct ESR_SessionType_t* self, ESR_SessionTypeListenerPair* listener);
3984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
4004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Removes an event-listener.
4014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
4024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param self ESR_SessionType handle
4034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param listener The event-listener to remove
4044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    * @return ESR_INVALID_ARGUMENT if self is null; ESR_OUT_OF_MEMORY if system is out of memory
4054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
4064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*removeListener)(struct ESR_SessionType_t* self, ESR_SessionTypeListenerPair* listener);
4074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
4094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Pointer to session data.
4104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
4114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  void* data;
4124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
4134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SessionType;
4144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Initializes the system session.
4174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self ESR_SessionType handle
4194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionTypeCreate(ESR_SessionType** self);
4224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @}
4244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
4274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* __ESR_SESSIONTYPE_H */
428