// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef PPAPI_SHARED_IMPL_API_ID_H_
#define PPAPI_SHARED_IMPL_API_ID_H_

namespace ppapi {

// These numbers must be all small integers. They are used in a lookup table
// to route messages to the appropriate message handler.
enum ApiID {
  // Zero is reserved for control messages.
  API_ID_NONE = 0,
  API_ID_PPB_AUDIO = 1,
  API_ID_PPB_AUDIO_CONFIG,
  API_ID_PPB_AUDIO_INPUT_DEV,
  API_ID_PPB_BROKER,
  API_ID_PPB_BUFFER,
  API_ID_PPB_CONTEXT_3D,
  API_ID_PPB_CORE,
  API_ID_PPB_CURSORCONTROL,
  API_ID_PPB_FILE_CHOOSER,
  API_ID_PPB_FILE_IO,
  API_ID_PPB_FILE_REF,
  API_ID_PPB_FILE_SYSTEM,
  API_ID_PPB_FLASH_DEVICE_ID,
  API_ID_PPB_FLASH_FONTFILE,
  API_ID_PPB_FLASH_MENU,
  API_ID_PPB_FLASH_MESSAGELOOP,
  API_ID_PPB_FONT,
  API_ID_PPB_GRAPHICS_2D,
  API_ID_PPB_GRAPHICS_3D,
  API_ID_PPB_IMAGE_DATA,
  API_ID_PPB_INSTANCE,
  API_ID_PPB_INSTANCE_PRIVATE,
  API_ID_PPB_OPENGLES2,
  API_ID_PPB_PDF,
  API_ID_PPB_SURFACE_3D,
  API_ID_PPB_TALK,
  API_ID_PPB_TESTING,
  API_ID_PPB_TEXT_INPUT,
  API_ID_PPB_URL_RESPONSE_INFO,
  API_ID_PPB_VAR_ARRAY_BUFFER,
  API_ID_PPB_VAR_DEPRECATED,
  API_ID_PPB_VIDEO_CAPTURE_DEV,
  API_ID_PPB_VIDEO_DECODER_DEV,
  API_ID_PPB_X509_CERTIFICATE_PRIVATE,
  API_ID_PPP_CLASS,
  // TODO(tomfinegan): Remove this after we refactor things to load the PPP
  // interface struct from the PPB interface.
  API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE,
  API_ID_PPP_FIND_PRIVATE,
  API_ID_PPP_GRAPHICS_3D,
  API_ID_PPP_INPUT_EVENT,
  API_ID_PPP_INSTANCE,
  API_ID_PPP_INSTANCE_PRIVATE,
  API_ID_PPP_MESSAGING,
  API_ID_PPP_MOUSE_LOCK,
  API_ID_PPP_PDF,
  API_ID_PPP_PRINTING,
  API_ID_PPP_TEXT_INPUT,
  API_ID_PPP_VIDEO_CAPTURE_DEV,
  API_ID_PPP_VIDEO_DECODER_DEV,
  API_ID_RESOURCE_CREATION,

  // Must be last to indicate the number of interface IDs.
  API_ID_COUNT
};

}  // namespace ppapi

#endif  // PPAPI_SHARED_IMPL_API_ID_H_