/* Copyright (c) 2011 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.
 */

/**
 * This file provides a definition of C99 sized types
 * for Microsoft compilers. These definitions only apply
 * for trusted modules.
 */

label Chrome {
  M13 = 0.0,
  M14 = 1.0,
  M15 = 2.0
};

[version=0.0]
describe {
  /** Standard Ints. */
  int8_t;
  int16_t;
  int32_t;
  int64_t;
  uint8_t;
  uint16_t;
  uint32_t;
  uint64_t;
  /** Small and large floats. */
  double_t;
  float_t;

  /** Native file handle (int). */
  handle_t;

  /** Interface object (void *). */
  interface_t;

  /** Used for padding, should be (u)int8_t */
  char;

  /** Pointer to memory (void *). */
  mem_t;

  /** Pointer to null terminated string (char *). */
  str_t;

  /** No return value. */
  void;

  /** Pointer to pointer to memory (void **). */
  blob_t;
};

