19 using namespace shogun;
34 void CParameterCombination::init()
52 m_child_nodes->append_element(child);
58 const char* name,
bool value,
index_t index)
62 for (
index_t i = 0; i < m_param->get_num_parameters(); ++i)
64 void* param = m_param->get_parameter(i)->m_parameter;
66 if (!strcmp(m_param->get_parameter(i)->m_name, name))
68 if (m_param->get_parameter(i)->m_datatype.m_ptype
70 SG_ERROR(
"Parameter %s not a boolean parameter", name);
73 *((
bool*)(param)) = value;
76 (*((
bool**)(param)))[index] = value;
88 const char* name, int32_t value,
index_t index)
92 for (
index_t i = 0; i < m_param->get_num_parameters(); ++i)
94 void* param = m_param->get_parameter(i)->m_parameter;
96 if (!strcmp(m_param->get_parameter(i)->m_name, name))
98 if (m_param->get_parameter(i)->m_datatype.m_ptype
100 SG_ERROR(
"Parameter %s not a integer parameter", name);
103 *((int32_t*)(param)) = value;
106 (*((int32_t**)(param)))[index] = value;
121 for (
index_t i = 0; i < m_param->get_num_parameters(); ++i)
123 void* param = m_param->get_parameter(i)->m_parameter;
125 if (!strcmp(m_param->get_parameter(i)->m_name, name))
127 if (m_param->get_parameter(i)->m_datatype.m_ptype
129 SG_ERROR(
"Parameter %s not a double parameter", name);
135 (*((
float64_t**)(param)))[index] = value;
151 for (
index_t i = 0; i < m_param->get_num_parameters(); i++)
153 if (!strcmp(m_param->get_parameter(i)->m_name, name))
154 return m_param->get_parameter(i);
170 for (
index_t i = 0; i < m_param->get_num_parameters(); i++)
172 if (m_param->get_parameter(i)->m_datatype.m_ptype==PT_SGOBJECT)
175 (*((
CSGObject**)m_param->get_parameter(i)->m_parameter));
183 for (
index_t i = 0; i < m_child_nodes->get_num_elements(); ++i)
186 m_child_nodes->get_element(i);
223 char* prefix=
SG_MALLOC(
char, prefix_num+1);
224 for (
index_t i=0; i<prefix_num; ++i)
227 prefix[prefix_num]=
'\0';
237 for (
index_t i=0; i<m_param->get_num_parameters(); ++i)
240 if (m_param->get_parameter(i)->m_datatype.m_ptype==PT_SGOBJECT)
245 current_sgobject->
get_name(), current_sgobject);
248 else if (m_param->get_parameter(i)->m_datatype.m_ctype == CT_SGVECTOR)
250 SG_SPRINT(
"\"%s\"=", m_param->get_parameter(i)->m_name);
252 get_parameter(i)->m_parameter);
253 if (!m_param->get_parameter(i)->m_datatype.m_length_y)
255 SG_ERROR(
"Parameter vector %s has no length\n",
256 m_param->get_parameter(i)->m_name);
259 index_t length = *(m_param->get_parameter(i)->m_datatype.m_length_y);
261 for (
index_t j = 0; j < length; j++)
267 SG_SPRINT(
"\"%s\"=", m_param->get_parameter(i)->m_name);
268 void* param=m_param->get_parameter(i)->m_parameter;
270 if (m_param->get_parameter(i)->m_datatype.m_ptype==PT_FLOAT64)
272 else if (m_param->get_parameter(i)->m_datatype.m_ptype==PT_INT32)
274 else if (m_param->get_parameter(i)->m_datatype.m_ptype==PT_BOOL)
275 SG_SPRINT(
"%s ", *((
bool*)param ?
"true" :
"false"));
288 for (
index_t i=0; i<m_child_nodes->get_num_elements(); ++i)
291 m_child_nodes->get_element(i);
302 SG_SDEBUG(
"entering CParameterCombination::parameter_set_multiplication()\n");
331 SG_SDEBUG(
"leaving CParameterCombination::parameter_set_multiplication()\n");
348 *result=*current_set;
384 SG_SERROR(
"leaf sets multiplication only possible if all "
394 SG_SERROR(
"leaf sets multiplication only possible if all "
395 "leafs have non-NULL Parameter instances\n");
406 *param_sets[0], *param_sets[1]);
408 delete param_sets[0];
409 delete param_sets[1];
416 param_product=parameter_set_multiplication(*param_product,
424 delete old_temp_result;
425 delete param_sets[i];
450 delete param_product;
460 SG_SDEBUG(
"entering CParameterCombination::non_value_tree_multiplication()\n");
488 for (set<string>::iterator it=names.begin(); it!=names.end(); ++it)
500 const char* first_name=(*(names.begin())).c_str();
504 SG_SDEBUG(
"adding trees for first name \"%s\":\n", first_name);
520 SG_SDEBUG(
"building products with remaining trees:\n");
521 set<string>::iterator it=names.begin();
522 for (++it; it!=names.end(); ++it)
524 SG_SDEBUG(
"processing \"%s\"\n", (*it).c_str());
527 const char* current_name=(*it).c_str();
564 SG_SDEBUG(
"leaving CParameterCombination::non_value_tree_multiplication()\n");
586 if (!strcmp(current_name, desired_name))
613 for (
index_t i=0; i<m_child_nodes->get_num_elements(); ++i)
616 m_child_nodes->get_element(i);
638 for (
index_t i=0; i<m_child_nodes->get_num_elements(); ++i)
641 m_child_nodes->get_element(i);
657 if (m_param->get_num_parameters()>1 ||
658 m_param->get_parameter(0)->m_datatype.m_ptype!=PT_SGOBJECT)
660 SG_SERROR(
"invalid CParameterCombination node type, has children"
661 " and more than one parameter or is not a "
667 *((
CSGObject**)(m_param->get_parameter(0)->m_parameter));
671 for (
index_t i=0; i<m_child_nodes->get_num_elements(); ++i)
674 m_child_nodes->get_element(i);
682 SG_SERROR(
"CParameterCombination node has illegal type.\n");