hllvm-sys 0.1.3

FFI wrapper around the LLVM C++ library
use TargetRef;
use libc;

cpp! {
    #include "llvm/Support/TargetRegistry.h"
    #include "llvm/Support/TargetSelect.h"

    pub fn LLVMRustInitializeAllTargets() {
        llvm::InitializeAllTargetInfos();
        llvm::InitializeAllTargets();
        llvm::InitializeAllTargetMCs();
        llvm::InitializeAllAsmParsers();
        llvm::InitializeAllAsmPrinters();
    }

    pub fn LLVMRustTargetRegistryTargets(dest: *mut TargetRef as "llvm::Target**",
                                         max_count: libc::size_t as "size_t")
        -> libc::size_t as "size_t" {
        int cur_count = 0;

        for (const llvm::Target &target : llvm::TargetRegistry::targets()) {
            assert(cur_count <= max_count && "too many targets to fit in the list");
            dest[cur_count] = const_cast<llvm::Target*>(&target);

            cur_count += 1;
        }

        return cur_count;;
    }
}