#ifndef __CMODEL_UMDVECT3_H
#define __CMODEL_UMDVECT3_H

#ifdef _LINUX
#  ifndef __UNIX__
#    define __UNIX__
#  endif
#endif
#ifndef __UNIX__
#  ifndef EXPORT
#    define EXPORT __declspec(dllexport)
#  endif
#else
#  ifndef EXPORT
#    define EXPORT
#  endif
#endif


class UMdvect3 {
  public:
    double x;
    double y;
    double z;
  public:
    EXPORT UMdvect3(void);
    EXPORT UMdvect3(double x1,double y1,double z1);
    EXPORT UMdvect3(const UMdvect3 &v3);
    EXPORT const double &X(void) const;
    EXPORT const double &Y(void) const;
    EXPORT const double &Z(void) const;
    EXPORT void X(const double &t);
    EXPORT void Y(const double &t);
    EXPORT void Z(const double &t);
    EXPORT void Set(double x1,double y1,double z1);
    EXPORT void Fill(double x1);
    EXPORT UMdvect3 operator +(const UMdvect3 &t3) const;
    EXPORT void operator +=(const UMdvect3 &t3);
    EXPORT UMdvect3 operator -(const UMdvect3 &t3) const;
    EXPORT void operator -=(const UMdvect3 &t3);
    EXPORT UMdvect3 operator *(const double &t) const;
    EXPORT void operator *=(const double &t);
    EXPORT UMdvect3 operator /(const double &t) const;
    EXPORT void operator /=(const double &t);
    EXPORT UMdvect3 operator &(const UMdvect3 &t3) const;
    EXPORT double operator |(const UMdvect3 &t3) const;
    EXPORT double &operator[](int i);
    EXPORT const double &operator[](int i) const;
    EXPORT bool operator ==(const UMdvect3 &t3) const;
    EXPORT bool operator !=(const UMdvect3 &t3) const;
    EXPORT UMdvect3 &operator =(const UMdvect3 &t3);
};
typedef UMdvect3 UMdvect;


#endif
