.. _pepper_stable_cpp_index:
.. _cpp-api:

.. DO NOT EDIT! This document is auto-generated by doxygen/rst_index.py.

.. include:: /migration/deprecation.inc

############################################
Pepper C++ API Reference (Stable)
############################################

This page lists the C++ API for Pepper 60. Apps that use this API can
run in Chrome 60 or higher.

`Classes <pepper_stable/cpp/inherits.html>`__
==================================================
  * `Audio <pepper_stable/cpp/classpp_1_1_audio.html>`__

  * `AudioBuffer <pepper_stable/cpp/classpp_1_1_audio_buffer.html>`__

  * `AudioConfig <pepper_stable/cpp/classpp_1_1_audio_config.html>`__

  * `AudioEncoder <pepper_stable/cpp/classpp_1_1_audio_encoder.html>`__

  * `CompletionCallback <pepper_stable/cpp/classpp_1_1_completion_callback.html>`__

  * `CompletionCallbackFactory <pepper_stable/cpp/classpp_1_1_completion_callback_factory.html>`__

  * `CompletionCallbackWithOutput <pepper_stable/cpp/classpp_1_1_completion_callback_with_output.html>`__

  * `Compositor <pepper_stable/cpp/classpp_1_1_compositor.html>`__

  * `CompositorLayer <pepper_stable/cpp/classpp_1_1_compositor_layer.html>`__

  * `Core <pepper_stable/cpp/classpp_1_1_core.html>`__

  * `DirectoryEntry <pepper_stable/cpp/classpp_1_1_directory_entry.html>`__

  * `FileIO <pepper_stable/cpp/classpp_1_1_file_i_o.html>`__

  * `FileRef <pepper_stable/cpp/classpp_1_1_file_ref.html>`__

  * `FileSystem <pepper_stable/cpp/classpp_1_1_file_system.html>`__

  * `FloatPoint <pepper_stable/cpp/classpp_1_1_float_point.html>`__

  * `FloatRect <pepper_stable/cpp/classpp_1_1_float_rect.html>`__

  * `FloatSize <pepper_stable/cpp/classpp_1_1_float_size.html>`__

  * `Fullscreen <pepper_stable/cpp/classpp_1_1_fullscreen.html>`__

  * `Graphics2D <pepper_stable/cpp/classpp_1_1_graphics2_d.html>`__

  * `Graphics3D <pepper_stable/cpp/classpp_1_1_graphics3_d.html>`__

  * `Graphics3DClient <pepper_stable/cpp/classpp_1_1_graphics3_d_client.html>`__

  * `HostResolver <pepper_stable/cpp/classpp_1_1_host_resolver.html>`__

  * `IMEInputEvent <pepper_stable/cpp/classpp_1_1_i_m_e_input_event.html>`__

  * `ImageData <pepper_stable/cpp/classpp_1_1_image_data.html>`__

  * `InputEvent <pepper_stable/cpp/classpp_1_1_input_event.html>`__

  * `Instance <pepper_stable/cpp/classpp_1_1_instance.html>`__

  * `InstanceHandle <pepper_stable/cpp/classpp_1_1_instance_handle.html>`__

  * `KeyboardInputEvent <pepper_stable/cpp/classpp_1_1_keyboard_input_event.html>`__

  * `MediaStreamAudioTrack <pepper_stable/cpp/classpp_1_1_media_stream_audio_track.html>`__

  * `MediaStreamVideoTrack <pepper_stable/cpp/classpp_1_1_media_stream_video_track.html>`__

  * `MessageHandler <pepper_stable/cpp/classpp_1_1_message_handler.html>`__

  * `MessageLoop <pepper_stable/cpp/classpp_1_1_message_loop.html>`__

  * `Module <pepper_stable/cpp/classpp_1_1_module.html>`__

  * `MouseCursor <pepper_stable/cpp/classpp_1_1_mouse_cursor.html>`__

  * `MouseInputEvent <pepper_stable/cpp/classpp_1_1_mouse_input_event.html>`__

  * `MouseLock <pepper_stable/cpp/classpp_1_1_mouse_lock.html>`__

  * `NetAddress <pepper_stable/cpp/classpp_1_1_net_address.html>`__

  * `NetworkList <pepper_stable/cpp/classpp_1_1_network_list.html>`__

  * `NetworkMonitor <pepper_stable/cpp/classpp_1_1_network_monitor.html>`__

  * `NetworkProxy <pepper_stable/cpp/classpp_1_1_network_proxy.html>`__

  * `Point <pepper_stable/cpp/classpp_1_1_point.html>`__

  * `Rect <pepper_stable/cpp/classpp_1_1_rect.html>`__

  * `Resource <pepper_stable/cpp/classpp_1_1_resource.html>`__

  * `Size <pepper_stable/cpp/classpp_1_1_size.html>`__

  * `TCPSocket <pepper_stable/cpp/classpp_1_1_t_c_p_socket.html>`__

  * `TextInputController <pepper_stable/cpp/classpp_1_1_text_input_controller.html>`__

  * `TouchInputEvent <pepper_stable/cpp/classpp_1_1_touch_input_event.html>`__

  * `TouchPoint <pepper_stable/cpp/classpp_1_1_touch_point.html>`__

  * `UDPSocket <pepper_stable/cpp/classpp_1_1_u_d_p_socket.html>`__

  * `URLLoader <pepper_stable/cpp/classpp_1_1_u_r_l_loader.html>`__

  * `URLRequestInfo <pepper_stable/cpp/classpp_1_1_u_r_l_request_info.html>`__

  * `URLResponseInfo <pepper_stable/cpp/classpp_1_1_u_r_l_response_info.html>`__

  * `Var <pepper_stable/cpp/classpp_1_1_var.html>`__

  * `Var11OutException <pepper_stable/cpp/classpp_1_1_var_1_1_out_exception.html>`__

  * `VarArray <pepper_stable/cpp/classpp_1_1_var_array.html>`__

  * `VarArrayBuffer <pepper_stable/cpp/classpp_1_1_var_array_buffer.html>`__

  * `VarDictionary <pepper_stable/cpp/classpp_1_1_var_dictionary.html>`__

  * `VideoDecoder <pepper_stable/cpp/classpp_1_1_video_decoder.html>`__

  * `VideoEncoder <pepper_stable/cpp/classpp_1_1_video_encoder.html>`__

  * `VideoFrame <pepper_stable/cpp/classpp_1_1_video_frame.html>`__

  * `View <pepper_stable/cpp/classpp_1_1_view.html>`__

  * `VpnProvider <pepper_stable/cpp/classpp_1_1_vpn_provider.html>`__

  * `WebSocket <pepper_stable/cpp/classpp_1_1_web_socket.html>`__

  * `WheelInputEvent <pepper_stable/cpp/classpp_1_1_wheel_input_event.html>`__

  * `Internal::DirectoryEntryArrayOutputAdapterWithStorage <pepper_stable/cpp/classpp_1_1internal_1_1_directory_entry_array_output_adapter_with_storage.html>`__


Files
=====
  * `audio.h <pepper_stable/cpp/audio_8h.html>`__

  * `audio_buffer.h <pepper_stable/cpp/audio__buffer_8h.html>`__

  * `audio_config.h <pepper_stable/cpp/audio__config_8h.html>`__

  * `audio_encoder.h <pepper_stable/cpp/audio__encoder_8h.html>`__

  * `completion_callback.h <pepper_stable/cpp/completion__callback_8h.html>`__

  * `completion_callback_factory.h <pepper_stable/cpp/completion__callback__factory_8h.html>`__

  * `compositor.h <pepper_stable/cpp/compositor_8h.html>`__

  * `compositor_layer.h <pepper_stable/cpp/compositor__layer_8h.html>`__

  * `core.h <pepper_stable/cpp/core_8h.html>`__

  * `directory_entry.h <pepper_stable/cpp/directory__entry_8h.html>`__

  * `file_io.h <pepper_stable/cpp/file__io_8h.html>`__

  * `file_ref.h <pepper_stable/cpp/file__ref_8h.html>`__

  * `file_system.h <pepper_stable/cpp/file__system_8h.html>`__

  * `fullscreen.h <pepper_stable/cpp/fullscreen_8h.html>`__

  * `graphics_2d.h <pepper_stable/cpp/graphics__2d_8h.html>`__

  * `graphics_3d.h <pepper_stable/cpp/graphics__3d_8h.html>`__

  * `graphics_3d_client.h <pepper_stable/cpp/graphics__3d__client_8h.html>`__

  * `host_resolver.h <pepper_stable/cpp/host__resolver_8h.html>`__

  * `image_data.h <pepper_stable/cpp/image__data_8h.html>`__

  * `input_event.h <pepper_stable/cpp/input__event_8h.html>`__

  * `instance.h <pepper_stable/cpp/instance_8h.html>`__

  * `instance_handle.h <pepper_stable/cpp/instance__handle_8h.html>`__

  * `logging.h <pepper_stable/cpp/logging_8h.html>`__

  * `media_stream_audio_track.h <pepper_stable/cpp/media__stream__audio__track_8h.html>`__

  * `media_stream_video_track.h <pepper_stable/cpp/media__stream__video__track_8h.html>`__

  * `message_handler.h <pepper_stable/cpp/message__handler_8h.html>`__

  * `message_loop.h <pepper_stable/cpp/message__loop_8h.html>`__

  * `module.h <pepper_stable/cpp/module_8h.html>`__

  * `module_embedder.h <pepper_stable/cpp/module__embedder_8h.html>`__

  * `module_impl.h <pepper_stable/cpp/module__impl_8h.html>`__

  * `mouse_cursor.h <pepper_stable/cpp/mouse__cursor_8h.html>`__

  * `mouse_lock.h <pepper_stable/cpp/mouse__lock_8h.html>`__

  * `net_address.h <pepper_stable/cpp/net__address_8h.html>`__

  * `network_list.h <pepper_stable/cpp/network__list_8h.html>`__

  * `network_monitor.h <pepper_stable/cpp/network__monitor_8h.html>`__

  * `network_proxy.h <pepper_stable/cpp/network__proxy_8h.html>`__

  * `pass_ref.h <pepper_stable/cpp/pass__ref_8h.html>`__

  * `point.h <pepper_stable/cpp/point_8h.html>`__

  * `rect.h <pepper_stable/cpp/rect_8h.html>`__

  * `resource.h <pepper_stable/cpp/resource_8h.html>`__

  * `size.h <pepper_stable/cpp/size_8h.html>`__

  * `tcp_socket.h <pepper_stable/cpp/tcp__socket_8h.html>`__

  * `text_input_controller.h <pepper_stable/cpp/text__input__controller_8h.html>`__

  * `touch_point.h <pepper_stable/cpp/touch__point_8h.html>`__

  * `udp_socket.h <pepper_stable/cpp/udp__socket_8h.html>`__

  * `url_loader.h <pepper_stable/cpp/url__loader_8h.html>`__

  * `url_request_info.h <pepper_stable/cpp/url__request__info_8h.html>`__

  * `url_response_info.h <pepper_stable/cpp/url__response__info_8h.html>`__

  * `var.h <pepper_stable/cpp/var_8h.html>`__

  * `var_array.h <pepper_stable/cpp/var__array_8h.html>`__

  * `var_array_buffer.h <pepper_stable/cpp/var__array__buffer_8h.html>`__

  * `var_dictionary.h <pepper_stable/cpp/var__dictionary_8h.html>`__

  * `video_decoder.h <pepper_stable/cpp/video__decoder_8h.html>`__

  * `video_encoder.h <pepper_stable/cpp/video__encoder_8h.html>`__

  * `video_frame.h <pepper_stable/cpp/video__frame_8h.html>`__

  * `view.h <pepper_stable/cpp/view_8h.html>`__

  * `vpn_provider.h <pepper_stable/cpp/vpn__provider_8h.html>`__

  * `websocket.h <pepper_stable/cpp/websocket_8h.html>`__

