]> git.gag.com Git - debian/gnuradio/blob - gruel/src/lib/unv_template.cc.t
b19e32d2724194e6d17269fde6a23d54eb971b25
[debian/gnuradio] / gruel / src / lib / unv_template.cc.t
1 ////////////////////////////////////////////////////////////////////////////
2 //                           pmt_@TAG@vector
3 ////////////////////////////////////////////////////////////////////////////
4
5 namespace gruel {
6
7 static pmt_@TAG@vector *
8 _@TAG@vector(pmt_t x)
9 {
10   return dynamic_cast<pmt_@TAG@vector*>(x.get());
11 }
12
13
14 pmt_@TAG@vector::pmt_@TAG@vector(size_t k, @TYPE@ fill)
15   : d_v(k)
16 {
17   for (size_t i = 0; i < k; i++)
18     d_v[i] = fill;
19 }
20
21 pmt_@TAG@vector::pmt_@TAG@vector(size_t k, const @TYPE@ *data)
22   : d_v(k)
23 {
24   for (size_t i = 0; i < k; i++)
25     d_v[i] = data[i];
26 }
27
28 @TYPE@
29 pmt_@TAG@vector::ref(size_t k) const
30 {
31   if (k >= length())
32     throw pmt_out_of_range("pmt_@TAG@vector_ref", pmt_from_long(k));
33   return d_v[k];
34 }
35
36 void 
37 pmt_@TAG@vector::set(size_t k, @TYPE@ x)
38 {
39   if (k >= length())
40     throw pmt_out_of_range("pmt_@TAG@vector_set", pmt_from_long(k));
41   d_v[k] = x;
42 }
43
44 const @TYPE@ *
45 pmt_@TAG@vector::elements(size_t &len)
46 {
47   len = length();
48   return &d_v[0];
49 }
50
51 @TYPE@ *
52 pmt_@TAG@vector::writable_elements(size_t &len)
53 {
54   len = length();
55   return &d_v[0];
56 }
57
58 const void*
59 pmt_@TAG@vector::uniform_elements(size_t &len)
60 {
61   len = length() * sizeof(@TYPE@);
62   return &d_v[0];
63 }
64
65 void*
66 pmt_@TAG@vector::uniform_writable_elements(size_t &len)
67 {
68   len = length() * sizeof(@TYPE@);
69   return &d_v[0];
70 }
71
72 bool
73 pmt_is_@TAG@vector(pmt_t obj)
74 {
75   return obj->is_@TAG@vector();
76 }
77
78 pmt_t
79 pmt_make_@TAG@vector(size_t k, @TYPE@ fill)
80 {
81   return pmt_t(new pmt_@TAG@vector(k, fill));
82 }
83
84 pmt_t
85 pmt_init_@TAG@vector(size_t k, const @TYPE@ *data)
86 {
87   return pmt_t(new pmt_@TAG@vector(k, data));
88 }
89
90 @TYPE@
91 pmt_@TAG@vector_ref(pmt_t vector, size_t k)
92 {
93   if (!vector->is_@TAG@vector())
94     throw pmt_wrong_type("pmt_@TAG@vector_ref", vector);
95   return _@TAG@vector(vector)->ref(k);
96 }
97
98 void
99 pmt_@TAG@vector_set(pmt_t vector, size_t k, @TYPE@ obj)
100 {
101   if (!vector->is_@TAG@vector())
102     throw pmt_wrong_type("pmt_@TAG@vector_set", vector);
103   _@TAG@vector(vector)->set(k, obj);
104 }
105
106 const @TYPE@ *
107 pmt_@TAG@vector_elements(pmt_t vector, size_t &len)
108 {
109   if (!vector->is_@TAG@vector())
110     throw pmt_wrong_type("pmt_@TAG@vector_elements", vector);
111   return _@TAG@vector(vector)->elements(len);
112 }
113
114 @TYPE@ *
115 pmt_@TAG@vector_writable_elements(pmt_t vector, size_t &len)
116 {
117   if (!vector->is_@TAG@vector())
118     throw pmt_wrong_type("pmt_@TAG@vector_writable_elements", vector);
119   return _@TAG@vector(vector)->writable_elements(len);
120 }
121
122 } /* namespace gruel */