@@ -17,23 +17,12 @@ namespace af
1717
1818 features::features ()
1919 {
20- feat.n = 0 ;
21- feat.x = 0 ;
22- feat.y = 0 ;
23- feat.score = 0 ;
24- feat.orientation = 0 ;
25- feat.size = 0 ;
20+ AF_THROW (af_create_features (&feat, 0 ));
2621 }
2722
2823 features::features (const size_t n)
2924 {
30- feat.n = n;
31- dim_t out_dims[4 ] = {dim_t (n), 1 , 1 , 1 };
32- AF_THROW (af_create_handle (&feat.x , 4 , out_dims, f32 ));
33- AF_THROW (af_create_handle (&feat.y , 4 , out_dims, f32 ));
34- AF_THROW (af_create_handle (&feat.score , 4 , out_dims, f32 ));
35- AF_THROW (af_create_handle (&feat.orientation , 4 , out_dims, f32 ));
36- AF_THROW (af_create_handle (&feat.size , 4 , out_dims, f32 ));
25+ AF_THROW (af_create_features (&feat, (int )n));
3726 }
3827
3928 features::features (af_features f) : feat(f)
@@ -43,83 +32,68 @@ namespace af
4332 features& features::operator = (const features& other)
4433 {
4534 if (this != &other) {
46-
47- if (feat.n > 0 ) {
48- AF_THROW (af_destroy_features (feat));
49- }
50-
51- af_features f = other.get ();
52-
53- feat.n = f.n ;
54- if (f.n > 0 ) {
55- AF_THROW (af_retain_array (&feat.x , f.x ));
56- AF_THROW (af_retain_array (&feat.y , f.y ));
57- AF_THROW (af_retain_array (&feat.score , f.score ));
58- AF_THROW (af_retain_array (&feat.orientation , f.orientation ));
59- AF_THROW (af_retain_array (&feat.size , f.size ));
60- } else {
61- feat.x = 0 ;
62- feat.y = 0 ;
63- feat.score = 0 ;
64- feat.orientation = 0 ;
65- feat.size = 0 ;
66- }
35+ AF_THROW (af_release_features (feat));
36+ AF_THROW (af_retain_features (&feat, other.get ()));
6737 }
68-
6938 return *this ;
7039 }
7140
7241 features::~features ()
7342 {
74- if (feat.n > 0 ) {
75- if (AF_SUCCESS != af_destroy_features (feat)) {
76- fprintf (stderr, " Error: Couldn't destroy af::features: %p\n " , this );
77- }
43+ if (AF_SUCCESS != af_release_features (feat)) {
44+ fprintf (stderr, " Error: Couldn't release af::features: %p\n " , this );
7845 }
7946 }
8047
8148 size_t features::getNumFeatures () const
8249 {
83- return feat.n ;
50+ dim_t n = 0 ;
51+ AF_THROW (af_get_features_num (&n, feat));
52+ return n;
8453 }
8554
8655 array features::getX () const
8756 {
88- if (feat.n == 0 ) return array ();
57+ af_array x = 0 ;
58+ AF_THROW (af_get_features_xpos (&x, feat));
8959 af_array tmp = 0 ;
90- AF_THROW (af_retain_array (&tmp, feat. x ));
60+ AF_THROW (af_retain_array (&tmp, x));
9161 return array (tmp);
9262 }
9363
9464 array features::getY () const
9565 {
96- if (feat.n == 0 ) return array ();
66+ af_array y = 0 ;
67+ AF_THROW (af_get_features_ypos (&y, feat));
9768 af_array tmp = 0 ;
98- AF_THROW (af_retain_array (&tmp, feat. y ));
69+ AF_THROW (af_retain_array (&tmp, y));
9970 return array (tmp);
10071 }
10172
10273 array features::getScore () const
10374 {
104- if (feat.n == 0 ) return array ();
75+ af_array s = 0 ;
76+ AF_THROW (af_get_features_score (&s, feat));
10577 af_array tmp = 0 ;
106- AF_THROW (af_retain_array (&tmp, feat. score ));
78+ AF_THROW (af_retain_array (&tmp, s ));
10779 return array (tmp);
10880 }
10981
11082 array features::getOrientation () const
11183 {
112- if (feat.n == 0 ) return array ();
84+ af_array ori = 0 ;
85+ AF_THROW (af_get_features_orientation (&ori, feat));
11386 af_array tmp = 0 ;
114- AF_THROW (af_retain_array (&tmp, feat. orientation ));
87+ AF_THROW (af_retain_array (&tmp, ori ));
11588 return array (tmp);
11689 }
11790
11891 array features::getSize () const
11992 {
120- if (feat.n == 0 ) return array ();
93+ af_array s = 0 ;
94+ AF_THROW (af_get_features_size (&s, feat));
12195 af_array tmp = 0 ;
122- AF_THROW (af_retain_array (&tmp, feat. size ));
96+ AF_THROW (af_retain_array (&tmp, s ));
12397 return array (tmp);
12498 }
12599
0 commit comments