summaryrefslogtreecommitdiff
path: root/FL/fl_casts.H
blob: 1d0d881cda5cb47e42acff5ce72971bf1608f882 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//
// Experimental inline "cast functions" for the Fast Light Toolkit (FLTK).
// See also issue #109: "VS2017 warnings when building fltk 1.4.x"
//
// Copyright 1998-2021 by Bill Spitzak and others.
//
// This library is free software. Distribution and use rights are outlined in
// the file "COPYING" which should have been included with this file.  If this
// file is missing or damaged, see the license at:
//
//     https://www.fltk.org/COPYING.php
//
// Please see the following page on how to report bugs and issues:
//
//     https://www.fltk.org/bugs.php
//

#include <FL/platform_types.h>

inline char fl_char(void *v)             { return (char)(fl_intptr_t)v; }
inline int  fl_int(void *v)              { return (int)(fl_intptr_t)v; }
inline long fl_long(void *v)             { return (long)(fl_intptr_t)v; }

inline unsigned char fl_uchar(void *v)   { return (unsigned char)(fl_uintptr_t)v; }
inline unsigned int  fl_uint(void *v)    { return (unsigned int)(fl_uintptr_t)v; }
inline unsigned long fl_ulong(void *v)   { return (unsigned long)(fl_uintptr_t)v; }

// the following conversions can be used to silence MSVC warning C4312:
// 'type cast': conversion from '<type>' to 'void *' of greater size

inline void *fl_voidptr(int v)           { return (void *)(fl_intptr_t)v; }
inline void *fl_voidptr(unsigned int v)  { return (void *)(fl_uintptr_t)v; }
inline void *fl_voidptr(long v)          { return (void *)(fl_intptr_t)v; }
inline void *fl_voidptr(unsigned long v) { return (void *)(fl_uintptr_t)v; }