#ifndef _INT_TYPE_H
#define _INT_TYPE_H
/* int_type.h */
/*****************************************************************************/
/* SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only                     */
/*                                                                           */
/* ASL                                                                       */
/*                                                                           */
/* Integer Types of various lengths and signedness                           */
/*                                                                           */
/*****************************************************************************/

typedef enum
{
  UInt0
 ,UInt1
 ,UInt2
 ,UInt3
 ,SInt4    , UInt4   , Int4
 ,SInt5    , UInt5   , Int5
 ,SInt6    , UInt6   , Int6
 ,SInt7    , UInt7
 ,SInt8    , UInt8   , Int8
 ,SInt9    , UInt9
 ,UInt10   , Int10
 ,UInt11
 ,UInt12   , Int12
 ,UInt13
 ,UInt14   , Int14
 ,SInt15   , UInt15  , Int15
 ,SInt16   , UInt16  , Int16
 ,UInt17
 ,UInt18   , Int18
 ,UInt19
 ,SInt20   , UInt20  , Int20
 ,SInt21   , UInt21  , Int21
 ,UInt22
 ,UInt23
 ,SInt24   , UInt24  , Int24
 ,SInt30   , UInt30  , Int30
 ,SInt32   , UInt32  , Int32
 ,SInt64   , UInt64  , Int64
 ,SInt128   , UInt128  , Int128
 ,IntTypeCnt
} IntType;

#ifdef __cplusplus
# include "cppops.h"
DefCPPOps_Enum(IntType)
#endif

#include "datatypes.h"

#ifdef AS_HAS128
# define LargeUIntType UInt128
# define LargeSIntType SInt128
# define LargeIntType Int128
#else
# ifdef AS_HAS64
# define LargeUIntType UInt64
# define LargeSIntType SInt64
# define LargeIntType Int64
# else
#  define LargeUIntType UInt32
#  define LargeSIntType SInt32
#  define LargeIntType Int32
# endif
#endif

#endif /* _INT_TYPE_H */
