A minimalist UML State machine framework for finite state machine and hierarchical state machine in C