1use core::range::Range;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
8pub struct JavaRoot {
9 pub items: Vec<Item>,
11}
12
13#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub enum Item {
16 Class(ClassDeclaration),
18 Interface(InterfaceDeclaration),
20 Package(PackageDeclaration),
22 Import(ImportDeclaration),
24}
25
26#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
28pub struct ClassDeclaration {
29 pub name: String,
31 #[serde(with = "oak_core::serde_range")]
33 pub span: Range<usize>,
34}
35
36#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
38pub struct InterfaceDeclaration {
39 pub name: String,
41 #[serde(with = "oak_core::serde_range")]
43 pub span: Range<usize>,
44}
45
46#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
48pub struct PackageDeclaration {
49 pub name: String,
51 #[serde(with = "oak_core::serde_range")]
53 pub span: Range<usize>,
54}
55
56#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
58pub struct ImportDeclaration {
59 pub path: String,
61 pub is_static: bool,
63 #[serde(with = "oak_core::serde_range")]
65 pub span: Range<usize>,
66}