1mod abi;
7mod name;
8mod path;
9mod sdk;
10
11pub use abi::{Abi, UnknownAbi};
12pub use name::{
13 ClassName, ClassNameError, LibraryName, LibraryNameError, PackageName, PackageNameError, PermissionName,
14 PermissionNameError,
15};
16pub use path::{ArchivePath, ArchivePathError, MAX_ARCHIVE_PATH_LEN};
17pub use sdk::{ApiLevel, ApiLevelError, VersionCode, VersionCodeError};
18
19pub(crate) fn is_java_identifier(s: &str) -> bool {
22 let mut bytes = s.bytes();
23 bytes.next().is_some_and(|b| b.is_ascii_alphabetic() || b == b'_' || b == b'$')
24 && bytes.all(|b| b.is_ascii_alphanumeric() || b == b'_' || b == b'$')
25}