Patterns in C: visitor