cpp plugin template framework