From c318f26d4340600cecfb52b8c38345efee787754 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Thu, 14 Jun 2018 16:22:51 +0200 Subject: [PATCH] mal sehen --- 05_OO/shapes_main.cpp | 148 ++++++----- .../CopyOnWrite.xcodeproj/project.pbxproj | 245 ------------------ .../contents.xcworkspacedata | 7 - .../UserInterfaceState.xcuserstate | Bin 34240 -> 0 bytes .../xcschemes/CopyOnWrite.xcscheme | 88 ------- .../xcschemes/xcschememanagement.plist | 22 -- 11_PUTT/CopyOnWrite/LargeCowMatrix.cpp | 48 ++++ 11_PUTT/CopyOnWrite/LargeCowMatrix.h | 26 ++ .../{CopyOnWrite => }/OneByOneMatrix.cpp | 9 +- .../{CopyOnWrite => }/OneByOneMatrix.h | 4 - .../CopyOnWrite/{CopyOnWrite => }/main.cpp | 6 +- CMakeLists.txt | 11 +- 12 files changed, 177 insertions(+), 437 deletions(-) delete mode 100644 11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.pbxproj delete mode 100644 11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.xcworkspace/xcuserdata/clink.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/CopyOnWrite.xcscheme delete mode 100644 11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 11_PUTT/CopyOnWrite/LargeCowMatrix.cpp create mode 100644 11_PUTT/CopyOnWrite/LargeCowMatrix.h rename 11_PUTT/CopyOnWrite/{CopyOnWrite => }/OneByOneMatrix.cpp (78%) rename 11_PUTT/CopyOnWrite/{CopyOnWrite => }/OneByOneMatrix.h (96%) rename 11_PUTT/CopyOnWrite/{CopyOnWrite => }/main.cpp (94%) diff --git a/05_OO/shapes_main.cpp b/05_OO/shapes_main.cpp index fc7b247..7b012c5 100644 --- a/05_OO/shapes_main.cpp +++ b/05_OO/shapes_main.cpp @@ -1,87 +1,113 @@ #include #include -#include "AnsiConsole.h" +#include "../helpers/AnsiConsole.h" -struct Position{ - int x; - int y; - Position(int x_=0, int y_=0){ x=x_;y=y_;} +struct Position { + int x; + int y; + + Position(int x_ = 0, int y_ = 0) { + x = x_; + y = y_; + } }; -class Point{ +class Point { protected: - Position _position; + Position _position; public: - Point(int x=0, int y=0); - void draw(); + Point(int x = 0, int y = 0); + + void draw(); }; -Point::Point(int x, int y){ - _position = Position(x,y); +Point::Point(int x, int y) { + _position = Position(x, y); } -void Point::draw(){ - ansiConsole.printText(_position.x,_position.y,"*", Colors::RED); +void Point::draw() { + ansiConsole.printText(_position.x, _position.y, "*", Colors::RED); } -class Circle{ +class Circle { protected: - Position _position; - int _radius; + Position _position; + int _radius; public: - Circle(int x=0, int y=0, int radius=0); - void draw(); + Circle(int x = 0, int y = 0, int radius = 0); + + void draw(); }; -Circle::Circle(int x, int y, int radius){ - _position = Position(x,y); - _radius=radius; +Circle::Circle(int x, int y, int radius) { + _position = Position(x, y); + _radius = radius; } -void Circle::draw(){ - /* see https://de.wikibooks.org/wiki/Formelsammlung_Mathematik:_Geometrie - * Höhensatz des Euklid - * */ - int x_start = _position.x - _radius/2; - int x_stop = _position.x + _radius/2; +void Circle::draw() { + /* see https://de.wikibooks.org/wiki/Formelsammlung_Mathematik:_Geometrie + * Höhensatz des Euklid + * */ + int x_start = _position.x - _radius / 2; + int x_stop = _position.x + _radius / 2; - for(int i=x_start; i<=x_stop; i++){ - double x_relative = double(i) - double(x_start); - double h = sqrt(x_relative*(x_stop-x_start-x_relative)); - ansiConsole.printText(_position.x + int(x_relative)- _radius/2, - _position.y +h,"#", - Colors::GREEN); - ansiConsole.printText(_position.x + int(x_relative)- _radius/2, - _position.y -h,"#", - Colors::GREEN); + for (int i = x_start; i <= x_stop; i++) { + double x_relative = double(i) - double(x_start); + double h = sqrt(x_relative * (x_stop - x_start - x_relative)); + ansiConsole.printText(_position.x + int(x_relative) - _radius / 2, + _position.y + h, "#", + Colors::GREEN); + ansiConsole.printText(_position.x + int(x_relative) - _radius / 2, + _position.y - h, "#", + Colors::GREEN); - } + } } -int main(int argc, char **argv) -{ - // x=1 and y=1 is the upper left corner - // x and y are more like column and row - ansiConsole.printText(5,5,"Hello, World!"); +class Rectangle { +protected: + Position position; + int width; + int height; - Point* p = new Point(10,10); - p->draw(); +public: + Rectangle(int x = 0, int y = 0, int width = 0, int height = 0); + void draw(); +}; - Point* p2 = new Point(2,10); - p2->draw(); - - - Circle* c = new Circle(30, 15, 10); - c->draw(); - - Point* p3= new Point(30,15); - p3->draw(); - - - delete p; - delete p2; - delete p3; - delete c; - - return 0; +Rectangle::Rectangle(int x, int y, int width, int height) { + position = Position(x, y); + this->width = width; + this->height = height; +} + +void Rectangle::draw() { + +} + +int main(int argc, char **argv) { + // x=1 and y=1 is the upper left corner + // x and y are more like column and row + ansiConsole.printText(5, 5, "Hello, World!"); + + Point *p = new Point(10, 10); + p->draw(); + + Point *p2 = new Point(2, 10); + p2->draw(); + + + Circle *c = new Circle(30, 15, 10); + c->draw(); + + Point *p3 = new Point(30, 15); + p3->draw(); + + + delete p; + delete p2; + delete p3; + delete c; + + return 0; } diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.pbxproj b/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.pbxproj deleted file mode 100644 index 14d1bd8..0000000 --- a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.pbxproj +++ /dev/null @@ -1,245 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 65413E911CEB65E5008BE849 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65413E901CEB65E5008BE849 /* main.cpp */; }; - 65413E991CEB6612008BE849 /* OneByOneMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65413E971CEB6612008BE849 /* OneByOneMatrix.cpp */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 65413E8B1CEB65E5008BE849 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 65413E8D1CEB65E5008BE849 /* CopyOnWrite */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CopyOnWrite; sourceTree = BUILT_PRODUCTS_DIR; }; - 65413E901CEB65E5008BE849 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65413E971CEB6612008BE849 /* OneByOneMatrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OneByOneMatrix.cpp; sourceTree = ""; }; - 65413E981CEB6612008BE849 /* OneByOneMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneByOneMatrix.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 65413E8A1CEB65E5008BE849 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 65413E841CEB65E5008BE849 = { - isa = PBXGroup; - children = ( - 65413E8F1CEB65E5008BE849 /* CopyOnWrite */, - 65413E8E1CEB65E5008BE849 /* Products */, - ); - sourceTree = ""; - }; - 65413E8E1CEB65E5008BE849 /* Products */ = { - isa = PBXGroup; - children = ( - 65413E8D1CEB65E5008BE849 /* CopyOnWrite */, - ); - name = Products; - sourceTree = ""; - }; - 65413E8F1CEB65E5008BE849 /* CopyOnWrite */ = { - isa = PBXGroup; - children = ( - 65413E901CEB65E5008BE849 /* main.cpp */, - 65413E971CEB6612008BE849 /* OneByOneMatrix.cpp */, - 65413E981CEB6612008BE849 /* OneByOneMatrix.h */, - ); - path = CopyOnWrite; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 65413E8C1CEB65E5008BE849 /* CopyOnWrite */ = { - isa = PBXNativeTarget; - buildConfigurationList = 65413E941CEB65E5008BE849 /* Build configuration list for PBXNativeTarget "CopyOnWrite" */; - buildPhases = ( - 65413E891CEB65E5008BE849 /* Sources */, - 65413E8A1CEB65E5008BE849 /* Frameworks */, - 65413E8B1CEB65E5008BE849 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = CopyOnWrite; - productName = CopyOnWrite; - productReference = 65413E8D1CEB65E5008BE849 /* CopyOnWrite */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 65413E851CEB65E5008BE849 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0620; - ORGANIZATIONNAME = HSEL; - TargetAttributes = { - 65413E8C1CEB65E5008BE849 = { - CreatedOnToolsVersion = 6.2; - }; - }; - }; - buildConfigurationList = 65413E881CEB65E5008BE849 /* Build configuration list for PBXProject "CopyOnWrite" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 65413E841CEB65E5008BE849; - productRefGroup = 65413E8E1CEB65E5008BE849 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 65413E8C1CEB65E5008BE849 /* CopyOnWrite */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 65413E891CEB65E5008BE849 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 65413E911CEB65E5008BE849 /* main.cpp in Sources */, - 65413E991CEB6612008BE849 /* OneByOneMatrix.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 65413E921CEB65E5008BE849 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - }; - name = Debug; - }; - 65413E931CEB65E5008BE849 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.9; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - }; - name = Release; - }; - 65413E951CEB65E5008BE849 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 65413E961CEB65E5008BE849 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 65413E881CEB65E5008BE849 /* Build configuration list for PBXProject "CopyOnWrite" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 65413E921CEB65E5008BE849 /* Debug */, - 65413E931CEB65E5008BE849 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 65413E941CEB65E5008BE849 /* Build configuration list for PBXNativeTarget "CopyOnWrite" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 65413E951CEB65E5008BE849 /* Debug */, - 65413E961CEB65E5008BE849 /* Release */, - ); - defaultConfigurationIsVisible = 0; - }; -/* End XCConfigurationList section */ - }; - rootObject = 65413E851CEB65E5008BE849 /* Project object */; -} diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 62b8b09..0000000 --- a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.xcworkspace/xcuserdata/clink.xcuserdatad/UserInterfaceState.xcuserstate b/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/project.xcworkspace/xcuserdata/clink.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 21ac3eded6bd905037b87fbcfe6c7ace44e324dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34240 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 diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/CopyOnWrite.xcscheme b/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/CopyOnWrite.xcscheme deleted file mode 100644 index ae4057b..0000000 --- a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/CopyOnWrite.xcscheme +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/xcschememanagement.plist b/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index a513042..0000000 --- a/11_PUTT/CopyOnWrite/CopyOnWrite.xcodeproj/xcuserdata/clink.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - CopyOnWrite.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 65413E8C1CEB65E5008BE849 - - primary - - - - - diff --git a/11_PUTT/CopyOnWrite/LargeCowMatrix.cpp b/11_PUTT/CopyOnWrite/LargeCowMatrix.cpp new file mode 100644 index 0000000..0e4c6de --- /dev/null +++ b/11_PUTT/CopyOnWrite/LargeCowMatrix.cpp @@ -0,0 +1,48 @@ +#include +#include "LargeCowMatrix.h" + +int LargeCowMatrix::instanceCounter = 0; + +LargeCowMatrix::LargeCowMatrix() : value(-1), referenceCounter(0){ + instanceCounter++; +} + +LargeCowMatrix::LargeCowMatrix(int value) : value(value), referenceCounter(0){ + instanceCounter++; +} + +LargeCowMatrix::LargeCowMatrix(const LargeCowMatrix& source) : value(source.value), referenceCounter(source.referenceCounter){ + instanceCounter++; +} + +LargeCowMatrix::~LargeCowMatrix() { + instanceCounter--; +} + +LargeCowMatrix::operator int() { + return value; +} + +LargeCowMatrix LargeCowMatrix::operator+(const LargeCowMatrix &other) { + return LargeCowMatrix(value + other.value); +} + +LargeCowMatrix &LargeCowMatrix::operator++(int) { + value++; + return *this; +} + +bool LargeCowMatrix::operator==(const LargeCowMatrix &other) { + return this->value == other.value; +} + +bool LargeCowMatrix::operator!=(const LargeCowMatrix &other) { + return !(*this==other); +} + +bool LargeCowMatrix::instanceCountExceeds(int max) { + bool result = instanceCounter>max; + if(result) + std::cout << LargeCowMatrix::instanceCounter << " > max=" << max << std::endl; + return result; +} diff --git a/11_PUTT/CopyOnWrite/LargeCowMatrix.h b/11_PUTT/CopyOnWrite/LargeCowMatrix.h new file mode 100644 index 0000000..2566e89 --- /dev/null +++ b/11_PUTT/CopyOnWrite/LargeCowMatrix.h @@ -0,0 +1,26 @@ +#ifndef TEST_BUILD_LARGECOWMATRIX_H +#define TEST_BUILD_LARGECOWMATRIX_H + + +class LargeCowMatrix { + int value; + int referenceCounter; + static int instanceCounter; + +public: + LargeCowMatrix(); + explicit LargeCowMatrix(int value); + LargeCowMatrix(const LargeCowMatrix&); + ~LargeCowMatrix(); + + explicit operator int(); + LargeCowMatrix operator+(const LargeCowMatrix & other); + LargeCowMatrix& operator ++(int); + bool operator==(const LargeCowMatrix& other); + bool operator!=(const LargeCowMatrix& other); + + static bool instanceCountExceeds(int max); +}; + + +#endif //TEST_BUILD_LARGECOWMATRIX_H diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite/OneByOneMatrix.cpp b/11_PUTT/CopyOnWrite/OneByOneMatrix.cpp similarity index 78% rename from 11_PUTT/CopyOnWrite/CopyOnWrite/OneByOneMatrix.cpp rename to 11_PUTT/CopyOnWrite/OneByOneMatrix.cpp index 921f8d8..55886f3 100644 --- a/11_PUTT/CopyOnWrite/CopyOnWrite/OneByOneMatrix.cpp +++ b/11_PUTT/CopyOnWrite/OneByOneMatrix.cpp @@ -14,20 +14,17 @@ int OneByOneMatrix::s_instanceCounter=0; -OneByOneMatrix::OneByOneMatrix() -: m_value(-1), m_referenceCounter(0) +OneByOneMatrix::OneByOneMatrix() : m_value(-1), m_referenceCounter(0) { s_instanceCounter++; } -OneByOneMatrix::OneByOneMatrix(int initialValue) -: m_value(initialValue), m_referenceCounter(0) +OneByOneMatrix::OneByOneMatrix(int initialValue) : m_value(initialValue), m_referenceCounter(0) { s_instanceCounter++; } -OneByOneMatrix::OneByOneMatrix(const OneByOneMatrix& source) -: m_value(source.m_value), m_referenceCounter(source.m_referenceCounter) +OneByOneMatrix::OneByOneMatrix(const OneByOneMatrix& source) : m_value(source.m_value), m_referenceCounter(source.m_referenceCounter) { s_instanceCounter++; } diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite/OneByOneMatrix.h b/11_PUTT/CopyOnWrite/OneByOneMatrix.h similarity index 96% rename from 11_PUTT/CopyOnWrite/CopyOnWrite/OneByOneMatrix.h rename to 11_PUTT/CopyOnWrite/OneByOneMatrix.h index 0eccc69..afefa2f 100644 --- a/11_PUTT/CopyOnWrite/CopyOnWrite/OneByOneMatrix.h +++ b/11_PUTT/CopyOnWrite/OneByOneMatrix.h @@ -34,9 +34,5 @@ public: // imagine this class as an abstraction for very large matrices -class LargeCowMatrix { - -}; - #endif /* defined(__CopyOnWrite__OneByOneMatrix__) */ diff --git a/11_PUTT/CopyOnWrite/CopyOnWrite/main.cpp b/11_PUTT/CopyOnWrite/main.cpp similarity index 94% rename from 11_PUTT/CopyOnWrite/CopyOnWrite/main.cpp rename to 11_PUTT/CopyOnWrite/main.cpp index 9941c93..4d1b8eb 100644 --- a/11_PUTT/CopyOnWrite/CopyOnWrite/main.cpp +++ b/11_PUTT/CopyOnWrite/main.cpp @@ -8,14 +8,14 @@ #include - #include "OneByOneMatrix.h" +#include "LargeCowMatrix.h" int failCounter=0; -typedef int NumberType; +//typedef int NumberType; //typedef OneByOneMatrix NumberType; -//typedef LargeCowMatrix NumberType; +typedef LargeCowMatrix NumberType; void simpleTests(){ diff --git a/CMakeLists.txt b/CMakeLists.txt index 14cf3e3..a4cf71d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,10 +15,19 @@ set(UDEF_TESTAT UserDefinedTypesTestat) set(UDEF_TESTAT_SOURCE 04_UDEF/Testat/Testat.cpp) add_executable(${UDEF_TESTAT} ${UDEF_TESTAT_SOURCE}) +set(05_SHAPES 05_Shapes) +set(05_SHAPES_SOURCE 05_OO/shapes_main.cpp) +add_executable(${05_SHAPES} helpers/AnsiConsole.cpp ${05_SHAPES_SOURCE}) + + set(SEQUENCE_DIAGRAM SequenzDiagram) set(SEQUENCE_DIAGRAM_SOURCE 11_PUTT/05_OO_b/main.cpp) add_executable(${SEQUENCE_DIAGRAM} 11_PUTT/05_OO_b/SequenceDiagramCreator.cpp ${SEQUENCE_DIAGRAM_SOURCE}) set(LCDDISPLAY LCDDisplay) set(LCDDISPLAY_SOURCE 11_PUTT/02_Ment/LCDDisplay.cpp) -add_executable(${LCDDISPLAY} ${LCDDISPLAY_SOURCE}) \ No newline at end of file +add_executable(${LCDDISPLAY} ${LCDDISPLAY_SOURCE}) + +set(COPY_ON_WRITE CopyOnWrite) +set(COPY_ON_WRITE_SOURCE 11_PUTT/CopyOnWrite/main.cpp) +add_executable(${COPY_ON_WRITE} 11_PUTT/CopyOnWrite/OneByOneMatrix.cpp 11_PUTT/CopyOnWrite/LargeCowMatrix.cpp ${COPY_ON_WRITE_SOURCE}) \ No newline at end of file