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