forked from swiftlang/swift-java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJavaType+Extensions.swift
More file actions
38 lines (36 loc) · 1.05 KB
/
JavaType+Extensions.swift
File metadata and controls
38 lines (36 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2025 Apple Inc. and the Swift.org project authors
// Licensed under Apache License v2.0
//
// See LICENSE.txt for license information
// See CONTRIBUTORS.txt for the list of Swift.org project authors
//
// SPDX-License-Identifier: Apache-2.0
//
//===----------------------------------------------------------------------===//
import JavaTypes
extension JavaType {
var jniTypeSignature: String {
switch self {
case .boolean: "Z"
case .byte: "B"
case .char: "C"
case .short: "S"
case .int: "I"
case .long: "J"
case .float: "F"
case .double: "D"
case .class(let package, let name):
if let package {
"L\(package.replacingOccurrences(of: ".", with: "/"))/\(name);"
} else {
"L\(name);"
}
case .array(let javaType): "[\(javaType.jniTypeSignature)"
case .void: fatalError("There is no type signature for 'void'")
}
}
}