quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

warnless.c (6416B)


      1 /***************************************************************************
      2  *                                  _   _ ____  _
      3  *  Project                     ___| | | |  _ \| |
      4  *                             / __| | | | |_) | |
      5  *                            | (__| |_| |  _ <| |___
      6  *                             \___|\___/|_| \_\_____|
      7  *
      8  * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
      9  *
     10  * This software is licensed as described in the file COPYING, which
     11  * you should have received as part of this distribution. The terms
     12  * are also available at https://curl.se/docs/copyright.html.
     13  *
     14  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
     15  * copies of the Software, and permit persons to whom the Software is
     16  * furnished to do so, under the terms of the COPYING file.
     17  *
     18  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
     19  * KIND, either express or implied.
     20  *
     21  * SPDX-License-Identifier: curl
     22  *
     23  ***************************************************************************/
     24 
     25 #include "warnless.h"
     26 
     27 #if defined(__INTEL_COMPILER) && defined(__unix__)
     28 
     29 #ifdef HAVE_NETINET_IN_H
     30 #  include <netinet/in.h>
     31 #endif
     32 #ifdef HAVE_ARPA_INET_H
     33 #  include <arpa/inet.h>
     34 #endif
     35 
     36 #endif /* __INTEL_COMPILER && __unix__ */
     37 
     38 #include <limits.h>
     39 
     40 #define CURL_MASK_UCHAR   ((unsigned char)~0)
     41 
     42 #define CURL_MASK_USHORT  ((unsigned short)~0)
     43 
     44 #define CURL_MASK_UINT    ((unsigned int)~0)
     45 #define CURL_MASK_SINT    (CURL_MASK_UINT >> 1)
     46 
     47 #define CURL_MASK_ULONG   ((unsigned long)~0)
     48 
     49 #define CURL_MASK_USIZE_T ((size_t)~0)
     50 #define CURL_MASK_SSIZE_T (CURL_MASK_USIZE_T >> 1)
     51 
     52 /*
     53 ** unsigned long to unsigned char
     54 */
     55 
     56 unsigned char curlx_ultouc(unsigned long ulnum)
     57 {
     58 #ifdef __INTEL_COMPILER
     59 #  pragma warning(push)
     60 #  pragma warning(disable:810) /* conversion may lose significant bits */
     61 #endif
     62 
     63   DEBUGASSERT(ulnum <= (unsigned long) CURL_MASK_UCHAR);
     64   return (unsigned char)(ulnum & (unsigned long) CURL_MASK_UCHAR);
     65 
     66 #ifdef __INTEL_COMPILER
     67 #  pragma warning(pop)
     68 #endif
     69 }
     70 
     71 /*
     72 ** unsigned size_t to signed int
     73 */
     74 
     75 int curlx_uztosi(size_t uznum)
     76 {
     77 #ifdef __INTEL_COMPILER
     78 #  pragma warning(push)
     79 #  pragma warning(disable:810) /* conversion may lose significant bits */
     80 #endif
     81 
     82   DEBUGASSERT(uznum <= (size_t) CURL_MASK_SINT);
     83   return (int)(uznum & (size_t) CURL_MASK_SINT);
     84 
     85 #ifdef __INTEL_COMPILER
     86 #  pragma warning(pop)
     87 #endif
     88 }
     89 
     90 /*
     91 ** unsigned size_t to unsigned long
     92 */
     93 
     94 unsigned long curlx_uztoul(size_t uznum)
     95 {
     96 #ifdef __INTEL_COMPILER
     97 #  pragma warning(push)
     98 #  pragma warning(disable:810) /* conversion may lose significant bits */
     99 #endif
    100 
    101 #if ULONG_MAX < SIZE_T_MAX
    102   DEBUGASSERT(uznum <= (size_t) CURL_MASK_ULONG);
    103 #endif
    104   return (unsigned long)(uznum & (size_t) CURL_MASK_ULONG);
    105 
    106 #ifdef __INTEL_COMPILER
    107 #  pragma warning(pop)
    108 #endif
    109 }
    110 
    111 /*
    112 ** unsigned size_t to unsigned int
    113 */
    114 
    115 unsigned int curlx_uztoui(size_t uznum)
    116 {
    117 #ifdef __INTEL_COMPILER
    118 #  pragma warning(push)
    119 #  pragma warning(disable:810) /* conversion may lose significant bits */
    120 #endif
    121 
    122 #if UINT_MAX < SIZE_T_MAX
    123   DEBUGASSERT(uznum <= (size_t) CURL_MASK_UINT);
    124 #endif
    125   return (unsigned int)(uznum & (size_t) CURL_MASK_UINT);
    126 
    127 #ifdef __INTEL_COMPILER
    128 #  pragma warning(pop)
    129 #endif
    130 }
    131 
    132 /*
    133 ** signed long to signed int
    134 */
    135 
    136 int curlx_sltosi(long slnum)
    137 {
    138 #ifdef __INTEL_COMPILER
    139 #  pragma warning(push)
    140 #  pragma warning(disable:810) /* conversion may lose significant bits */
    141 #endif
    142 
    143   DEBUGASSERT(slnum >= 0);
    144 #if INT_MAX < LONG_MAX
    145   DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_SINT);
    146 #endif
    147   return (int)(slnum & (long) CURL_MASK_SINT);
    148 
    149 #ifdef __INTEL_COMPILER
    150 #  pragma warning(pop)
    151 #endif
    152 }
    153 
    154 /*
    155 ** signed long to unsigned int
    156 */
    157 
    158 unsigned int curlx_sltoui(long slnum)
    159 {
    160 #ifdef __INTEL_COMPILER
    161 #  pragma warning(push)
    162 #  pragma warning(disable:810) /* conversion may lose significant bits */
    163 #endif
    164 
    165   DEBUGASSERT(slnum >= 0);
    166 #if UINT_MAX < LONG_MAX
    167   DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_UINT);
    168 #endif
    169   return (unsigned int)(slnum & (long) CURL_MASK_UINT);
    170 
    171 #ifdef __INTEL_COMPILER
    172 #  pragma warning(pop)
    173 #endif
    174 }
    175 
    176 /*
    177 ** signed long to unsigned short
    178 */
    179 
    180 unsigned short curlx_sltous(long slnum)
    181 {
    182 #ifdef __INTEL_COMPILER
    183 #  pragma warning(push)
    184 #  pragma warning(disable:810) /* conversion may lose significant bits */
    185 #endif
    186 
    187   DEBUGASSERT(slnum >= 0);
    188   DEBUGASSERT((unsigned long) slnum <= (unsigned long) CURL_MASK_USHORT);
    189   return (unsigned short)(slnum & (long) CURL_MASK_USHORT);
    190 
    191 #ifdef __INTEL_COMPILER
    192 #  pragma warning(pop)
    193 #endif
    194 }
    195 
    196 /*
    197 ** unsigned size_t to signed ssize_t
    198 */
    199 
    200 ssize_t curlx_uztosz(size_t uznum)
    201 {
    202 #ifdef __INTEL_COMPILER
    203 #  pragma warning(push)
    204 #  pragma warning(disable:810) /* conversion may lose significant bits */
    205 #endif
    206 
    207   DEBUGASSERT(uznum <= (size_t) CURL_MASK_SSIZE_T);
    208   return (ssize_t)(uznum & (size_t) CURL_MASK_SSIZE_T);
    209 
    210 #ifdef __INTEL_COMPILER
    211 #  pragma warning(pop)
    212 #endif
    213 }
    214 
    215 /*
    216 ** signed curl_off_t to unsigned size_t
    217 */
    218 
    219 size_t curlx_sotouz(curl_off_t sonum)
    220 {
    221 #ifdef __INTEL_COMPILER
    222 #  pragma warning(push)
    223 #  pragma warning(disable:810) /* conversion may lose significant bits */
    224 #endif
    225 
    226   DEBUGASSERT(sonum >= 0);
    227   return (size_t)(sonum & (curl_off_t) CURL_MASK_USIZE_T);
    228 
    229 #ifdef __INTEL_COMPILER
    230 #  pragma warning(pop)
    231 #endif
    232 }
    233 
    234 /*
    235 ** signed ssize_t to signed int
    236 */
    237 
    238 int curlx_sztosi(ssize_t sznum)
    239 {
    240 #ifdef __INTEL_COMPILER
    241 #  pragma warning(push)
    242 #  pragma warning(disable:810) /* conversion may lose significant bits */
    243 #endif
    244 
    245   DEBUGASSERT(sznum >= 0);
    246 #if INT_MAX < SSIZE_T_MAX
    247   DEBUGASSERT((size_t) sznum <= (size_t) CURL_MASK_SINT);
    248 #endif
    249   return (int)(sznum & (ssize_t) CURL_MASK_SINT);
    250 
    251 #ifdef __INTEL_COMPILER
    252 #  pragma warning(pop)
    253 #endif
    254 }
    255 
    256 /*
    257 ** unsigned int to unsigned short
    258 */
    259 
    260 unsigned short curlx_uitous(unsigned int uinum)
    261 {
    262 #ifdef __INTEL_COMPILER
    263 #  pragma warning(push)
    264 #  pragma warning(disable:810) /* conversion may lose significant bits */
    265 #endif
    266 
    267   DEBUGASSERT(uinum <= (unsigned int) CURL_MASK_USHORT);
    268   return (unsigned short) (uinum & (unsigned int) CURL_MASK_USHORT);
    269 
    270 #ifdef __INTEL_COMPILER
    271 #  pragma warning(pop)
    272 #endif
    273 }
    274 
    275 /*
    276 ** signed int to unsigned size_t
    277 */
    278 
    279 size_t curlx_sitouz(int sinum)
    280 {
    281 #ifdef __INTEL_COMPILER
    282 #  pragma warning(push)
    283 #  pragma warning(disable:810) /* conversion may lose significant bits */
    284 #endif
    285 
    286   DEBUGASSERT(sinum >= 0);
    287   return (size_t) sinum;
    288 
    289 #ifdef __INTEL_COMPILER
    290 #  pragma warning(pop)
    291 #endif
    292 }