src/proto2/Vector.hh
author saiam
Tue, 18 Nov 2008 19:33:03 +0000
changeset 55 8ae9dd0ae337
parent 54 b8b043ba0abd
child 57 a89e02118931
permissions -rw-r--r--
It compiles!!!!
53
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
     1
#ifndef COOR_H
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
     2
#define COOR_H
46
saiam
parents:
diff changeset
     3
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
     4
#include <iostream>
51
360208b631c1 Resolved conflicts.
saiam
parents: 50
diff changeset
     5
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
     6
template <typename T>
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
     7
class _Vector {
51
360208b631c1 Resolved conflicts.
saiam
parents: 50
diff changeset
     8
public:
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
     9
    T x;
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    10
    T y;
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    11
    
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    12
    _Vector() : x(0), y(0){}
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    13
    _Vector(T x, T y) : x(x), y(y) {}
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    14
    _Vector(const _Vector& v) : x(v.x), y(v.y) {}
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    15
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    16
    void operator=(const _Vector& v) {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    17
        this->x = v.x;
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    18
        this->y = v.y;
53
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
    19
    }
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    20
    _Vector operator+(const _Vector& v) const {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    21
        return _Vector(this->x+v.x, this->y+v.y);
53
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
    22
    }
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    23
    _Vector operator-(const _Vector& v) const {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    24
        return _Vector(this->x-v.x, this->y-v.y);
53
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
    25
    }
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    26
    _Vector operator*(const T d) const {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    27
        return _Vector(this->x*d, this->y*d);
51
360208b631c1 Resolved conflicts.
saiam
parents: 50
diff changeset
    28
    }
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    29
    _Vector operator/(const T d) const {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    30
        return _Vector(this->x/d, this->y/d);
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    31
    } 
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    32
    void operator+=(const _Vector& v) {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    33
        this->x += v.x;
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    34
        this->y += v.y;
51
360208b631c1 Resolved conflicts.
saiam
parents: 50
diff changeset
    35
    }
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    36
    void operator*=(const T f) {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    37
        this->x *= f;
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    38
        this->y *= f;
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    39
    }
51
360208b631c1 Resolved conflicts.
saiam
parents: 50
diff changeset
    40
};
46
saiam
parents:
diff changeset
    41
53
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
    42
template<typename T>
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    43
bool operator==(const _Vector<T>& v1, const _Vector<T>& v2) {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    44
    return ((v1.x == v2.x) && (v1.y == v2.y));
53
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
    45
}
a76ddb2e39fb changed Vector.hh to work as coor.hh
nireco
parents: 51
diff changeset
    46
55
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    47
template<typename T>
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    48
std::ostream& operator<<(std::ostream &s, _Vector<T> &v) {
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    49
    return s<<"("<<v.x<<", "<<v.y<<")";
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    50
}
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    51
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    52
typedef _Vector<uint32_t> Vector;
8ae9dd0ae337 It compiles!!!!
saiam
parents: 54
diff changeset
    53
46
saiam
parents:
diff changeset
    54
#endif