14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------*
24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *  ESR_Session.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_SESSION_H
214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define __ESR_SESSION_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 "pstdio.h"
284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ptypes.h"
294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_SessionType.h"
304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @addtogroup ESR_SessionModule ESR_Session API functions
334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Manages ESR session information.
344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
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 * Hashmap with helper functions for adding primitives and add-if-empty.
404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projecttypedef struct ESR_SessionSingleton_t
424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{
434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns session property value.
454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param type Expected variable type (for strong-typing purposes)
494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getProperty)(const LCHAR* name, void** value, VariableTypes type);
514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns the type of a property value.
534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param type [out] Value type
564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getPropertyType)(const LCHAR* name, VariableTypes* type);
584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getInt)(const LCHAR* name, int* value);
654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getUint16_t)(const LCHAR* name, asr_uint16_t* 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   */
784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getSize_t)(const LCHAR* name, size_t* value);
794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getFloat)(const LCHAR* name, float* value);
864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getBool)(const LCHAR* name, ESR_BOOL* value);
934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns copy of session property value.
954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param len Length of value argument. If the return code is ESR_BUFFER_OVERFLOW,
994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *            the required length is returned in this variable.
1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getLCHAR)(const LCHAR* name, LCHAR* value, size_t* len);
1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Indicates if key exists in the session.
1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param exists True if key exists, false otherwise
1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*contains)(const LCHAR* name, ESR_BOOL* exists);
1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value.
1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param type Type of value being set
1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setProperty)(const LCHAR* name, void* value, VariableTypes type);
1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setInt)(const LCHAR* name, int value);
1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setUint16_t)(const LCHAR* name, asr_uint16_t value);
1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setSize_t)(const LCHAR* name, size_t value);
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 name Property name
1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setFloat)(const LCHAR* name, float value);
1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setBool)(const LCHAR* name, ESR_BOOL value);
1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Sets session property value, storing a copy of the value.
1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setLCHAR)(const LCHAR* name, LCHAR* value);
1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetInt().
1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setIntIfEmpty)(const LCHAR* name, int value);
1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetUint16_t().
1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setUint16_tIfEmpty)(const LCHAR* name, asr_uint16_t value);
1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetSize_t().
1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setSize_tIfEmpty)(const LCHAR* name, size_t value);
1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetFloat().
1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setFloatIfEmpty)(const LCHAR* name, float value);
1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetBool().
2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setBoolIfEmpty)(const LCHAR* name, ESR_BOOL value);
2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the key does not exist in the session, calls SessionSetLCHAR().
2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * This helper function aids implementation of "default values", overwriting
2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * session values only if they have not been set already.
2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param value Property value
2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*setLCHARIfEmpty)(const LCHAR* name, LCHAR* value);
2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Removes property from session.
2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*removeProperty)(const LCHAR* name);
2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Removes and deallocates property from session.
2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param name Property name
2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*removeAndFreeProperty)(const LCHAR* name);
2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Imports commandline arguments into the system session.
2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Keys are imported as "cmdline.[name]" where [name] is the name of the command-line argument
2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Values are set in char* format.
2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * For example, given the argument "-timer=5", the following key will be added to the session:
2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * ["cmdline.timer", "5"]
2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Validation is left up to the application.
2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * If the session contains a key that is clobbered by the parser, the old [key, value]
2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * pair will be deallocated. For example, if the session contained
2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * ["cmdline.timer", "value"] before the aforementioned example occured, then the old
2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * [key, value] pair will be allocated by the parser.
2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param argc Number of arguments
2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param argv Argument values
2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*importCommandLine)(int argc, char* argv[]);
2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns the number of elements in the session.
2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param size [out] Session size
2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getSize)(size_t* size);
2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Returns the key associated with the specified index.
2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param index Element index
2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key [out] Key name
2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*getKeyAtIndex)(size_t index, LCHAR** key);
2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to int.
2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToInt)(const LCHAR* key);
2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to asr_uint16_t.
2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToUint16_t)(const LCHAR* key);
2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to size_t.
2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToSize_t)(const LCHAR* key);
2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to float.
2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToFloat)(const LCHAR* key);
2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Convert the specified argument to bool.
2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param key Property name
2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*convertToBool)(const LCHAR* key);
2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Destroys the system session.
2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*destroy)(void);
3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Import PAR file into session.
3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param file File to read session from
3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*importParFile)(const LCHAR* filename);
3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Import ARG file into session.
3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   *
3104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * @param file File to read arguments from
3114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  ESR_ReturnCode(*importArgFile)(const LCHAR* filename);
3134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  /**
3154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   * Pointer to session data.
3164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project   */
3174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project  void* data;
3184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project}
3194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SessionSingleton;
3204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
3214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Initializes the system session.
3234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param filename File to read session information from
3254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OPEN_ERROR if file cannot be opened; ESR_READ_ERROR if file cannot be read;
3264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_OUT_OF_MEMORY if system is out of memory
3274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionCreate(const LCHAR* filename);
3294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns session property value.
3314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
3344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param type Expected variable type (for strong-typing purposes)
3354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_RESULT_TYPE if the property is not of the specified type
3364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetProperty(const LCHAR* name, void** value,
3384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    VariableTypes type);
3394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns copy of session property value.
3414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
3444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_RESULT_TYPE if the property is not an int
3454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetInt(const LCHAR* name, int* value);
3474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns copy of session property value.
3494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
3524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_RESULT_TYPE if the property is not a asr_uint16_t
3534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetUint16_t(const LCHAR* name, asr_uint16_t* value);
3554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns copy of session property value.
3574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
3604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_RESULT_TYPE if the property is not a size_t
3614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetSize_t(const LCHAR* name, size_t* value);
3634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns copy of session property value.
3654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
3684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_RESULT_TYPE if the property is not a float
3694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetFloat(const LCHAR* name, float* value);
3714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns copy of session property value.
3734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
3764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_RESULT_TYPE if the property is not a bool
3774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetBool(const LCHAR* name, ESR_BOOL* value);
3794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns copy of session property value.
3814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
3844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param len Length of value argument. If the return code is ESR_BUFFER_OVERFLOW,
3854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *            the required length is returned in this variable.
3864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_RESULT_TYPE if the property is not a LCHAR*
3874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetLCHAR(const LCHAR* name, LCHAR* value, size_t* len);
3894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Indicates if key exists in the session.
3914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
3924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
3934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param exists True if key exists, false otherwise
3944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_SUCCESS
3954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
3964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionContains(const LCHAR* name, ESR_BOOL* exists);
3974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
3984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets session property value.
3994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param type Type of value being set
4034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetProperty(const LCHAR* name, void* value,
4064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project    VariableTypes type);
4074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets session property value, storing a copy of the value.
4094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetInt(const LCHAR* name, int value);
4154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets session property value, storing a copy of the value.
4174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetUint16_t(const LCHAR* name, asr_uint16_t value);
4234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets session property value, storing a copy of the value.
4254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetSize_t(const LCHAR* name, size_t value);
4314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets session property value, storing a copy of the value.
4334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetFloat(const LCHAR* name, float value);
4394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets session property value, storing a copy of the value.
4414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetBool(const LCHAR* name, ESR_BOOL value);
4474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets session property value, storing a copy of the value.
4494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetLCHAR(const LCHAR* name, LCHAR* value);
4554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the key does not exist in the session, calls SessionSetInt().
4574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetIntIfEmpty(const LCHAR* name, int value);
4634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the key does not exist in the session, calls SessionSetSize_t().
4654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetUint16_tIfEmpty(const LCHAR* name, asr_uint16_t value);
4714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the key does not exist in the session, calls SessionSetSize_t().
4734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetSize_tIfEmpty(const LCHAR* name, size_t value);
4794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the key does not exist in the session, calls SessionSetFloat().
4814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetFloatIfEmpty(const LCHAR* name, float value);
4874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the key does not exist in the session, calls SessionSetBool().
4894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
4924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
4934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
4944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetBoolIfEmpty(const LCHAR* name, ESR_BOOL value);
4954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
4964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the key does not exist in the session, calls SessionSetLCHAR().
4974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
4984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
4994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value Property value
5004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
5014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionSetLCHARIfEmpty(const LCHAR* name, LCHAR* value);
5034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes property from session.
5054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
5074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
5084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionRemoveProperty(const LCHAR* name);
5104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes and deallocates property from session.
5124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
5144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
5154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionRemoveAndFreeProperty(const LCHAR* name);
5174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Destroys the system session.
5194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_SUCCESS
5214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionDestroy(void);
5234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Imports commandline arguments into the system session.
5254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Keys are imported as "cmdline.[name]" where [name] is the name of the command-line argument
5274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Values are set in char* format.
5284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * For example, given the argument "-timer=5", the following key will be added to the session:
5304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ["cmdline.timer", "5"]
5314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Validation is left up to the application.
5334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * If the session contains a key that is clobbered by the parser, the old [key, value]
5354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * pair will be deallocated. For example, if the session contained
5364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ["cmdline.timer", "value"] before the aforementioned example occured, then the old
5374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * [key, value] pair will be allocated by the parser.
5384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param argc Number of arguments
5404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param argv Argument values
5414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if the system is out of memory
5424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionImportCommandLine(int argc, LCHAR* argv[]);
5444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the number of elements in the session.
5474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param size [out] Session size
5494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_SUCCESS
5504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetSize(size_t* size);
5524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the key associated with the specified index.
5554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param index Element index
5574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key [out] Key name
5584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_ARGUMENT_OUT_OF_BOUNDS if index is out of bounds
5594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetKeyAtIndex(size_t index, LCHAR** key);
5614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Convert the specified argument to int.
5644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Property name
5664a68b3365c8c50aa93505e99ead2565ab73dcdb0The 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;
5674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_INVALID_ARGUMENT if property cannot be converted to int
5684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionConvertToInt(const LCHAR* key);
5704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Convert the specified argument to int.
5734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Property name
5754a68b3365c8c50aa93505e99ead2565ab73dcdb0The 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;
5764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_INVALID_ARGUMENT if property cannot be converted to asr_uint16_t
5774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionConvertToUint16_t(const LCHAR* key);
5794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Convert the specified argument to size_t.
5824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Property name
5844a68b3365c8c50aa93505e99ead2565ab73dcdb0The 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;
5854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_INVALID_ARGUMENT if property cannot be converted to size_t
5864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionConvertToSize_t(const LCHAR* key);
5884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Convert the specified argument to float.
5914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
5924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Property name
5934a68b3365c8c50aa93505e99ead2565ab73dcdb0The 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;
5944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_INVALID_ARGUMENT if property cannot be converted to float
5954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
5964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionConvertToFloat(const LCHAR* key);
5974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
5984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
5994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Convert the specified argument to bool.
6004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
6014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Property name
6024a68b3365c8c50aa93505e99ead2565ab73dcdb0The 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;
6034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_INVALID_ARGUMENT if property cannot be converted to bool
6044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionConvertToBool(const LCHAR* key);
6064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
6074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Returns the type of a property value.
6084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
6094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param name Property name
6104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param type [out] Value type
6114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if property cannot be found
6124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionGetPropertyType(const LCHAR* name, VariableTypes* type);
6144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
6154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Import PAR file into session.
6164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
6174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param filename File to read session from
6184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OPEN_ERROR if file cannot be opened; ESR_READ_ERROR if file cannot be read;
6194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_OUT_OF_MEMORY if system is out of memory
6204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionImportParFile(const LCHAR* filename);
6224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
6234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Sets val to true if a session object exists (non-null), FALSE otherwise.
6244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
6254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param val True if session is non-null, false otherwise
6264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_SUCCESS
6274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionExists(ESR_BOOL* val);
6294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
6304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Prefixes relative paths with the PAR-file base directory. If the path is not relative,
6314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * it is not changed.
6324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
6334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param path Path to be prefixed
6344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param len Length of path argument. If the return code is ESR_BUFFER_OVERFLOW,
6354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *            the required length is returned in this variable.
6364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_INVALID_ARGUMENT if path is null;
6374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * ESR_NO_MATCH_ERROR if session property "parFile.baseDirectory" is undefined
6384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionPrefixWithBaseDirectory(LCHAR* path, size_t* len);
6404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
6414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Adds an event-listener.
6424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
6434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self ESR_SessionType handle
6444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param listener The event-listener to add
6454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_OUT_OF_MEMORY if system is out of memory
6464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionAddListener(ESR_SessionType* self, ESR_SessionTypeListenerPair* listener);
6484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
6504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Removes an event-listener.
6514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *
6524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self ESR_SessionType handle
6534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param listener The event-listener to remove
6544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @return ESR_SUCCESS
6554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_SHARED_API ESR_ReturnCode ESR_SessionRemoveListener(ESR_SessionType* self, ESR_SessionTypeListenerPair* listener);
6574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/**
6614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @}
6624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */
6634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project
6664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#endif /* __ESR_SESSION_H */
667