Remove Property specialization for std::string
This commit is contained in:
@@ -395,93 +395,6 @@ private:
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
/** Property specialization for std::string type.
|
||||
*/
|
||||
template <>
|
||||
class PropertyT<std::string> : public BaseProperty
|
||||
{
|
||||
public:
|
||||
|
||||
typedef std::string Value;
|
||||
typedef std::vector<std::string> vector_type;
|
||||
typedef std::string value_type;
|
||||
typedef vector_type::reference reference;
|
||||
typedef vector_type::const_reference const_reference;
|
||||
|
||||
public:
|
||||
|
||||
explicit PropertyT(const std::string& _name = "<unknown>", const std::string& _internal_type_name="" )
|
||||
: BaseProperty(_name, _internal_type_name)
|
||||
{ }
|
||||
|
||||
public: // inherited from BaseProperty
|
||||
|
||||
virtual void reserve(size_t _n) override { data_.reserve(_n); }
|
||||
virtual void resize(size_t _n) override { data_.resize(_n); }
|
||||
virtual void clear() override { data_.clear(); vector_type().swap(data_); }
|
||||
virtual void push_back() override { data_.push_back(std::string()); }
|
||||
virtual void swap(size_t _i0, size_t _i1) override {
|
||||
std::swap(data_[_i0], data_[_i1]);
|
||||
}
|
||||
virtual void copy(size_t _i0, size_t _i1) override
|
||||
{ data_[_i1] = data_[_i0]; }
|
||||
|
||||
public:
|
||||
|
||||
virtual void set_persistent( bool _yn ) override
|
||||
{ check_and_set_persistent<std::string>( _yn ); }
|
||||
|
||||
virtual size_t n_elements() const override { return data_.size(); }
|
||||
virtual size_t element_size() const override { return UnknownSize; }
|
||||
virtual size_t size_of() const override
|
||||
{ return IO::size_of( data_ ); }
|
||||
|
||||
virtual size_t size_of(size_t /* _n_elem */) const override
|
||||
{ return UnknownSize; }
|
||||
|
||||
/// Store self as one binary block. Max. length of a string is 65535 bytes.
|
||||
size_t store( std::ostream& _ostr, bool _swap ) const override
|
||||
{ return IO::store( _ostr, data_, _swap ); }
|
||||
|
||||
size_t restore( std::istream& _istr, bool _swap ) override
|
||||
{ return IO::restore( _istr, data_, _swap ); }
|
||||
|
||||
public:
|
||||
|
||||
const value_type* data() const {
|
||||
if( data_.empty() )
|
||||
return nullptr;
|
||||
|
||||
return (value_type*) &data_[0];
|
||||
}
|
||||
|
||||
/// Access the i'th element. No range check is performed!
|
||||
reference operator[](int _idx) {
|
||||
assert( size_t(_idx) < data_.size());
|
||||
return ((value_type*) &data_[0])[_idx];
|
||||
}
|
||||
|
||||
/// Const access the i'th element. No range check is performed!
|
||||
const_reference operator[](int _idx) const {
|
||||
assert( size_t(_idx) < data_.size());
|
||||
return ((value_type*) &data_[0])[_idx];
|
||||
}
|
||||
|
||||
PropertyT<value_type>* clone() const override {
|
||||
PropertyT<value_type>* p = new PropertyT<value_type>( *this );
|
||||
return p;
|
||||
}
|
||||
|
||||
std::string get_storage_name() const override
|
||||
{
|
||||
return OpenMesh::IO::binary<std::string>::string_for_value_type();
|
||||
}
|
||||
private:
|
||||
|
||||
vector_type data_;
|
||||
|
||||
};
|
||||
|
||||
/// Base property handle.
|
||||
template <class T>
|
||||
struct BasePropHandleT : public BaseHandle
|
||||
|
||||
Reference in New Issue
Block a user