cxx_build/syntax/
query.rs

1use crate::syntax::{Array, NamedType, Ptr, Ref, Type};
2
3#[derive(#[automatically_derived]
impl<'a> ::core::marker::Copy for TypeQuery<'a> { }Copy, #[automatically_derived]
impl<'a> ::core::clone::Clone for TypeQuery<'a> {
    #[inline]
    fn clone(&self) -> TypeQuery<'a> {
        let _: ::core::clone::AssertParamIsClone<&'a NamedType>;
        let _: ::core::clone::AssertParamIsClone<&'a Ref>;
        let _: ::core::clone::AssertParamIsClone<&'a Ptr>;
        let _: ::core::clone::AssertParamIsClone<&'a Array>;
        *self
    }
}Clone)]
4pub(crate) enum TypeQuery<'a> {
5    Ident(&'a NamedType),
6    RustBox,
7    RustVec,
8    UniquePtr,
9    SharedPtr,
10    WeakPtr,
11    Ref(&'a Ref),
12    Ptr(&'a Ptr),
13    Str,
14    CxxVector,
15    Fn,
16    Void,
17    SliceRef,
18    Array(&'a Array),
19}
20
21impl<'a> From<&'a NamedType> for TypeQuery<'a> {
22    fn from(query: &'a NamedType) -> Self {
23        TypeQuery::Ident(query)
24    }
25}
26
27impl<'a> From<&'a Type> for TypeQuery<'a> {
28    fn from(query: &'a Type) -> Self {
29        match query {
30            Type::Ident(query) => TypeQuery::Ident(query),
31            Type::RustBox(_) => TypeQuery::RustBox,
32            Type::RustVec(_) => TypeQuery::RustVec,
33            Type::UniquePtr(_) => TypeQuery::UniquePtr,
34            Type::SharedPtr(_) => TypeQuery::SharedPtr,
35            Type::WeakPtr(_) => TypeQuery::WeakPtr,
36            Type::Ref(query) => TypeQuery::Ref(query),
37            Type::Ptr(query) => TypeQuery::Ptr(query),
38            Type::Str(_) => TypeQuery::Str,
39            Type::CxxVector(_) => TypeQuery::CxxVector,
40            Type::Fn(_) => TypeQuery::Fn,
41            Type::Void(_) => TypeQuery::Void,
42            Type::SliceRef(_) => TypeQuery::SliceRef,
43            Type::Array(query) => TypeQuery::Array(query),
44        }
45    }
46}