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)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* From pp_bool.idl modified Thu Nov  1 13:48:33 2012. */
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PPAPI_C_PP_BOOL_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define PPAPI_C_PP_BOOL_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ppapi/c/pp_macros.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @file
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This file defines the <code>PP_Bool</code> enumeration for use in PPAPI C
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * headers.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @addtogroup Enums
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @{
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The <code>PP_Bool</code> enum is a boolean value for use in PPAPI C headers.
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The standard bool type is not available to pre-C99 compilers, and is not
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * guaranteed to be compatible between C and C++, whereas the PPAPI C headers
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * can be included from C or C++ code.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_FALSE = 0,
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PP_TRUE = 1
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} PP_Bool;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_Bool, 4);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @}
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Converts a C++ "bool" type to a PP_Bool.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] b A C++ "bool" type.
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A PP_Bool.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inline PP_Bool PP_FromBool(bool b) {
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return b ? PP_TRUE : PP_FALSE;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Converts a PP_Bool to a C++ "bool" type.
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @param[in] b A PP_Bool.
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @return A C++ "bool" type.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inline bool PP_ToBool(PP_Bool b) {
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return (b != PP_FALSE);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* __cplusplus */
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  /* PPAPI_C_PP_BOOL_H_ */
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
66