File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / smartmontools / int64.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Oct 9 09:36:45 2012 UTC (11 years, 8 months ago) by misho
Branches: smartmontools, elwix, MAIN
CVS tags: v5_43, HEAD
smartmontools

    1: /*
    2:  * int64.h
    3:  *
    4:  * Home page of code is: http://smartmontools.sourceforge.net
    5:  *
    6:  * Copyright (C) 2002-11 Bruce Allen <smartmontools-support@lists.sourceforge.net>
    7:  * Copyright (C) 2004-11 Christian Franke
    8:  *
    9:  * This program is free software; you can redistribute it and/or modify
   10:  * it under the terms of the GNU General Public License as published by
   11:  * the Free Software Foundation; either version 2, or (at your option)
   12:  * any later version.
   13:  *
   14:  * You should have received a copy of the GNU General Public License
   15:  * (for example COPYING); if not, write to the Free
   16:  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
   17:  *
   18:  */
   19: 
   20: #ifndef INT64_H_
   21: #define INT64_H_
   22: 
   23: #define INT64_H_CVSID "$Id: int64.h,v 1.1.1.2 2012/10/09 09:36:45 misho Exp $"
   24: 
   25: // 64 bit integer typedefs and format strings
   26: 
   27: #ifdef HAVE_INTTYPES_H
   28: // The ISO C99 standard specifies that in C++ implementations the PRI* macros
   29: // from <inttypes.h> should only be defined if explicitly requested
   30: #define __STDC_FORMAT_MACROS 1
   31: #include <inttypes.h> // PRId64, PRIu64, PRIx64 (also includes <stdint.h>)
   32: #else
   33: #ifdef HAVE_STDINT_H
   34: #include <stdint.h> // int64_t, uint64_t (usually included above)
   35: #else
   36: #ifdef HAVE_SYS_INTTYPES_H
   37: #include <sys/inttypes.h>
   38: #else
   39: #ifdef HAVE_SYS_INT_TYPES_H
   40: #include <sys/int_types.h>
   41: #else
   42: #if defined(_WIN32) && defined(_MSC_VER)
   43: // for MSVC <= 9 (MSVC10 and MinGW provide <stdint.h>)
   44: typedef          __int64    int64_t;
   45: typedef unsigned __int64   uint64_t;
   46: #else
   47: // for systems with above includes missing (like ix86-pc-linux-gnulibc1),
   48: // default to GCC if types are undefined in types.h
   49: #include <sys/types.h>
   50: #ifndef HAVE_INT64_T
   51: typedef          long long  int64_t;
   52: #endif
   53: #ifndef HAVE_UINT64_T
   54: typedef unsigned long long uint64_t;
   55: #endif
   56: #endif // _WIN32 && _MSC_VER
   57: #endif // HAVE_SYS_INT_TYPES_H
   58: #endif // HAVE_SYS_INTTYPES_H
   59: #endif // HAVE_STDINT_H
   60: #endif // HAVE_INTTYPES_H
   61: 
   62: #if defined(_WIN32) && !defined(PRId64)
   63: // for MSVC (MinGW provides <inttypes.h>)
   64: #define PRId64 "I64d"
   65: #define PRIu64 "I64u"
   66: #define PRIx64 "I64x"
   67: #endif // _WIN32 && !PRId64
   68: 
   69: // If macros not defined in inttypes.h, fix here.  Default is GCC
   70: // style
   71: #ifndef PRId64
   72: #define PRId64 "lld"
   73: #endif // ndef PRId64
   74: 
   75: #ifndef PRIu64
   76: #define PRIu64 "llu"
   77: #endif // ndef PRIu64
   78: 
   79: #ifndef PRIx64
   80: #define PRIx64 "llx"
   81: #endif // ndef PRIx64
   82: 
   83: #endif // INT64_H

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>