111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __khrplatform_h_
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __khrplatform_h_
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** Copyright (c) 2008-2009 The Khronos Group Inc.
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert**
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** Permission is hereby granted, free of charge, to any person obtaining a
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** copy of this software and/or associated documentation files (the
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** "Materials"), to deal in the Materials without restriction, including
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** without limitation the rights to use, copy, modify, merge, publish,
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** distribute, sublicense, and/or sell copies of the Materials, and to
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** permit persons to whom the Materials are furnished to do so, subject to
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** the following conditions:
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert**
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** The above copyright notice and this permission notice shall be included
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** in all copies or substantial portions of the Materials.
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert**
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert*/
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Platform-specific types and definitions.
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * $Revision: 7244 $ on $Date: 2009-01-20 17:06:59 -0800 (Tue, 20 Jan 2009) $
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Adopters may modify this file to suit their platform. Adopters are
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * encouraged to submit platform specific modifications to the Khronos
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * group so that they can be included in future versions of this file.
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Please submit changes by sending them to the public Khronos Bugzilla
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * (http://khronos.org/bugzilla) by filing a bug against product
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * "Khronos (general)" component "Registry".
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * A predefined template which fills in some of the bug fields can be
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * reached using http://tinyurl.com/khrplatform-h-bugreport, but you
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * must create a Bugzilla login first.
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * See the Implementer's Guidelines for information about where this file
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * should be located on your system.
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    http://www.khronos.org/registry/implementers_guide.pdf
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This file should be included as
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *        #include <KHR/khrplatform.h>
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * by the Khronos API header file that uses its types and defines.
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * The types in this file should only be used to define API-specific types.
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Types defined in this file:
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_int8_t              signed   8  bit
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_uint8_t             unsigned 8  bit
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_int16_t             signed   16 bit
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_uint16_t            unsigned 16 bit
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_int32_t             signed   32 bit
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_uint32_t            unsigned 32 bit
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_int64_t             signed   64 bit
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_uint64_t            unsigned 64 bit
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_intptr_t            signed   same number of bits as a pointer
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_uintptr_t           unsigned same number of bits as a pointer
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_ssize_t             signed   size
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_usize_t             unsigned size
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_float_t             signed   32 bit floating point
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *                                         nanoseconds
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    khronos_stime_nanoseconds_t signed time interval in nanoseconds
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Macros defined in this file:
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    KHRONOS_APICALL
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    KHRONOS_APIENTRY
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *    KHRONOS_APIATTRIBUTES
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * These may be used in function prototypes as:
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *                                  int arg1,
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *                                  int arg2) KHRONOS_APIATTRIBUTES;
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*-------------------------------------------------------------------------
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Definition of KHRONOS_APICALL
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-------------------------------------------------------------------------
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This precedes the return type of the function in the function prototype.
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   define KHRONOS_APICALL __declspec(dllimport)
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined (__SYMBIAN32__)
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   define KHRONOS_APICALL IMPORT_C
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__ANDROID__)
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   include <sys/cdefs.h>
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   define KHRONOS_APICALL __attribute__((visibility("default"))) __NDK_FPABI__
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   define KHRONOS_APICALL
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*-------------------------------------------------------------------------
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Definition of KHRONOS_APIENTRY
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-------------------------------------------------------------------------
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This follows the return type of the function  and precedes the function
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * name in the function prototype.
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    /* Win32 but not WinCE */
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   define KHRONOS_APIENTRY __stdcall
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#   define KHRONOS_APIENTRY
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*-------------------------------------------------------------------------
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Definition of KHRONOS_APIATTRIBUTES
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-------------------------------------------------------------------------
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This follows the closing parenthesis of the function prototype arguments.
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (__ARMCC_2__)
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_APIATTRIBUTES __softfp
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_APIATTRIBUTES
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*-------------------------------------------------------------------------
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * basic type definitions
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-----------------------------------------------------------------------*/
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Using <stdint.h>
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdint.h>
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int32_t                 khronos_int32_t;
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint32_t                khronos_uint32_t;
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int64_t                 khronos_int64_t;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint64_t                khronos_uint64_t;
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64   1
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT   1
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__VMS ) || defined(__sgi)
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Using <inttypes.h>
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <inttypes.h>
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int32_t                 khronos_int32_t;
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint32_t                khronos_uint32_t;
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int64_t                 khronos_int64_t;
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint64_t                khronos_uint64_t;
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64   1
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT   1
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Win32
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef __int32                 khronos_int32_t;
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned __int32        khronos_uint32_t;
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef __int64                 khronos_int64_t;
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned __int64        khronos_uint64_t;
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64   1
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT   1
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__sun__) || defined(__digital__)
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Sun or Digital
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int                     khronos_int32_t;
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned int            khronos_uint32_t;
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(__arch64__) || defined(_LP64)
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef long int                khronos_int64_t;
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long int       khronos_uint64_t;
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef long long int           khronos_int64_t;
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long long int  khronos_uint64_t;
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __arch64__ */
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64   1
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT   1
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif 0
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Hypothetical platform with no float or int64 support
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int                     khronos_int32_t;
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned int            khronos_uint32_t;
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64   0
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT   0
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Generic fallback
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdint.h>
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int32_t                 khronos_int32_t;
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint32_t                khronos_uint32_t;
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int64_t                 khronos_int64_t;
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint64_t                khronos_uint64_t;
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64   1
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT   1
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Types that are (so far) the same on all platforms
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed   char          khronos_int8_t;
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned char          khronos_uint8_t;
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed   short int     khronos_int16_t;
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned short int     khronos_uint16_t;
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed   long  int     khronos_intptr_t;
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long  int     khronos_uintptr_t;
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed   long  int     khronos_ssize_t;
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long  int     khronos_usize_t;
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if KHRONOS_SUPPORT_FLOAT
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Float type
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef          float         khronos_float_t;
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if KHRONOS_SUPPORT_INT64
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Time types
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * These types can be used to represent a time interval in nanoseconds or
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * an absolute Unadjusted System Time.  Unadjusted System Time is the number
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * of nanoseconds since some arbitrary system event (e.g. since the last
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * time the system booted).  The Unadjusted System Time is an unsigned
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 64 bit value that wraps back to 0 every 584 years.  Time intervals
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * may be either signed or unsigned.
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef khronos_uint64_t       khronos_utime_nanoseconds_t;
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef khronos_int64_t        khronos_stime_nanoseconds_t;
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __khrplatform_h_ */
245