# Demonstrating a combination of features of the g2 preprocessor. set g2_trace_ftions 1 class Owner { role_regular -assign no -copy no role_stream protected: guard char* name= John } class Animal { role_regular -assign no -copy no role_stream f :pvc void talk(num) protected: guard char* name= "Fido" guard Owner* owner= 0 } array set sounds { Cat miowwwwwww Dog woofffffff Snake hisssssss } foreach animal [array names sounds] { class $animal : Animal { role_regular -assign no -copy no role_stream add $animal:STREAM STREAM {@ Animal::stream(o_stream, indent+3); @} f :vc void talk(num) {@ for(int i= 0; i