15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/* From pp_var.idl modified Mon Feb 11 15:41:10 2013. */ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PP_VAR_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PP_VAR_H_ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the API for handling the passing of data types between 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * your module and the page. 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PP_VarType</code> is an enumeration of the different types that 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * can be contained within a <code>PP_Var</code> structure. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * An undefined value. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_UNDEFINED = 0, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A NULL value. This is similar to undefined, but JavaScript differentiates 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the two so it is exposed here as well. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_NULL = 1, 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A boolean value, use the <code>as_bool</code> member of the var. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_BOOL = 2, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A 32-bit integer value. Use the <code>as_int</code> member of the var. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_INT32 = 3, 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * A double-precision floating point value. Use the <code>as_double</code> 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * member of the var. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_DOUBLE = 4, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The Var represents a string. The <code>as_id</code> field is used to 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * identify the string, which may be created and retrieved from the 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PPB_Var</code> interface. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_STRING = 5, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Represents a JavaScript object. This vartype is not currently usable 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * from modules, although it is used internally for some tasks. 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_OBJECT = 6, 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Arrays and dictionaries are not currently supported but will be added 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in future revisions. These objects are reference counted so be sure 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * to properly AddRef/Release them as you would with strings to ensure your 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * module will continue to work with future versions of the API. 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_ARRAY = 7, 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_DICTIONARY = 8, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ArrayBuffer represents a JavaScript ArrayBuffer. This is the type which 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * represents Typed Arrays in JavaScript. Unlike JavaScript 'Array', it is 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * only meant to contain basic numeric types, and is always stored 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * contiguously. See PPB_VarArrayBuffer_Dev for functions special to 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * ArrayBuffer vars. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VARTYPE_ARRAY_BUFFER = 9 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_VarType; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VarType, 4); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Structs 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The PP_VarValue union stores the data for any one of the types listed 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * in the PP_VarType enum. 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)union PP_VarValue { 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If <code>type</code> is <code>PP_VARTYPE_BOOL</code>, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>as_bool</code> represents the value of this <code>PP_Var</code> as 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_Bool</code>. 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_Bool as_bool; 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If <code>type</code> is <code>PP_VARTYPE_INT32</code>, 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>as_int</code> represents the value of this <code>PP_Var</code> as 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>int32_t</code>. 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t as_int; 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If <code>type</code> is <code>PP_VARTYPE_DOUBLE</code>, 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>as_double</code> represents the value of this <code>PP_Var</code> 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * as <code>double</code>. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double as_double; 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * If <code>type</code> is <code>PP_VARTYPE_STRING</code>, 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_OBJECT</code>, <code>PP_VARTYPE_ARRAY</code>, or 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_VARTYPE_DICTIONARY</code>, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>as_id</code> represents the value of this <code>PP_Var</code> as 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * an opaque handle assigned by the browser. This handle is guaranteed 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * never to be 0, so a module can initialize this ID to 0 to indicate a 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * "NULL handle." 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64_t as_id; 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PP_VAR</code> struct is a variant data type and can contain any 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * value of one of the types named in the <code>PP_VarType</code> enum. This 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * structure is for passing data between native code which can be strongly 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * typed and the browser (JavaScript) which isn't strongly typed. 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * JavaScript has a "number" type for holding a number, and does not 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * differentiate between floating point and integer numbers. The 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * JavaScript operations will try to optimize operations by using 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * integers when possible, but could end up with doubles. Therefore, 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * you can't assume a numeric <code>PP_Var</code> will be the type you expect. 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Your code should be capable of handling either int32_t or double for numeric 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_Vars sent from JavaScript. 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct PP_Var { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PP_VarType type; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>padding</code> ensures <code>value</code> is aligned on an 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 8-byte boundary relative to the start of the struct. Some compilers 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * align doubles on 8-byte boundaries for 32-bit x86, and some align on 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 4-byte boundaries. 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int32_t padding; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) /** 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This <code>value</code> represents the contents of the PP_Var. Only one of 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the fields of <code>value</code> is valid at a time based upon 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>type</code>. 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) union PP_VarValue value; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_Var, 16); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Functions 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{ 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_MakeUndefined() is used to wrap an undefined value into a 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_Var</code> struct for passing to the browser. 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Var</code> structure. 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_INLINE struct PP_Var PP_MakeUndefined(void) { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var result = { PP_VARTYPE_UNDEFINED, 0, {PP_FALSE} }; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_MakeNull() is used to wrap a null value into a 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_Var</code> struct for passing to the browser. 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Var</code> structure, 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)PP_INLINE struct PP_Var PP_MakeNull(void) { 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var result = { PP_VARTYPE_NULL, 0, {PP_FALSE} }; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_MakeBool() is used to wrap a boolean value into a 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_Var</code> struct for passing to the browser. 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] value A <code>PP_Bool</code> enumeration to 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * wrap. 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Var</code> structure. 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_INLINE struct PP_Var PP_MakeBool(PP_Bool value) { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var result = { PP_VARTYPE_BOOL, 0, {PP_FALSE} }; 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result.value.as_bool = value; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_MakeInt32() is used to wrap a 32 bit integer value 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * into a <code>PP_Var</code> struct for passing to the browser. 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] value An int32 to wrap. 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Var</code> structure. 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_INLINE struct PP_Var PP_MakeInt32(int32_t value) { 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var result = { PP_VARTYPE_INT32, 0, {PP_FALSE} }; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result.value.as_int = value; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * PP_MakeDouble() is used to wrap a double value into a 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <code>PP_Var</code> struct for passing to the browser. 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] value A double to wrap. 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A <code>PP_Var</code> structure. 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_INLINE struct PP_Var PP_MakeDouble(double value) { 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct PP_Var result = { PP_VARTYPE_DOUBLE, 0, {PP_FALSE} }; 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result.value.as_double = value; 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/** 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @} 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */ 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PPAPI_C_PP_VAR_H_ */ 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235