~ubuntu-branches/ubuntu/trusty/libthrust/trusty

« back to all changes in this revision

Viewing changes to detail/cstdint.h

  • Committer: Bazaar Package Importer
  • Author(s): Andreas Beckmann
  • Date: 2011-05-28 09:32:48 UTC
  • Revision ID: james.westby@ubuntu.com-20110528093248-np3euv5sj7fw3nyv
Tags: upstream-1.4.0
ImportĀ upstreamĀ versionĀ 1.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  Copyright 2008-2011 NVIDIA Corporation
 
3
 *
 
4
 *  Licensed under the Apache License, Version 2.0 (the "License");
 
5
 *  you may not use this file except in compliance with the License.
 
6
 *  You may obtain a copy of the License at
 
7
 *
 
8
 *      http://www.apache.org/licenses/LICENSE-2.0
 
9
 *
 
10
 *  Unless required by applicable law or agreed to in writing, software
 
11
 *  distributed under the License is distributed on an "AS IS" BASIS,
 
12
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
13
 *  See the License for the specific language governing permissions and
 
14
 *  limitations under the License.
 
15
 */
 
16
 
 
17
#pragma once
 
18
 
 
19
namespace thrust
 
20
{
 
21
 
 
22
namespace detail
 
23
{
 
24
 
 
25
// an oracle to tell us how to define uint64_t
 
26
template<int word_size = sizeof(int*)> struct divine_uint64_t;
 
27
 
 
28
// 32b machine type
 
29
template<>
 
30
  struct divine_uint64_t<4>
 
31
{
 
32
  typedef unsigned long long int type;
 
33
};
 
34
 
 
35
// 64b machine type
 
36
template<>
 
37
  struct divine_uint64_t<8>
 
38
{
 
39
  typedef unsigned long long int type;
 
40
};
 
41
 
 
42
typedef unsigned int            uint32_t;
 
43
typedef divine_uint64_t<>::type uint64_t;
 
44
 
 
45
 
 
46
// an oracle to tell us how to define intptr_t
 
47
template<int word_size = sizeof(int*)> struct divine_intptr_t;
 
48
 
 
49
// use uint32_t on 32b platforms
 
50
template<>
 
51
  struct divine_intptr_t<4>
 
52
{
 
53
  typedef thrust::detail::uint32_t type;
 
54
};
 
55
 
 
56
// use uint64_t on 64b platforms
 
57
template<>
 
58
  struct divine_intptr_t<8>
 
59
{
 
60
  typedef thrust::detail::uint64_t type;
 
61
};
 
62
 
 
63
typedef divine_intptr_t<>::type   intptr_t;
 
64
typedef thrust::detail::intptr_t uintptr_t;
 
65
 
 
66
 
 
67
} // end detail
 
68
 
 
69
} // end thrust
 
70