This repository has been archived on 2024-01-28. You can view files and clone it, but cannot push or open issues or pull requests.
ecg-prog-filtered/u01
Simon Bruder 002ef8d707 CMake: Enable warnings
Not every exercise has the same levels,
but they now have at least some warnings.
2023-05-20 12:35:45 +02:00
..
CMakeLists.txt CMake: Enable warnings 2023-05-20 12:35:45 +02:00
main.cpp u01: Remove unused arguments from main 2023-05-20 11:29:04 +02:00
node.cpp u01: Accept reference for node::set_name 2023-05-09 23:25:04 +02:00
node.h u01: Accept reference for node::set_name 2023-05-09 23:25:04 +02:00
readme.txt Licence under GPL v3 or later 2023-05-09 23:25:04 +02:00
tests.cpp u01: Add test case for very short loop 2023-05-09 23:25:04 +02:00

<!-- vim: set ft=markdown: -->
<!-- LTeX: language=de-DE -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
# Praxisaufgabe 1 Einführung in die Computergrafik

## Team

 * Simon Bruder, Matrikelnummer: 5075324

## Bearbeitete Zusatzaufgaben

 * Rekursive Traversierung: `node::print_recursive()`
 * Iterative Traversierung: `node::print_iterative()`
 * Bauen einer dynamischen Bibliothek `libtree.so` (siehe unten für Hinweise)
 * Bauen einer statischen Bibliothek `libtree.a`

## Hinweise

### Signatur der Traversierungsmethoden

Die rekursive und iterative Traversierung sollen laut Aufgabenstellung
„ähnlich zum `<<`-Operator“ implementiert werden.
Da es aber pro Klasse nur eine Implementation des `<<`-Operators geben kann,
habe ich die Funktionen so implementiert, dass sie `std::string` zurückgeben
und damit die Anwendung ähnlich ist wie bei Verwendung von `print` (aus 1.2.3):

```cpp
// statt
std::cout << n;
// ist es für die anderen Traversierungsmethoden
std::cout << n.print_recursive();
// bzw.
std::cout << n.print_iterative();
```

### Statische und dynamische Bibliothek

Im Normalfall baut das CMake-Projekt eine statische Bibliothek und linkt `main` dagegen.
Damit ist Zusatzaufgabe 3 erfüllt.

Um eine dynamische Bibliothek zu bauen und `main` dagegen zu linken,
kann CMake mit `-DBUILD_SHARED_LIBS=ON` aufgerufen werden.
Da unter GNU keine spezifischen Annotationen dafür nötig sind, ist Zusatzaufgabe 4 erfüllt.