filter/*: don't use GLib macros
output/null: convert to C++
FilterInternal: convert struct filter to a OO interface