Skip to main content

hsipc_macros/
lib.rs

1//! Procedural macros for hsipc - RPC system
2
3use proc_macro::TokenStream;
4use syn::{parse_macro_input, DeriveInput};
5
6mod event;
7mod rpc;
8mod subscribe;
9
10/// Derive macro for creating events
11#[proc_macro_derive(Event, attributes(event))]
12pub fn event(input: TokenStream) -> TokenStream {
13    let input = parse_macro_input!(input as DeriveInput);
14    event::derive_event_impl(input)
15}
16
17/// Attribute macro for subscription methods
18#[proc_macro_attribute]
19pub fn subscribe(args: TokenStream, input: TokenStream) -> TokenStream {
20    let input = parse_macro_input!(input as syn::ItemFn);
21    subscribe::subscribe_impl(args, input)
22}
23
24// RPC System Macros
25
26/// Main RPC macro - generates server and client code
27#[proc_macro_attribute]
28pub fn rpc(args: TokenStream, input: TokenStream) -> TokenStream {
29    rpc::rpc_impl(args, input)
30}
31
32/// Method attribute macro for RPC methods (placeholder)
33#[proc_macro_attribute]
34pub fn method(_args: TokenStream, input: TokenStream) -> TokenStream {
35    // Placeholder - actual processing happens in #[rpc] macro
36    input
37}
38
39/// Subscription attribute macro for RPC subscriptions (placeholder)
40#[proc_macro_attribute]
41pub fn subscription(_args: TokenStream, input: TokenStream) -> TokenStream {
42    // Placeholder - actual processing happens in #[rpc] macro
43    input
44}