xref: /llvm-project/flang/lib/Common/default-kinds.cpp (revision d1d952c206efc3a651270c69331b180330ac3efc)
164ab3302SCarolineConcatto //===-- lib/Common/default-kinds.cpp --------------------------------------===//
264ab3302SCarolineConcatto //
364ab3302SCarolineConcatto // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
464ab3302SCarolineConcatto // See https://llvm.org/LICENSE.txt for license information.
564ab3302SCarolineConcatto // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
664ab3302SCarolineConcatto //
764ab3302SCarolineConcatto //===----------------------------------------------------------------------===//
864ab3302SCarolineConcatto 
964ab3302SCarolineConcatto #include "flang/Common/default-kinds.h"
1064ab3302SCarolineConcatto #include "flang/Common/idioms.h"
1164ab3302SCarolineConcatto 
1264ab3302SCarolineConcatto namespace Fortran::common {
1364ab3302SCarolineConcatto 
14*d1d952c2SPeter Klausler IntrinsicTypeDefaultKinds::IntrinsicTypeDefaultKinds() {}
1564ab3302SCarolineConcatto 
1664ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultIntegerKind(
1764ab3302SCarolineConcatto     int k) {
1864ab3302SCarolineConcatto   defaultIntegerKind_ = k;
1964ab3302SCarolineConcatto   return *this;
2064ab3302SCarolineConcatto }
2164ab3302SCarolineConcatto 
2264ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_subscriptIntegerKind(
2364ab3302SCarolineConcatto     int k) {
2464ab3302SCarolineConcatto   subscriptIntegerKind_ = k;
2564ab3302SCarolineConcatto   return *this;
2664ab3302SCarolineConcatto }
2764ab3302SCarolineConcatto 
2864ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_sizeIntegerKind(
2964ab3302SCarolineConcatto     int k) {
3064ab3302SCarolineConcatto   sizeIntegerKind_ = k;
3164ab3302SCarolineConcatto   return *this;
3264ab3302SCarolineConcatto }
3364ab3302SCarolineConcatto 
3464ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultRealKind(
3564ab3302SCarolineConcatto     int k) {
3664ab3302SCarolineConcatto   defaultRealKind_ = k;
3764ab3302SCarolineConcatto   return *this;
3864ab3302SCarolineConcatto }
3964ab3302SCarolineConcatto 
4064ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_doublePrecisionKind(
4164ab3302SCarolineConcatto     int k) {
4264ab3302SCarolineConcatto   doublePrecisionKind_ = k;
4364ab3302SCarolineConcatto   return *this;
4464ab3302SCarolineConcatto }
4564ab3302SCarolineConcatto 
4664ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_quadPrecisionKind(
4764ab3302SCarolineConcatto     int k) {
4864ab3302SCarolineConcatto   quadPrecisionKind_ = k;
4964ab3302SCarolineConcatto   return *this;
5064ab3302SCarolineConcatto }
5164ab3302SCarolineConcatto 
5264ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultCharacterKind(
5364ab3302SCarolineConcatto     int k) {
5464ab3302SCarolineConcatto   defaultCharacterKind_ = k;
5564ab3302SCarolineConcatto   return *this;
5664ab3302SCarolineConcatto }
5764ab3302SCarolineConcatto 
5864ab3302SCarolineConcatto IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultLogicalKind(
5964ab3302SCarolineConcatto     int k) {
6064ab3302SCarolineConcatto   defaultLogicalKind_ = k;
6164ab3302SCarolineConcatto   return *this;
6264ab3302SCarolineConcatto }
6364ab3302SCarolineConcatto 
6464ab3302SCarolineConcatto int IntrinsicTypeDefaultKinds::GetDefaultKind(TypeCategory category) const {
6564ab3302SCarolineConcatto   switch (category) {
661f879005STim Keith   case TypeCategory::Integer:
67fc97d2e6SPeter Klausler   case TypeCategory::Unsigned:
681f879005STim Keith     return defaultIntegerKind_;
6964ab3302SCarolineConcatto   case TypeCategory::Real:
701f879005STim Keith   case TypeCategory::Complex:
711f879005STim Keith     return defaultRealKind_;
721f879005STim Keith   case TypeCategory::Character:
731f879005STim Keith     return defaultCharacterKind_;
741f879005STim Keith   case TypeCategory::Logical:
751f879005STim Keith     return defaultLogicalKind_;
761f879005STim Keith   default:
771f879005STim Keith     CRASH_NO_CASE;
781f879005STim Keith     return 0;
7964ab3302SCarolineConcatto   }
8064ab3302SCarolineConcatto }
811f879005STim Keith } // namespace Fortran::common
82