On Tue, Oct 07, 2008 at 07:26:08PM +0200, Stefan Brüns wrote: > Hi, > > in PMT, there is code like: > > pmt_u8vector::pmt_u8vector(size_t k, uint8_t fill) > : d_v(k) > { > for (size_t i = 0; i < k; i++) > d_v[i] = fill; > } > > As std::vector initializes the memory by itself when called with an size > argument in the constructor, the memory is initialized twice. > > A faster version with the same result is: > > pmt_u8vector::pmt_u8vector(size_t k, uint8_t fill) > : d_v(k, fill) > {}
Thanks. I'll fix. > Same is true for the other data types. > > Another question: > Why are the classes for the different types written "by hand", and not using > templates, eg: > > template <typename T> > class pmt_uniform_vector > { > ... > } > typedef pmt_uniform_vector< uint8_t > pmt_u8vector; > > Stefan My goal was to keep the interface completely opaque. It's likely that the underlying implementation will be completely rewritten at some point. Although we're currently using a C++ style implementation, it's quite possible that we'll move to a more lisp-style implementation with type info stored in the low pointer bits, GC instead of reference counting, etc. Using templates in the .cc files to reduce replicated code would be a good idea with the current implementation. Eric _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio