pub struct CodegenDriver<'a, W: Write> { /* private fields */ }Expand description
コード生成全体を管理する構造体
実際の出力先(Write)を保持し、生成の成功/失敗に応じて 適切な形式で出力する。
Implementations§
Source§impl<'a, W: Write> CodegenDriver<'a, W>
impl<'a, W: Write> CodegenDriver<'a, W>
Sourcepub fn new(
writer: W,
interner: &'a StringInterner,
enum_dict: &'a EnumDict,
macro_ctx: &'a MacroInferContext,
bindings_info: BindingsInfo,
config: CodegenConfig,
) -> Self
pub fn new( writer: W, interner: &'a StringInterner, enum_dict: &'a EnumDict, macro_ctx: &'a MacroInferContext, bindings_info: BindingsInfo, config: CodegenConfig, ) -> Self
新しいコード生成ドライバを作成
Sourcepub fn with_perl_threaded(self, threaded: bool) -> Self
pub fn with_perl_threaded(self, threaded: bool) -> Self
対象 perl が threaded かを設定
Sourcepub fn stats(&self) -> &CodegenStats
pub fn stats(&self) -> &CodegenStats
統計情報を取得
Sourcepub fn generate(&mut self, result: &InferResult) -> Result<()>
pub fn generate(&mut self, result: &InferResult) -> Result<()>
全体を生成
Sourcepub fn generate_inline_fns(
&mut self,
result: &InferResult,
known_symbols: &KnownSymbols,
) -> Result<()>
pub fn generate_inline_fns( &mut self, result: &InferResult, known_symbols: &KnownSymbols, ) -> Result<()>
inline 関数セクションを生成
2パス方式:
- Pass 1: 各 inline 関数を生成し、結果を蓄積
- Pass 2: カスケード検査 — 生成成功した関数が失敗した inline 関数や マクロを呼び出している場合、CASCADE_UNAVAILABLE に降格
Sourcepub fn generate_macros(
&mut self,
result: &InferResult,
known_symbols: &KnownSymbols,
) -> Result<()>
pub fn generate_macros( &mut self, result: &InferResult, known_symbols: &KnownSymbols, ) -> Result<()>
マクロセクションを生成
Auto Trait Implementations§
impl<'a, W> Freeze for CodegenDriver<'a, W>where
W: Freeze,
impl<'a, W> RefUnwindSafe for CodegenDriver<'a, W>where
W: RefUnwindSafe,
impl<'a, W> Send for CodegenDriver<'a, W>where
W: Send,
impl<'a, W> Sync for CodegenDriver<'a, W>where
W: Sync,
impl<'a, W> Unpin for CodegenDriver<'a, W>where
W: Unpin,
impl<'a, W> UnsafeUnpin for CodegenDriver<'a, W>where
W: UnsafeUnpin,
impl<'a, W> UnwindSafe for CodegenDriver<'a, W>where
W: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more