godot_core/builder/
mod.rs1use std::marker::PhantomData;
9
10use crate::obj::GodotClass;
11
12mod method;
13
14pub struct ClassBuilder<C> {
18 _c: PhantomData<C>,
19}
20
21impl<C> ClassBuilder<C>
22where
23 C: GodotClass,
24{
25 pub(crate) fn new() -> Self {
26 Self { _c: PhantomData }
27 }
28
29 pub fn virtual_method<'cb, F>(
30 &'cb mut self,
31 name: &'cb str,
32 method: F,
33 ) -> MethodBuilder<'cb, C, F> {
34 MethodBuilder::new(self, name, method)
35 }
36}
37
38#[allow(dead_code)] #[must_use]
42pub struct MethodBuilder<'cb, C, F> {
43 class_builder: &'cb mut ClassBuilder<C>,
44 name: &'cb str,
45 method: F,
46}
47
48impl<'cb, C, F> MethodBuilder<'cb, C, F> {
49 pub(super) fn new(class_builder: &'cb mut ClassBuilder<C>, name: &'cb str, method: F) -> Self {
50 Self {
51 class_builder,
52 name,
53 method,
54 }
55 }
56
57 pub fn done(self) {}
58}