1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
/* Copyright 2010 The Chromium Authors
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef PPAPI_C_DEV_PPP_CLASS_DEPRECATED_H_
#define PPAPI_C_DEV_PPP_CLASS_DEPRECATED_H_
#include "ppapi/c/dev/deprecated_bool.h"
#include "ppapi/c/pp_stdint.h"
#include "ppapi/c/pp_var.h"
/**
* @file
* Defines the PPP_Class_Deprecated struct.
*
* @addtogroup PPP
* @{
*/
struct PP_Var;
/**
* Interface for the plugin to implement JavaScript-accessible objects.
*
* This interface has no interface name. Instead, the plugin passes a pointer
* to this interface to PPB_Var_Deprecated.CreateObject that corresponds to the
* object being implemented.
*
* See the PPB_Var_Deprecated interface for more information on these functions.
* This interface just allows you to implement the "back end" of those
* functions, so most of the contract is specified in that interface.
*
* See
* http://code.google.com/p/ppapi/wiki/InterfacingWithJavaScript
* for general information on using and implementing vars.
*/
struct PPP_Class_Deprecated {
/**
* |name| is guaranteed to be an integer or string type var. Exception is
* guaranteed non-NULL. An integer is used for |name| when implementing
* array access into the object. This test should only return true for
* properties that are not methods. Use HasMethod() to handle methods.
*/
bool (*HasProperty)(void* object,
struct PP_Var name,
struct PP_Var* exception);
/**
* |name| is guaranteed to be a string-type. Exception is guaranteed non-NULL.
* If the method does not exist, return false and don't set the exception.
* Errors in this function will probably not occur in general usage, but
* if you need to throw an exception, still return false.
*/
bool (*HasMethod)(void* object,
struct PP_Var name,
struct PP_Var* exception);
/**
* |name| is guaranteed to be a string-type or an integer-type var. Exception
* is guaranteed non-NULL. An integer is used for |name| when implementing
* array access into the object. If the property does not exist, set the
* exception and return a var of type Void. A property does not exist if
* a call HasProperty() for the same |name| would return false.
*/
struct PP_Var (*GetProperty)(void* object,
struct PP_Var name,
struct PP_Var* exception);
/**
* Exception is guaranteed non-NULL.
*
* This should include all enumerable properties, including methods. Be sure
* to set |*property_count| to 0 and |properties| to NULL in all failure
* cases, these should never be unset when calling this function. The
* pointers passed in are guaranteed not to be NULL, so you don't have to
* NULL check them.
*
* If you have any properties, allocate the property array with
* PPB_Core.MemAlloc(sizeof(PP_Var) * property_count) and add a reference
* to each property on behalf of the caller. The caller is responsible for
* Release()ing each var and calling PPB_Core.MemFree on the property pointer.
*/
void (*GetAllPropertyNames)(void* object,
uint32_t* property_count,
struct PP_Var** properties,
struct PP_Var* exception);
/**
* |name| is guaranteed to be an integer or string type var. Exception is
* guaranteed non-NULL.
*/
void (*SetProperty)(void* object,
struct PP_Var name,
struct PP_Var value,
struct PP_Var* exception);
/**
* |name| is guaranteed to be an integer or string type var. Exception is
* guaranteed non-NULL.
*/
void (*RemoveProperty)(void* object,
struct PP_Var name,
struct PP_Var* exception);
// TODO(brettw) need native array access here.
/**
* |name| is guaranteed to be a string type var. Exception is guaranteed
* non-NULL
*/
struct PP_Var (*Call)(void* object,
struct PP_Var method_name,
uint32_t argc,
struct PP_Var* argv,
struct PP_Var* exception);
/** Exception is guaranteed non-NULL. */
struct PP_Var (*Construct)(void* object,
uint32_t argc,
struct PP_Var* argv,
struct PP_Var* exception);
/**
* Called when the reference count of the object reaches 0. Normally, plugins
* would free their internal data pointed to by the |object| pointer.
*/
void (*Deallocate)(void* object);
};
/**
* @}
* End addtogroup PPP
*/
#endif // PPAPI_C_DEV_PPP_CLASS_DEPRECATED_H_
|