Files
geant4/source/externals/g4tools/include/tools/rroot/vector3
T
2025-12-05 08:54:02 +01:00

83 lines
1.9 KiB
Plaintext

// Copyright (C) 2010, Guy Barrand. All rights reserved.
// See the file tools.license for terms.
#ifndef tools_rroot_vector3
#define tools_rroot_vector3
#include "../scast"
#include "object"
#include "cids"
namespace tools {
namespace rroot {
class vector3 : public virtual iro {
typedef iro parent;
private:
static const std::string& s_store_class() {
static const std::string s_v("TVector3");
return s_v;
}
public:
static const std::string& s_class() {
static const std::string s_v("tools::rroot::vector3");
return s_v;
}
public: //iro
virtual void* cast(const std::string& a_class) const {
if(void* p = cmp_cast<vector3>(this,a_class)) return p;
return 0;
}
virtual const std::string& s_cls() const {return s_class();}
virtual iro* copy() const {return new vector3(*this);}
public:
static cid id_class() {return vector3_cid();}
virtual void* cast(cid a_class) const {
if(void* p = cmp_cast<vector3>(this,a_class)) {return p;}
else return 0;
}
public:
virtual bool stream(buffer& a_buffer) {
unsigned int _s,_c;
short v;
if(!a_buffer.read_version(v,_s,_c)) return false;
{uint32 id,bits;
if(!Object_stream(a_buffer,id,bits)) return false;}
if(!a_buffer.read(m_x)) return false;
if(!a_buffer.read(m_y)) return false;
if(!a_buffer.read(m_z)) return false;
if(!a_buffer.check_byte_count(_s,_c,s_store_class())) return false;
return true;
}
public:
vector3():m_x(0),m_y(0),m_z(0){
}
virtual ~vector3(){
}
public:
vector3(const vector3& a_from)
:parent(a_from)
,m_x(a_from.m_x),m_y(a_from.m_y),m_z(a_from.m_z)
{}
vector3& operator=(const vector3& a_from){
m_x = a_from.m_x;
m_y = a_from.m_y;
m_z = a_from.m_z;
return *this;
}
public:
double x() const {return m_x;}
double y() const {return m_y;}
double z() const {return m_z;}
private:
double m_x,m_y,m_z;
};
}}
#endif