type coersion warning fix
use c++ linkage
move static functions into anonymous namespace
rename to cpp
post rename build fixes
rename to hpp
minor correctness changes
rename to cpp
rename to cpp
fix build after rename
rename to hpp
fix macro