| //===-- lib/Support/default-kinds.cpp ---------------------------*- C++ -*-===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "flang/Support/default-kinds.h" | |
| #include "flang/Common/idioms.h" | |
| namespace Fortran::common { | |
| IntrinsicTypeDefaultKinds::IntrinsicTypeDefaultKinds() {} | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultIntegerKind( | |
| int k) { | |
| defaultIntegerKind_ = k; | |
| return *this; | |
| } | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_subscriptIntegerKind( | |
| int k) { | |
| subscriptIntegerKind_ = k; | |
| return *this; | |
| } | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_sizeIntegerKind( | |
| int k) { | |
| sizeIntegerKind_ = k; | |
| return *this; | |
| } | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultRealKind( | |
| int k) { | |
| defaultRealKind_ = k; | |
| return *this; | |
| } | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_doublePrecisionKind( | |
| int k) { | |
| doublePrecisionKind_ = k; | |
| return *this; | |
| } | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_quadPrecisionKind( | |
| int k) { | |
| quadPrecisionKind_ = k; | |
| return *this; | |
| } | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultCharacterKind( | |
| int k) { | |
| defaultCharacterKind_ = k; | |
| return *this; | |
| } | |
| IntrinsicTypeDefaultKinds &IntrinsicTypeDefaultKinds::set_defaultLogicalKind( | |
| int k) { | |
| defaultLogicalKind_ = k; | |
| return *this; | |
| } | |
| int IntrinsicTypeDefaultKinds::GetDefaultKind(TypeCategory category) const { | |
| switch (category) { | |
| case TypeCategory::Integer: | |
| case TypeCategory::Unsigned: | |
| return defaultIntegerKind_; | |
| case TypeCategory::Real: | |
| case TypeCategory::Complex: | |
| return defaultRealKind_; | |
| case TypeCategory::Character: | |
| return defaultCharacterKind_; | |
| case TypeCategory::Logical: | |
| return defaultLogicalKind_; | |
| default: | |
| CRASH_NO_CASE; | |
| return 0; | |
| } | |
| } | |
| } // namespace Fortran::common |