Lines Matching refs:code_writer

607 void GenerateRustInterface(CodeWriter* code_writer, const AidlInterface* iface,  in GenerateRustInterface()  argument
609 *code_writer << "#![allow(non_upper_case_globals)]\n"; in GenerateRustInterface()
610 *code_writer << "#![allow(non_snake_case)]\n"; in GenerateRustInterface()
612 *code_writer << "#[allow(unused_imports)] use binder::binder_impl::IBinderInternal;\n"; in GenerateRustInterface()
619 *code_writer << "use binder::declare_binder_interface;\n"; in GenerateRustInterface()
620 *code_writer << "declare_binder_interface! {\n"; in GenerateRustInterface()
621 code_writer->Indent(); in GenerateRustInterface()
622 *code_writer << trait_name << "[\"" << iface->GetDescriptor() << "\"] {\n"; in GenerateRustInterface()
623 code_writer->Indent(); in GenerateRustInterface()
624 *code_writer << "native: " << server_name << "(on_transact),\n"; in GenerateRustInterface()
625 *code_writer << "proxy: " << client_name << " {\n"; in GenerateRustInterface()
626 code_writer->Indent(); in GenerateRustInterface()
629 *code_writer << "cached_version: " in GenerateRustInterface()
635 *code_writer << "cached_hash: " in GenerateRustInterface()
639 code_writer->Dedent(); in GenerateRustInterface()
640 *code_writer << "},\n"; in GenerateRustInterface()
641 *code_writer << "async: " << trait_name_async << ",\n"; in GenerateRustInterface()
643 *code_writer << "stability: binder::binder_impl::Stability::Vintf,\n"; in GenerateRustInterface()
645 code_writer->Dedent(); in GenerateRustInterface()
646 *code_writer << "}\n"; in GenerateRustInterface()
647 code_writer->Dedent(); in GenerateRustInterface()
648 *code_writer << "}\n"; in GenerateRustInterface()
651 GenerateDeprecated(*code_writer, *iface); in GenerateRustInterface()
652 *code_writer << "pub trait " << trait_name << ": binder::Interface + Send {\n"; in GenerateRustInterface()
653 code_writer->Indent(); in GenerateRustInterface()
654 *code_writer << "fn get_descriptor() -> &'static str where Self: Sized { \"" in GenerateRustInterface()
659 GenerateDeprecated(*code_writer, *method); in GenerateRustInterface()
661 *code_writer << BuildMethod(*method, typenames) << ";\n"; in GenerateRustInterface()
664 *code_writer << BuildMethod(*method, typenames) << " {\n"; in GenerateRustInterface()
665 code_writer->Indent(); in GenerateRustInterface()
667 *code_writer << "Ok(VERSION)\n"; in GenerateRustInterface()
669 *code_writer << "Ok(HASH.into())\n"; in GenerateRustInterface()
671 code_writer->Dedent(); in GenerateRustInterface()
672 *code_writer << "}\n"; in GenerateRustInterface()
679 *code_writer << "fn getDefaultImpl()" in GenerateRustInterface()
681 *code_writer << " DEFAULT_IMPL.lock().unwrap().clone()\n"; in GenerateRustInterface()
682 *code_writer << "}\n"; in GenerateRustInterface()
683 *code_writer << "fn setDefaultImpl(d: " << default_ref_name << ")" in GenerateRustInterface()
685 *code_writer << " std::mem::replace(&mut *DEFAULT_IMPL.lock().unwrap(), d)\n"; in GenerateRustInterface()
686 *code_writer << "}\n"; in GenerateRustInterface()
687 code_writer->Dedent(); in GenerateRustInterface()
688 *code_writer << "}\n"; in GenerateRustInterface()
691 GenerateDeprecated(*code_writer, *iface); in GenerateRustInterface()
692 *code_writer << "pub trait " << trait_name_async << "<P>: binder::Interface + Send {\n"; in GenerateRustInterface()
693 code_writer->Indent(); in GenerateRustInterface()
694 *code_writer << "fn get_descriptor() -> &'static str where Self: Sized { \"" in GenerateRustInterface()
699 GenerateDeprecated(*code_writer, *method); in GenerateRustInterface()
704 *code_writer << BuildMethod(*method, typenames, kind) << ";\n"; in GenerateRustInterface()
707 *code_writer << BuildMethod(*method, typenames, kind) << " {\n"; in GenerateRustInterface()
708 code_writer->Indent(); in GenerateRustInterface()
710 *code_writer << "Box::pin(async move { Ok(VERSION) })\n"; in GenerateRustInterface()
712 *code_writer << "Box::pin(async move { Ok(HASH.into()) })\n"; in GenerateRustInterface()
714 code_writer->Dedent(); in GenerateRustInterface()
715 *code_writer << "}\n"; in GenerateRustInterface()
718 code_writer->Dedent(); in GenerateRustInterface()
719 *code_writer << "}\n"; in GenerateRustInterface()
722 GenerateDeprecated(*code_writer, *iface); in GenerateRustInterface()
723 *code_writer << "#[::async_trait::async_trait]\n"; in GenerateRustInterface()
724 *code_writer << "pub trait " << trait_name_async_server << ": binder::Interface + Send {\n"; in GenerateRustInterface()
725 code_writer->Indent(); in GenerateRustInterface()
726 *code_writer << "fn get_descriptor() -> &'static str where Self: Sized { \"" in GenerateRustInterface()
732 GenerateDeprecated(*code_writer, *method); in GenerateRustInterface()
733 *code_writer << BuildMethod(*method, typenames, MethodKind::ASYNC) << ";\n"; in GenerateRustInterface()
736 code_writer->Dedent(); in GenerateRustInterface()
737 *code_writer << "}\n"; in GenerateRustInterface()
740 *code_writer << "impl " << server_name << " {\n"; in GenerateRustInterface()
741 code_writer->Indent(); in GenerateRustInterface()
742 *code_writer << "/// Create a new async binder service.\n"; in GenerateRustInterface()
743 *code_writer << "pub fn new_async_binder<T, R>(inner: T, rt: R, features: " in GenerateRustInterface()
746 *code_writer << "where\n"; in GenerateRustInterface()
747 code_writer->Indent(); in GenerateRustInterface()
748 *code_writer << "T: " << trait_name_async_server in GenerateRustInterface()
750 *code_writer << "R: binder::binder_impl::BinderAsyncRuntime + Send + Sync + 'static,\n"; in GenerateRustInterface()
751 code_writer->Dedent(); in GenerateRustInterface()
752 *code_writer << "{\n"; in GenerateRustInterface()
753 code_writer->Indent(); in GenerateRustInterface()
755 *code_writer << "struct Wrapper<T, R> {\n"; in GenerateRustInterface()
756 code_writer->Indent(); in GenerateRustInterface()
757 *code_writer << "_inner: T,\n"; in GenerateRustInterface()
758 *code_writer << "_rt: R,\n"; in GenerateRustInterface()
759 code_writer->Dedent(); in GenerateRustInterface()
760 *code_writer << "}\n"; in GenerateRustInterface()
761 *code_writer << "impl<T, R> binder::Interface for Wrapper<T, R> where T: binder::Interface, R: " in GenerateRustInterface()
763 code_writer->Indent(); in GenerateRustInterface()
764 *code_writer << "fn as_binder(&self) -> binder::SpIBinder { self._inner.as_binder() }\n"; in GenerateRustInterface()
765 *code_writer in GenerateRustInterface()
769 code_writer->Dedent(); in GenerateRustInterface()
770 *code_writer << "}\n"; in GenerateRustInterface()
771 *code_writer << "impl<T, R> " << trait_name << " for Wrapper<T, R>\n"; in GenerateRustInterface()
772 *code_writer << "where\n"; in GenerateRustInterface()
773 code_writer->Indent(); in GenerateRustInterface()
774 *code_writer << "T: " << trait_name_async_server << " + Send + Sync + 'static,\n"; in GenerateRustInterface()
775 *code_writer << "R: binder::binder_impl::BinderAsyncRuntime + Send + Sync + 'static,\n"; in GenerateRustInterface()
776 code_writer->Dedent(); in GenerateRustInterface()
777 *code_writer << "{\n"; in GenerateRustInterface()
778 code_writer->Indent(); in GenerateRustInterface()
791 *code_writer << BuildMethod(*method, typenames) << " {\n"; in GenerateRustInterface()
792 code_writer->Indent(); in GenerateRustInterface()
793 *code_writer << "self._rt.block_on(self._inner.r#" << method->GetName() << "(" << args in GenerateRustInterface()
795 code_writer->Dedent(); in GenerateRustInterface()
796 *code_writer << "}\n"; in GenerateRustInterface()
799 code_writer->Dedent(); in GenerateRustInterface()
800 *code_writer << "}\n"; in GenerateRustInterface()
802 *code_writer << "let wrapped = Wrapper { _inner: inner, _rt: rt };\n"; in GenerateRustInterface()
803 *code_writer << "Self::new_binder(wrapped, features)\n"; in GenerateRustInterface()
805 code_writer->Dedent(); in GenerateRustInterface()
806 *code_writer << "}\n"; in GenerateRustInterface()
807 code_writer->Dedent(); in GenerateRustInterface()
808 *code_writer << "}\n"; in GenerateRustInterface()
811 *code_writer << "pub trait " << default_trait_name << ": Send + Sync {\n"; in GenerateRustInterface()
812 code_writer->Indent(); in GenerateRustInterface()
819 *code_writer << BuildMethod(*method, typenames) << " {\n"; in GenerateRustInterface()
820 code_writer->Indent(); in GenerateRustInterface()
821 *code_writer << "Err(binder::StatusCode::UNKNOWN_TRANSACTION.into())\n"; in GenerateRustInterface()
822 code_writer->Dedent(); in GenerateRustInterface()
823 *code_writer << "}\n"; in GenerateRustInterface()
825 code_writer->Dedent(); in GenerateRustInterface()
826 *code_writer << "}\n"; in GenerateRustInterface()
830 *code_writer << "pub mod transactions {\n"; in GenerateRustInterface()
831 code_writer->Indent(); in GenerateRustInterface()
834 *code_writer << "pub const r#" << method->GetName() in GenerateRustInterface()
839 code_writer->Dedent(); in GenerateRustInterface()
840 *code_writer << "}\n"; in GenerateRustInterface()
843 *code_writer << "pub type " << default_ref_name << " = Option<std::sync::Arc<dyn " in GenerateRustInterface()
845 *code_writer << "static DEFAULT_IMPL: std::sync::Mutex<" << default_ref_name in GenerateRustInterface()
849 GenerateConstantDeclarations(*code_writer, *iface, typenames); in GenerateRustInterface()
857 *code_writer << "pub const VERSION: i32 = if true {" in GenerateRustInterface()
861 *code_writer << "pub const VERSION: i32 = " << std::to_string(options.Version()) << ";\n"; in GenerateRustInterface()
866 *code_writer << "pub const HASH: &str = if true {\"" << options.PreviousHash() in GenerateRustInterface()
869 *code_writer << "pub const HASH: &str = \"" << options.Hash() << "\";\n"; in GenerateRustInterface()
877 *code_writer << "impl " << client_name << " {\n"; in GenerateRustInterface()
878 code_writer->Indent(); in GenerateRustInterface()
880 GenerateClientMethodHelpers(*code_writer, *iface, *method, typenames, options, trait_name); in GenerateRustInterface()
882 code_writer->Dedent(); in GenerateRustInterface()
883 *code_writer << "}\n"; in GenerateRustInterface()
886 *code_writer << "impl " << trait_name << " for " << client_name << " {\n"; in GenerateRustInterface()
887 code_writer->Indent(); in GenerateRustInterface()
889 GenerateClientMethod(*code_writer, *iface, *method, typenames, options, MethodKind::NORMAL); in GenerateRustInterface()
891 code_writer->Dedent(); in GenerateRustInterface()
892 *code_writer << "}\n"; in GenerateRustInterface()
895 *code_writer << "impl<P: binder::BinderAsyncPool> " << trait_name_async << "<P> for " in GenerateRustInterface()
897 code_writer->Indent(); in GenerateRustInterface()
900 GenerateClientMethod(*code_writer, *iface, *method, typenames, options, kind); in GenerateRustInterface()
902 code_writer->Dedent(); in GenerateRustInterface()
903 *code_writer << "}\n"; in GenerateRustInterface()
906 GenerateServerItems(*code_writer, iface, typenames); in GenerateRustInterface()
1376 void GenerateRustParcel(CodeWriter* code_writer, const ParcelableType* parcel, in GenerateRustParcel() argument
1385 *code_writer << "#[derive(" << Join(derives, ", ") << ")]\n"; in GenerateRustParcel()
1386 GenerateParcelBody(*code_writer, parcel, typenames); in GenerateRustParcel()
1387 GenerateConstantDeclarations(*code_writer, *parcel, typenames); in GenerateRustParcel()
1388 GenerateParcelDefault(*code_writer, parcel, typenames); in GenerateRustParcel()
1389 GenerateParcelableTrait(*code_writer, parcel, typenames); in GenerateRustParcel()
1390 GenerateMetadataTrait(*code_writer, parcel); in GenerateRustParcel()
1393 void GenerateRustEnumDeclaration(CodeWriter* code_writer, const AidlEnumDeclaration* enum_decl, in GenerateRustEnumDeclaration() argument
1398 *code_writer << "#![allow(non_upper_case_globals)]\n"; in GenerateRustEnumDeclaration()
1399 *code_writer << "use binder::declare_binder_enum;\n"; in GenerateRustEnumDeclaration()
1400 *code_writer << "declare_binder_enum! {\n"; in GenerateRustEnumDeclaration()
1401 code_writer->Indent(); in GenerateRustEnumDeclaration()
1403 GenerateDeprecated(*code_writer, *enum_decl); in GenerateRustEnumDeclaration()
1408 *code_writer << "#[repr(C, align(" << std::to_string(*alignment) << "))]\n"; in GenerateRustEnumDeclaration()
1409 *code_writer << "r#" << enum_decl->GetName() << " : [" << backing_type << "; " in GenerateRustEnumDeclaration()
1411 code_writer->Indent(); in GenerateRustEnumDeclaration()
1414 GenerateDeprecated(*code_writer, *enumerator); in GenerateRustEnumDeclaration()
1415 *code_writer << "r#" << enumerator->GetName() << " = " << value << ",\n"; in GenerateRustEnumDeclaration()
1417 code_writer->Dedent(); in GenerateRustEnumDeclaration()
1418 *code_writer << "}\n"; in GenerateRustEnumDeclaration()
1420 code_writer->Dedent(); in GenerateRustEnumDeclaration()
1421 *code_writer << "}\n"; in GenerateRustEnumDeclaration()
1424 void GenerateClass(CodeWriter* code_writer, const AidlDefinedType& defined_type, in GenerateClass() argument
1428 GenerateRustParcel(code_writer, parcelable, types); in GenerateClass()
1431 GenerateRustEnumDeclaration(code_writer, enum_decl, types); in GenerateClass()
1433 GenerateRustInterface(code_writer, interface, types, options); in GenerateClass()
1436 GenerateRustParcel(code_writer, union_decl, types); in GenerateClass()
1442 (*code_writer) << "pub mod r#" << nested->GetName() << " {\n"; in GenerateClass()
1443 code_writer->Indent(); in GenerateClass()
1444 GenerateClass(code_writer, *nested, types, options); in GenerateClass()
1445 code_writer->Dedent(); in GenerateClass()
1446 (*code_writer) << "}\n"; in GenerateClass()
1452 CodeWriterPtr code_writer = io_delegate.GetCodeWriter(filename); in GenerateRust() local
1454 GenerateAutoGenHeader(*code_writer, options); in GenerateRust()
1458 *code_writer << "#![forbid(unsafe_code)]\n"; in GenerateRust()
1460 *code_writer << "#![cfg_attr(rustfmt, rustfmt_skip)]\n"; in GenerateRust()
1461 GenerateClass(code_writer.get(), defined_type, types, options); in GenerateRust()
1462 GenerateMangledAliases(*code_writer, defined_type); in GenerateRust()
1464 AIDL_FATAL_IF(!code_writer->Close(), defined_type) << "I/O Error!"; in GenerateRust()