intercom-attributes 0.4.0

See 'intercom'
Documentation
extern crate intercom;

mod interface
{

    #[intercom::com_interface]
    pub trait MyInterface
    {
        fn interface_method(&self) -> u32;
    }
}

mod class
{
    #[intercom::com_class(MyStruct, crate::interface::MyInterface)]
    #[derive(Default)]
    pub struct MyStruct;
}

mod interface_impl
{
    impl crate::interface::MyInterface for crate::class::MyStruct
    {
        fn interface_method(&self) -> u32
        {
            0
        }
    }
}

mod class_impl
{
    #[intercom::com_interface]
    impl crate::class::MyStruct
    {
        fn struct_method(&self) -> u32
        {
            0
        }
    }
}

mod submodule
{
    intercom::com_module!(
        class SubmoduleClass
    );

    #[intercom::com_class(Self)]
    #[derive(Default)]
    pub struct SubmoduleClass;

    #[intercom::com_interface]
    impl SubmoduleClass {}
}

intercom::com_library!(
    class class::MyStruct,
    module submodule,
);