Move include-related writes to include module
diff --git a/gen/src/include.rs b/gen/src/include.rs
index 091f6c8..8dc7146 100644
--- a/gen/src/include.rs
+++ b/gen/src/include.rs
@@ -1,4 +1,4 @@
-use crate::gen::out::Content;
+use crate::gen::out::{Content, OutFile};
use crate::syntax::{self, IncludeKind};
use std::ops::{Deref, DerefMut};
@@ -46,6 +46,61 @@
}
}
+pub(super) fn write(out: &mut OutFile) {
+ let include = &mut out.include;
+ let out = &mut include.content;
+
+ for include in &include.custom {
+ match include.kind {
+ IncludeKind::Quoted => {
+ writeln!(out, "#include \"{}\"", include.path.escape_default());
+ }
+ IncludeKind::Bracketed => {
+ writeln!(out, "#include <{}>", include.path);
+ }
+ }
+ }
+
+ if include.array {
+ writeln!(out, "#include <array>");
+ }
+ if include.cstddef {
+ writeln!(out, "#include <cstddef>");
+ }
+ if include.cstdint {
+ writeln!(out, "#include <cstdint>");
+ }
+ if include.cstring {
+ writeln!(out, "#include <cstring>");
+ }
+ if include.exception {
+ writeln!(out, "#include <exception>");
+ }
+ if include.memory {
+ writeln!(out, "#include <memory>");
+ }
+ if include.new {
+ writeln!(out, "#include <new>");
+ }
+ if include.string {
+ writeln!(out, "#include <string>");
+ }
+ if include.type_traits {
+ writeln!(out, "#include <type_traits>");
+ }
+ if include.utility {
+ writeln!(out, "#include <utility>");
+ }
+ if include.vector {
+ writeln!(out, "#include <vector>");
+ }
+ if include.basetsd {
+ writeln!(out, "#if defined(_WIN32)");
+ writeln!(out, "#include <basetsd.h>");
+ writeln!(out, "#endif");
+ }
+}
+
impl<'a> Extend<&'a Include> for Includes {
fn extend<I: IntoIterator<Item = &'a Include>>(&mut self, iter: I) {
self.custom.extend(iter.into_iter().cloned());
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 2af11c6..fc093e7 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -1,11 +1,11 @@
use crate::gen::namespace_organizer::NamespaceEntries;
use crate::gen::out::OutFile;
-use crate::gen::{ifndef, Opt};
+use crate::gen::{ifndef, include, Opt};
use crate::syntax::atom::Atom::{self, *};
use crate::syntax::symbol::Symbol;
use crate::syntax::{
- mangle, Api, CppName, Enum, ExternFn, ExternType, IncludeKind, ResolvableName, Signature,
- Struct, Type, Types, Var,
+ mangle, Api, CppName, Enum, ExternFn, ExternType, ResolvableName, Signature, Struct, Type,
+ Types, Var,
};
use proc_macro2::Ident;
use std::collections::HashMap;
@@ -32,7 +32,7 @@
}
write_builtins(out);
- write_includes(out);
+ include::write(out);
out_file
}
@@ -240,61 +240,6 @@
}
}
-fn write_includes(out: &mut OutFile) {
- let include = &mut out.include;
- let out = &mut include.content;
-
- for include in &include.custom {
- match include.kind {
- IncludeKind::Quoted => {
- writeln!(out, "#include \"{}\"", include.path.escape_default());
- }
- IncludeKind::Bracketed => {
- writeln!(out, "#include <{}>", include.path);
- }
- }
- }
-
- if include.array {
- writeln!(out, "#include <array>");
- }
- if include.cstddef {
- writeln!(out, "#include <cstddef>");
- }
- if include.cstdint {
- writeln!(out, "#include <cstdint>");
- }
- if include.cstring {
- writeln!(out, "#include <cstring>");
- }
- if include.exception {
- writeln!(out, "#include <exception>");
- }
- if include.memory {
- writeln!(out, "#include <memory>");
- }
- if include.new {
- writeln!(out, "#include <new>");
- }
- if include.string {
- writeln!(out, "#include <string>");
- }
- if include.type_traits {
- writeln!(out, "#include <type_traits>");
- }
- if include.utility {
- writeln!(out, "#include <utility>");
- }
- if include.vector {
- writeln!(out, "#include <vector>");
- }
- if include.basetsd {
- writeln!(out, "#if defined(_WIN32)");
- writeln!(out, "#include <basetsd.h>");
- writeln!(out, "#endif");
- }
-}
-
fn write_builtins(out: &mut OutFile) {
if out.builtin == Default::default() {
return;