cpp_interface.complexType_class_hpp.ftl Maven / Gradle / Ivy
${complexType.name}.hpp
/* Autogenerated with kurento-module-creator */
#ifndef __${camelToUnderscore(complexType.name)}_HPP__
#define __${camelToUnderscore(complexType.name)}_HPP__
#include
#include
#include
<#if complexType.extends??>
#include "${complexType.extends.name}.hpp"
<#elseif complexType.typeFormat == "REGISTER">
#include
${organizeDependencies(typeDependencies(complexType),false)}
<#list module.code.implementation["cppNamespace"]?split("::") as namespace>
namespace ${namespace}
{
class ${complexType.name};
<#list module.code.implementation["cppNamespace"]?split("::")?reverse as namespace>
} /* ${namespace} */
namespace kurento
{
class JsonSerializer;
void Serialize (std::shared_ptr<${module.code.implementation["cppNamespace"]}::${complexType.name}> &object, JsonSerializer &s);
} /* kurento */
<#list module.code.implementation["cppNamespace"]?split("::") as namespace>
namespace ${namespace}
{
<#list complexType.getChildren() as dependency>
<#if childs??>
<#if module.remoteClasses?seq_contains(dependency.type.type) ||
module.complexTypes?seq_contains(dependency.type.type) ||
module.events?seq_contains(dependency.type.type)><#assign childs=true>
class ${dependency.type.name};
class ${complexType.name}<#if complexType.extends??> : public ${complexType.extends.name}<#elseif complexType.typeFormat == "REGISTER"> : public RegisterParent
{
public:
<#assign createEmptyConstructor = true>
<#if complexType.typeFormat == "REGISTER">
${complexType.name} (<#rt>
<#assign createEmptyConstructor = false>
<#lt><#assign first = true><#rt>
<#lt><#if complexType.extends??><#rt>
<#lt><#list complexType.parentProperties as property><#rt>
<#lt><#if !property.optional><#rt>
<#lt><#if !first>, <#rt>
<#lt><#assign first = false><#rt>
<#lt>${getCppObjectType(property.type)}${property.name}<#rt>
<#lt><#rt>
<#lt><#rt>
<#lt><#rt>
<#lt><#list complexType.properties as property><#rt>
<#lt><#if !property.optional><#rt>
<#lt><#if !first>, <#rt>
<#lt><#assign first = false><#rt>
<#lt>${getCppObjectType(property.type)}${property.name}<#rt>
<#lt><#rt>
<#lt>)<#rt>
<#lt><#assign first = true><#rt>
<#lt><#if complexType.extends??> : ${complexType.extends.name} (<#rt>
<#lt><#list complexType.parentProperties as property><#rt>
<#lt><#if !property.optional><#rt>
<#assign createEmptyConstructor = true>
<#lt><#if !first>, <#rt>
<#lt><#assign first = false><#rt>
<#lt>${property.name}<#rt>
<#lt><#rt>
<#lt>) {
<#list complexType.properties as property><#rt>
<#lt><#if !property.optional><#rt>
<#assign createEmptyConstructor = true>
this->${property.name} = ${property.name};
<#rt>
<#lt>
};
<#list complexType.properties as property>
void set${property.name?cap_first} (${getCppObjectType(property.type, true)}${property.name}) {
this->${property.name} = ${property.name};
<#if property.optional>
__isSet${property.name?cap_first} = true;
};
${getCppObjectType(property.type, false)} get${property.name?cap_first} () {
return ${property.name};
};
<#if property.optional>
bool isSet${property.name?cap_first} () {
return __isSet${property.name?cap_first};
};
virtual void Serialize (JsonSerializer &s);
static void registerType () {
std::function func =
[] () {
return new ${complexType.name} ();
};
<#if module.name == "core" || module.name == "elements" || module.name == "filters">
RegisterParent::registerType ("kurento.${complexType.name}", func);
<#else>
RegisterParent::registerType ("${module.name}.${complexType.name}", func);
}
<#if createEmptyConstructor >
protected:
${complexType.name}() {};
private:
<#list complexType.properties as property>
${getCppObjectType(property.type, false)} ${property.name};
<#if property.optional>
bool __isSet${property.name?cap_first} = false;
<#elseif complexType.typeFormat == "ENUM">
typedef enum {
<#list complexType.values as value>
${value}<#if value_has_next>,
} type;
${complexType.name} (const std::string &value) {
enumValue = getValueFromString (value);
};
${complexType.name} (type value) {
this->enumValue = value;
}
type getValue () {
return enumValue;
};
std::string getString () {
<#list complexType.values as value>
if (enumValue == ${value}) {
return "${value}";
}
return "";
}
void Serialize (JsonSerializer &s);
<#if createEmptyConstructor >
${complexType.name}() {};
private:
static type getValueFromString (const std::string &value);
type enumValue;
<#else>
// TODO: Type format ${complexType.typeFormat} not supported
friend void kurento::Serialize (std::shared_ptr<${module.code.implementation["cppNamespace"]}::${complexType.name}> &object, JsonSerializer &s);
};
<#list module.code.implementation["cppNamespace"]?split("::")?reverse as namespace>
} /* ${namespace} */
#endif /* __${camelToUnderscore(complexType.name)}_HPP__ */