template <>                                                                  \
  std::string sotClassType<sotSigType, sotCoefType>::getTypeName(void) {       \
    return #sotSigType;                                                        \
  }                                                                            \
  template <>                                                                  \
  const std::string sotClassType<sotSigType, sotCoefType>::CLASS_NAME =        \
      className;                                                               \
  template <>                                                                  \
  const std::string &sotClassType<sotSigType, sotCoefType>::getClassName(void) \
      const {                                                                  \
    return CLASS_NAME;                                                         \
  }                                                                            \
  extern "C" {                                                                 \
  Entity *regFunction##_##sotSigType##_##sotCoefType(                          \
      const std::string &objname) {                                            \
    return new sotClassType<sotSigType, sotCoefType>(objname);                 \
  }                                                                            \
  EntityRegisterer regObj##_##sotSigType##_##sotCoefType(                      \
      sotClassType<sotSigType, sotCoefType>::CLASS_NAME,                       \
      ®Function##_##sotSigType##_##sotCoefType);                            \
  }