//! The LLVM IR generator loop.

/// The LLVM IR generator loop.
#[derive(Debug, Clone)]
pub struct Loop<'ctx> {
    /// The loop current block.
    pub body_block: inkwell::basic_block::BasicBlock<'ctx>,
    /// The increment block before the body.
    pub continue_block: inkwell::basic_block::BasicBlock<'ctx>,
    /// The join block after the body.
    pub join_block: inkwell::basic_block::BasicBlock<'ctx>,
}

impl<'ctx> Loop<'ctx> {
    /// A shortcut constructor.
    pub fn new(
        body_block: inkwell::basic_block::BasicBlock<'ctx>,
        continue_block: inkwell::basic_block::BasicBlock<'ctx>,
        join_block: inkwell::basic_block::BasicBlock<'ctx>,
    ) -> Self {
        Self {
            body_block,
            continue_block,
            join_block,
        }
    }
}
