namespace org { namespace opensplice { namespace topic {
template <>
class TopicTraits<$(scopedtypename)>
{
public:
    static ::org::opensplice::topic::DataRepresentationId_t getDataRepresentationId()
    {
        return ::org::opensplice::topic::OSPL_REPRESENTATION;
    }

    static ::std::vector<os_uchar> getMetaData()
    {
        return ::std::vector<os_uchar>();
    }

    static ::std::vector<os_uchar> getTypeHash()
    {
        return ::std::vector<os_uchar>();
    }

    static ::std::vector<os_uchar> getExtentions()
    {
        return ::std::vector<os_uchar>();
    }

    static const char *getKeyList()
    {
        return "$(keyList)";
    }

    static const char *getTypeName()
    {
        return "$(internaltypename)";
    }

    static std::string getDescriptor()
    {
        const char *elements[] = {
            "$(meta-descriptor)"
        };
        std::string descriptor;
        descriptor.reserve($(meta-descriptorLength));
        for (int i = 0; i < $(meta-descriptorArrLength); i++) {
            descriptor.append(elements[i]);
        }

        return descriptor;
    }

    static copyInFunction getCopyIn()
    {
        return (copyInFunction) __$(uniquetypename)__copyIn;
    }

    static copyOutFunction getCopyOut()
    {
        return (copyOutFunction) __$(uniquetypename)__copyOut;
    }
};
}}}

namespace dds { namespace topic {
template <>
struct topic_type_name<$(scopedtypename)>
{
    static std::string value()
    {
        return org::opensplice::topic::TopicTraits<$(scopedtypename)>::getTypeName();
    }
};
}}

REGISTER_TOPIC_TYPE($(scopedtypename))

