#!/bin/bash
# sample usage:
# ./class_names "std::map<std::string,std::string>" "std::pair<int,std::string>"

test $1x = x && {
    echo "Usage: $0 class_name1 [class_name2...]"
    exit 1
}

while test $1x != x; do
    cl=$1
    cat <<EOF

namespace {
        template <> struct class_name< $cl > {
	        static const char * name() {return "$cl"; }
                operator const char * () const { return name(); }
        };
}

EOF

    shift
done

