LCOV - code coverage report
Current view: top level - gfx/sfntly/cpp/src/sfntly/port - type.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 2 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 32 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2011 Google Inc. All Rights Reserved.
       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             : #ifndef SFNTLY_CPP_SRC_SFNTLY_PORT_TYPE_H_
      18             : #define SFNTLY_CPP_SRC_SFNTLY_PORT_TYPE_H_
      19             : 
      20             : #include <assert.h>
      21             : 
      22             : #if defined (_MSC_VER) && (_MSC_VER < 1600)
      23             :   typedef unsigned char     uint8_t;
      24             :   typedef signed char       int8_t;
      25             :   typedef unsigned __int16  uint16_t;
      26             :   typedef signed __int16    int16_t;
      27             :   typedef unsigned __int32  uint32_t;
      28             :   typedef signed __int32    int32_t;
      29             :   typedef unsigned __int64  uint64_t;
      30             :   typedef signed __int64    int64_t;
      31             :   // Definitions to avoid ICU redefinition issue
      32             :   #define U_HAVE_INT8_T 1
      33             :   #define U_HAVE_UINT8_T 1
      34             :   #define U_HAVE_INT16_T 1
      35             :   #define U_HAVE_UINT16_T 1
      36             :   #define U_HAVE_INT32_T 1
      37             :   #define U_HAVE_UINT32_T 1
      38             :   #define U_HAVE_INT64_T 1
      39             :   #define U_HAVE_UINT64_T 1
      40             : #else
      41             :   #include <stdint.h>
      42             : #endif
      43             : 
      44             : #include <stddef.h>
      45             : #include <vector>
      46             : #include <set>
      47             : 
      48             : namespace sfntly {
      49             : 
      50             : typedef uint8_t   byte_t;
      51             : typedef uint16_t  word_t;
      52             : typedef uint32_t  dword_t;
      53             : typedef uint64_t  qword_t;
      54             : 
      55             : typedef std::vector<byte_t> ByteVector;
      56             : typedef std::vector<int32_t> IntegerList;
      57             : typedef std::set<int32_t> IntegerSet;
      58             : 
      59             : // A macro to disallow the copy constructor and operator= functions.
      60             : // This should be used in the private: declarations for a class.
      61             : #define NO_COPY_AND_ASSIGN(TypeName) \
      62             :   TypeName(const TypeName&);               \
      63             :   void operator=(const TypeName&)
      64             : 
      65             : }  // namespace sfntly
      66             : 
      67             : // Make google3 happy since it prohibits RTTI.
      68             : template<typename To, typename From>
      69             : inline To implicit_cast(From const &f) {
      70             :   return f;
      71             : }
      72             : 
      73             : template<typename To, typename From>     // use like this: down_cast<T*>(foo);
      74           0 : inline To down_cast(From* f) {                   // so we only accept pointers
      75             :   // Ensures that To is a sub-type of From *.  This test is here only
      76             :   // for compile-time type checking, and has no overhead in an
      77             :   // optimized build at run-time, as it will be optimized away
      78             :   // completely.
      79             : #if defined (_MSC_VER)
      80             :   #pragma warning(push)
      81             :   #pragma warning(disable:4127)  // disable "conditional expression is constant"
      82             : #endif
      83             :   if (false) {
      84             :     implicit_cast<From*, To>(0);
      85             :   }
      86             : #if defined (_MSC_VER)
      87             :   #pragma warning(pop)
      88             : #endif
      89             : 
      90             : // The following code is the only place for RTTI.  It is done so to allow
      91             : // additional type checking when SFNTLY_TYPE_VERIFICATION is defined.
      92             : #if defined (SFNTLY_TYPE_VERIFICATION)
      93             :   assert(f == NULL || dynamic_cast<To>(f) != NULL);
      94             : #endif
      95           0 :   return static_cast<To>(f);
      96             : }
      97             : 
      98             : #if !defined(WIN32)
      99             :   #define UNREFERENCED_PARAMETER(p) do { (void)p; } while (0)
     100             : #endif
     101             : 
     102             : #endif  // SFNTLY_CPP_SRC_SFNTLY_PORT_TYPE_H_

Generated by: LCOV version 1.13