39 lines
939 B
C
39 lines
939 B
C
|
//
|
||
|
// OneByOneMatrix.h
|
||
|
// CopyOnWrite
|
||
|
//
|
||
|
// Created by clink on 17/05/16.
|
||
|
// Copyright (c) 2016 HSEL. All rights reserved.
|
||
|
//
|
||
|
|
||
|
#ifndef __CopyOnWrite__OneByOneMatrix__
|
||
|
#define __CopyOnWrite__OneByOneMatrix__
|
||
|
|
||
|
|
||
|
class OneByOneMatrix {
|
||
|
|
||
|
int m_value;
|
||
|
|
||
|
int m_referenceCounter; // refcounting
|
||
|
static int s_instanceCounter; // assertions
|
||
|
public:
|
||
|
OneByOneMatrix();
|
||
|
explicit OneByOneMatrix(int initialValue);
|
||
|
OneByOneMatrix(const OneByOneMatrix&);
|
||
|
~OneByOneMatrix();
|
||
|
|
||
|
explicit operator int();
|
||
|
OneByOneMatrix operator+(const OneByOneMatrix & other);
|
||
|
OneByOneMatrix& operator ++(int);
|
||
|
bool operator==(const OneByOneMatrix& other);
|
||
|
bool operator!=(const OneByOneMatrix& other);
|
||
|
|
||
|
friend class OneByOneMatrix_CopyOnWrite;
|
||
|
static bool instanceCountExceeds(int max); // assertions
|
||
|
};
|
||
|
|
||
|
// imagine this class as an abstraction for very large matrices
|
||
|
|
||
|
|
||
|
#endif /* defined(__CopyOnWrite__OneByOneMatrix__) */
|