use crate::raw;
pub use captures::*;
pub use cursor::*;
pub use match_captures::*;
pub use matches::*;
mod captures;
mod cursor;
mod match_captures;
mod matches;
pub trait Query {
type Match<'query, 'tree: 'query>: QueryMatch<'query, 'tree>;
type Capture<'query, 'tree: 'query>: QueryCapture<'query, 'tree>;
fn as_str(&self) -> &'static str;
fn raw(&self) -> &'static raw::Query;
unsafe fn wrap_match<'query, 'tree>(
&self,
r#match: raw::QueryMatch<'query, 'tree>,
) -> Self::Match<'query, 'tree>;
unsafe fn wrap_match_ref<'m, 'query, 'tree>(
&self,
r#match: &'m raw::QueryMatch<'query, 'tree>,
) -> &'m Self::Match<'query, 'tree>;
unsafe fn wrap_capture<'query, 'tree: 'query>(
&self,
#[cfg(feature = "yak-sitter")] capture: raw::QueryCapture<'query, 'tree>,
#[cfg(not(feature = "yak-sitter"))] capture: raw::QueryCapture<'tree>,
) -> Self::Capture<'query, 'tree>;
}