use vala_sys as ffi;
use crate::object::{opt_string, RawWrapper};
use crate::{Comment, Symbol};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Accessibility {
Private,
Internal,
Protected,
Public,
}
impl Symbol {
pub fn name(&self) -> Option<String> {
unsafe { opt_string(ffi::vala_symbol_get_name(self.as_raw())) }
}
pub fn accessibility(&self) -> Accessibility {
let access = unsafe { ffi::vala_symbol_get_access(self.as_raw()) };
match access {
ffi::VALA_SYMBOL_ACCESSIBILITY_PRIVATE => Accessibility::Private,
ffi::VALA_SYMBOL_ACCESSIBILITY_INTERNAL => Accessibility::Internal,
ffi::VALA_SYMBOL_ACCESSIBILITY_PROTECTED => Accessibility::Protected,
ffi::VALA_SYMBOL_ACCESSIBILITY_PUBLIC => Accessibility::Public,
other => panic!("unknown ValaSymbolAccessibility value {other}"),
}
}
pub fn is_external_package(&self) -> bool {
unsafe { ffi::vala_symbol_get_external_package(self.as_raw()) != glib_sys::GFALSE }
}
pub fn comment(&self) -> Option<Comment> {
unsafe { Comment::from_raw_none(ffi::vala_symbol_get_comment(self.as_raw())) }
}
}
impl Comment {
pub fn content(&self) -> Option<String> {
unsafe { opt_string(ffi::vala_comment_get_content(self.as_raw())) }
}
}