use ffi::core;
use ffi::prelude::LLVMBasicBlockRef;
use value::Value;
use util;
pub struct BasicBlock;
native_ref!(&BasicBlock = LLVMBasicBlockRef);
impl BasicBlock {
pub fn get_parent(&self) -> Option<&Value> {
unsafe { util::ptr_to_null(core::LLVMGetBasicBlockParent(self.into())) }
}
pub fn move_after(&self, other: &BasicBlock) {
unsafe { core::LLVMMoveBasicBlockAfter(self.into(), other.into()) }
}
pub fn move_before(&self, other: &BasicBlock) {
unsafe { core::LLVMMoveBasicBlockBefore(self.into(), other.into()) }
}
pub fn remove(&self) {
unsafe { core::LLVMRemoveBasicBlockFromParent(self.into()) }
}
pub unsafe fn delete(&self) {
core::LLVMDeleteBasicBlock(self.into())
}
}