SHOGUN
3.2.1
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
features
AttributeFeatures.cpp
浏览该文件的文档.
1
/*
2
* This program is free software; you can redistribute it and/or modify
3
* it under the terms of the GNU General Public License as published by
4
* the Free Software Foundation; either version 3 of the License, or
5
* (at your option) any later version.
6
*
7
* Written (W) 2009 Soeren Sonnenburg
8
* Copyright (C) 2009 Fraunhofer Institute FIRST and Max-Planck-Society
9
*/
10
11
#include <
shogun/features/Features.h
>
12
#include <
shogun/features/AttributeFeatures.h
>
13
#include <
shogun/lib/memory.h
>
14
15
using namespace
shogun;
16
17
CAttributeFeatures::CAttributeFeatures
()
18
:
CFeatures
(0)
19
{
20
}
21
22
CFeatures
*
CAttributeFeatures::get_attribute
(
char
* attr_name)
23
{
24
int32_t idx=
find_attr_index
(attr_name);
25
if
(idx>=0)
26
{
27
CFeatures
* f=
features
[idx].attr_obj;
28
SG_REF
(f);
29
return
f;
30
}
31
32
return
NULL;
33
}
34
35
void
CAttributeFeatures::get_attribute_by_index
(
int
idx,
const
char
* &attr_name,
CFeatures
* &attr_obj)
36
{
37
T_ATTRIBUTE a=
features
.
get_element_safe
(idx);
38
attr_name= a.attr_name;
39
attr_obj= a.attr_obj;
40
SG_REF
(a.attr_obj);
41
}
42
43
bool
CAttributeFeatures::set_attribute
(
char
* attr_name,
CFeatures
* attr_obj)
44
{
45
int32_t idx=
find_attr_index
(attr_name);
46
if
(idx==-1)
47
idx=
features
.
get_num_elements
();
48
49
T_ATTRIBUTE a;
50
a.attr_name=get_strdup(attr_name);
51
a.attr_obj=attr_obj;
52
53
SG_REF
(attr_obj);
54
55
return
features
.
set_element
(a, idx);
56
}
57
58
bool
CAttributeFeatures::del_attribute
(
char
* attr_name)
59
{
60
int32_t idx=
find_attr_index
(attr_name);
61
62
if
(idx>=0)
63
{
64
T_ATTRIBUTE a=
features
[idx];
65
SG_FREE(a.attr_name);
66
SG_UNREF
(a.attr_obj);
67
return
true
;
68
}
69
return
false
;
70
}
71
72
int32_t
CAttributeFeatures::get_num_attributes
()
73
{
74
return
features
.
get_num_elements
();
75
}
76
77
int32_t
CAttributeFeatures::find_attr_index
(
char
* attr_name)
78
{
79
int32_t n=
features
.
get_num_elements
();
80
for
(int32_t i=0; i<n; i++)
81
{
82
if
(!strcmp(
features
[n].attr_name, attr_name))
83
return
i;
84
}
85
86
return
-1;
87
}
88
89
CAttributeFeatures::~CAttributeFeatures
()
90
{
91
int32_t n=
features
.
get_num_elements
();
92
for
(int32_t i=0; i<n; i++)
93
SG_UNREF_NO_NULL
(
features
[i].attr_obj);
94
}
SHOGUN
机器学习工具包 - 项目文档