# Cpp source usage

    library(bvhar)

# For Package Developers

This package provides public C++ headers. Some might be implement these useful.

- `bvharsim.h`: Rcpp random generation functions that are widely used in Bayesian statistics.
- `ols.h`: OLS classes
- `minnesota.h`: Minnesota prior classes
- `mcmcsv.h`: Classes for stochastic volatility models. It includes
  - Minnesota prior
  - SSVS prior
  - Horseshoe prior
- `mcmchs.h`: Horseshoe prior classes
- `mcmcssvs.h`: SSVS prior classes
- `bvharprogress.h`: Simple progress bar classes
- `bvharinterrupt.h`: Interruption handler classes

You can use these by writing in your R package DESCRIPTION:

    LinkingTo:
        BH,
        Rcpp,
        RcppEigen,
        bvhar

Also, you can use in your single `C++` source:

    // [[Rcpp::depends(BH, RcppEigen, bvhar)]]

## MCMC headers

`mcmc*.h` has classes that can conduct MCMC. Since it is designed thread-safe, you can OpenMP for parallel multiple chain loop.

1. Initialize using smart pointer (in this package: `std::unique_ptr`)
   - Since each class requires other structure as its parameter, you first initialize it.
   - Each struct is inside the same header.
2. `doPosteriorDraws()` updates MCMC draws, so use this inside loop.
3. `returnRecords(burn, thin)` returns `Rcpp::List` of every MCMC record.

In case of SV model, you can define your own prior by defining a derived class.