# Rewrite 5
- Move Libraries Source into pd directory and give them all their own CMakeLists.txt - Partial rewrite core (color, autogenerated vec), lithium (now uses UNIQUE PTR for Commands), UI7 - Use MenuV2 as new standart in UI7 - Implementz ViewPort Pre alpha to UI7 - Add Line Drawing to DrawList (not Working) - Implement a Complete new drievrs API (static Drivers) - NO SUPPORT FOR SHARED LIBRARY BUILDS IN VERSION 5 YET - Add Tools to Autogenerate Headers and Stuff
This commit is contained in:
		
							
								
								
									
										0
									
								
								include/pd/core/sl/allocator.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								include/pd/core/sl/allocator.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										140
									
								
								include/pd/core/sl/hashmap.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										140
									
								
								include/pd/core/sl/hashmap.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,71 +1,71 @@ | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/common.hpp> | ||||
| #include <pd/core/sl/list.hpp> | ||||
| #include <pd/core/sl/pair.hpp> | ||||
|  | ||||
| namespace PD { | ||||
| template <typename K, typename V, size_t bucket_count = 10> | ||||
| class HashMap { | ||||
|  public: | ||||
|   HashMap() {} | ||||
|   ~HashMap() {} | ||||
|  | ||||
|   void Insert(const K& k, const V& v) { | ||||
|     size_t idx = Hash(k); | ||||
|     auto& bukket = pBuckets[idx]; | ||||
|     for (auto& it : bukket) { | ||||
|       if (it.First == k) { | ||||
|         it.Second = v; | ||||
|         return; | ||||
|       } | ||||
|     } | ||||
|     bukket.PushBack(Pair(k, v)); | ||||
|   } | ||||
|  | ||||
|   bool Contains(const K& k) const { | ||||
|     size_t idx = Hash(k); | ||||
|     auto& bukket = pBuckets[idx]; | ||||
|  | ||||
|     for (auto& it : bukket) { | ||||
|       if (it.First == k) { | ||||
|         return true; | ||||
|       } | ||||
|     } | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   void Clear() { | ||||
|     for (size_t i = 0; i < bucket_count; i++) { | ||||
|       pBuckets[i].Clear(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   size_t Hash(const K& k) const { return std::hash<K>{}(k) % bucket_count; } | ||||
|   PD::List<PD::Pair<K, V>> pBuckets[bucket_count]; | ||||
| }; | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/common.hpp> | ||||
| #include <pd/core/sl/list.hpp> | ||||
| #include <pd/core/sl/pair.hpp> | ||||
|  | ||||
| namespace PD { | ||||
| template <typename K, typename V, size_t bucket_count = 10> | ||||
| class HashMap { | ||||
|  public: | ||||
|   HashMap() {} | ||||
|   ~HashMap() {} | ||||
|  | ||||
|   void Insert(const K& k, const V& v) { | ||||
|     size_t idx = Hash(k); | ||||
|     auto& bukket = pBuckets[idx]; | ||||
|     for (auto& it : bukket) { | ||||
|       if (it.First == k) { | ||||
|         it.Second = v; | ||||
|         return; | ||||
|       } | ||||
|     } | ||||
|     bukket.PushBack(Pair(k, v)); | ||||
|   } | ||||
|  | ||||
|   bool Contains(const K& k) const { | ||||
|     size_t idx = Hash(k); | ||||
|     auto& bukket = pBuckets[idx]; | ||||
|  | ||||
|     for (auto& it : bukket) { | ||||
|       if (it.First == k) { | ||||
|         return true; | ||||
|       } | ||||
|     } | ||||
|     return false; | ||||
|   } | ||||
|  | ||||
|   void Clear() { | ||||
|     for (size_t i = 0; i < bucket_count; i++) { | ||||
|       pBuckets[i].Clear(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   size_t Hash(const K& k) const { return std::hash<K>{}(k) % bucket_count; } | ||||
|   PD::List<PD::Pair<K, V>> pBuckets[bucket_count]; | ||||
| }; | ||||
| }  // namespace PD | ||||
							
								
								
									
										418
									
								
								include/pd/core/sl/list.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										418
									
								
								include/pd/core/sl/list.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,210 +1,210 @@ | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/common.hpp> | ||||
|  | ||||
| namespace PD { | ||||
| template <typename T> | ||||
| class List { | ||||
|  public: | ||||
|   List() {} | ||||
|   ~List() {} | ||||
|  | ||||
|   struct Node { | ||||
|     Node(const T& v) : Data(v) {} | ||||
|     T Data; | ||||
|     Node* Prev = nullptr; | ||||
|     Node* Next = nullptr; | ||||
|   }; | ||||
|  | ||||
|   class Iterator { | ||||
|    public: | ||||
|     Iterator(Node* n) : pNode(n) {} | ||||
|     T& operator*() { return pNode->Data; } | ||||
|     Iterator& operator++() { | ||||
|       pNode = pNode->Next; | ||||
|       return *this; | ||||
|     } | ||||
|     bool operator!=(const Iterator& o) const { return pNode != o.pNode; } | ||||
|  | ||||
|     Node* pNode = nullptr; | ||||
|   }; | ||||
|  | ||||
|   void PushFront(const T& val) { | ||||
|     Node* node = new Node(val); | ||||
|     // node->Data = val; | ||||
|     node->Prev = nullptr; | ||||
|     node->Next = pHead; | ||||
|     if (pHead) { | ||||
|       pHead->Prev = node; | ||||
|     } | ||||
|     pHead = node; | ||||
|     if (!pTail) { | ||||
|       pTail = node; | ||||
|     } | ||||
|     pSize++; | ||||
|   } | ||||
|  | ||||
|   void PushBack(const T& val) { | ||||
|     Node* node = new Node(val); | ||||
|     // node->Data = val; | ||||
|     node->Prev = pTail; | ||||
|     node->Next = nullptr; | ||||
|     if (pTail) { | ||||
|       pTail->Next = node; | ||||
|     } | ||||
|     pTail = node; | ||||
|     if (!pHead) { | ||||
|       pHead = node; | ||||
|     } | ||||
|     pSize++; | ||||
|   } | ||||
|  | ||||
|   void PopFront() { | ||||
|     if (!pHead) { | ||||
|       return; | ||||
|     } | ||||
|     Node* t = pHead; | ||||
|     pHead = pHead->Next; | ||||
|     if (pHead) { | ||||
|       pHead->Prev = nullptr; | ||||
|     } else { | ||||
|       pTail = nullptr; | ||||
|     } | ||||
|     delete t; | ||||
|     pSize--; | ||||
|   } | ||||
|  | ||||
|   void PopBack() { | ||||
|     if (!pTail) { | ||||
|       return; | ||||
|     } | ||||
|     Node* t = pTail; | ||||
|     pTail = pTail->Prev; | ||||
|     if (pTail) { | ||||
|       pTail->Next = nullptr; | ||||
|     } else { | ||||
|       pHead = nullptr; | ||||
|     } | ||||
|     delete t; | ||||
|     pSize--; | ||||
|   } | ||||
|  | ||||
|   void Clear() { | ||||
|     while (pHead) { | ||||
|       PopFront(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   void Remove(const T& v) { | ||||
|     Node* s = pHead; | ||||
|     while (s) { | ||||
|       if (s->Data == v) { | ||||
|         if (s->Prev) { | ||||
|           s->Prev->Next = s->Next; | ||||
|         } else { | ||||
|           pHead = s->Next; | ||||
|         } | ||||
|         if (s->Next) { | ||||
|           s->Next->Prev = s->Prev; | ||||
|         } else { | ||||
|           pTail = s->Prev; | ||||
|         } | ||||
|         delete s; | ||||
|         pSize--; | ||||
|         return; | ||||
|       } | ||||
|       s = s->Next; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   void Reverse() { | ||||
|     Node* cur = pHead; | ||||
|     while (cur) { | ||||
|       Node* temp = cur->Prev; | ||||
|       cur->Prev = cur->Next; | ||||
|       cur->Next = temp; | ||||
|       cur = cur->Prev; | ||||
|     } | ||||
|     Node* temp = pHead; | ||||
|     pHead = pTail; | ||||
|     pTail = temp; | ||||
|   } | ||||
|  | ||||
|   T& Front() { | ||||
|     if (pHead) { | ||||
|       return pHead->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   const T& Front() const { | ||||
|     if (pHead) { | ||||
|       return pHead->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   T& Back() { | ||||
|     if (pTail) { | ||||
|       return pTail->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   const T& Back() const { | ||||
|     if (pTail) { | ||||
|       return pTail->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   size_t Size() const { return pSize; } | ||||
|  | ||||
|   Iterator begin() { return Iterator(pHead); } | ||||
|   Iterator end() { return Iterator(nullptr); } | ||||
|  | ||||
|  private: | ||||
|   Node* Find(const T& v) const { | ||||
|     Node* t = pHead; | ||||
|     while (t) { | ||||
|       if (t->Data == v) { | ||||
|         return t; | ||||
|       } | ||||
|       t = t->Next; | ||||
|     } | ||||
|     return nullptr; | ||||
|   } | ||||
|  | ||||
|   Node* pHead = nullptr; | ||||
|   Node* pTail = nullptr; | ||||
|   size_t pSize = 0; | ||||
| }; | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/common.hpp> | ||||
|  | ||||
| namespace PD { | ||||
| template <typename T> | ||||
| class List { | ||||
|  public: | ||||
|   List() {} | ||||
|   ~List() {} | ||||
|  | ||||
|   struct Node { | ||||
|     Node(const T& v) : Data(v) {} | ||||
|     T Data; | ||||
|     Node* Prev = nullptr; | ||||
|     Node* Next = nullptr; | ||||
|   }; | ||||
|  | ||||
|   class Iterator { | ||||
|    public: | ||||
|     Iterator(Node* n) : pNode(n) {} | ||||
|     T& operator*() { return pNode->Data; } | ||||
|     Iterator& operator++() { | ||||
|       pNode = pNode->Next; | ||||
|       return *this; | ||||
|     } | ||||
|     bool operator!=(const Iterator& o) const { return pNode != o.pNode; } | ||||
|  | ||||
|     Node* pNode = nullptr; | ||||
|   }; | ||||
|  | ||||
|   void PushFront(const T& val) { | ||||
|     Node* node = new Node(val); | ||||
|     // node->Data = val; | ||||
|     node->Prev = nullptr; | ||||
|     node->Next = pHead; | ||||
|     if (pHead) { | ||||
|       pHead->Prev = node; | ||||
|     } | ||||
|     pHead = node; | ||||
|     if (!pTail) { | ||||
|       pTail = node; | ||||
|     } | ||||
|     pSize++; | ||||
|   } | ||||
|  | ||||
|   void PushBack(const T& val) { | ||||
|     Node* node = new Node(val); | ||||
|     // node->Data = val; | ||||
|     node->Prev = pTail; | ||||
|     node->Next = nullptr; | ||||
|     if (pTail) { | ||||
|       pTail->Next = node; | ||||
|     } | ||||
|     pTail = node; | ||||
|     if (!pHead) { | ||||
|       pHead = node; | ||||
|     } | ||||
|     pSize++; | ||||
|   } | ||||
|  | ||||
|   void PopFront() { | ||||
|     if (!pHead) { | ||||
|       return; | ||||
|     } | ||||
|     Node* t = pHead; | ||||
|     pHead = pHead->Next; | ||||
|     if (pHead) { | ||||
|       pHead->Prev = nullptr; | ||||
|     } else { | ||||
|       pTail = nullptr; | ||||
|     } | ||||
|     delete t; | ||||
|     pSize--; | ||||
|   } | ||||
|  | ||||
|   void PopBack() { | ||||
|     if (!pTail) { | ||||
|       return; | ||||
|     } | ||||
|     Node* t = pTail; | ||||
|     pTail = pTail->Prev; | ||||
|     if (pTail) { | ||||
|       pTail->Next = nullptr; | ||||
|     } else { | ||||
|       pHead = nullptr; | ||||
|     } | ||||
|     delete t; | ||||
|     pSize--; | ||||
|   } | ||||
|  | ||||
|   void Clear() { | ||||
|     while (pHead) { | ||||
|       PopFront(); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   void Remove(const T& v) { | ||||
|     Node* s = pHead; | ||||
|     while (s) { | ||||
|       if (s->Data == v) { | ||||
|         if (s->Prev) { | ||||
|           s->Prev->Next = s->Next; | ||||
|         } else { | ||||
|           pHead = s->Next; | ||||
|         } | ||||
|         if (s->Next) { | ||||
|           s->Next->Prev = s->Prev; | ||||
|         } else { | ||||
|           pTail = s->Prev; | ||||
|         } | ||||
|         delete s; | ||||
|         pSize--; | ||||
|         return; | ||||
|       } | ||||
|       s = s->Next; | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   void Reverse() { | ||||
|     Node* cur = pHead; | ||||
|     while (cur) { | ||||
|       Node* temp = cur->Prev; | ||||
|       cur->Prev = cur->Next; | ||||
|       cur->Next = temp; | ||||
|       cur = cur->Prev; | ||||
|     } | ||||
|     Node* temp = pHead; | ||||
|     pHead = pTail; | ||||
|     pTail = temp; | ||||
|   } | ||||
|  | ||||
|   T& Front() { | ||||
|     if (pHead) { | ||||
|       return pHead->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   const T& Front() const { | ||||
|     if (pHead) { | ||||
|       return pHead->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   T& Back() { | ||||
|     if (pTail) { | ||||
|       return pTail->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   const T& Back() const { | ||||
|     if (pTail) { | ||||
|       return pTail->Data; | ||||
|     } | ||||
|     // Need a List Empty Error Here (exceptions are disabled on 3ds) | ||||
|     exit(1); | ||||
|   } | ||||
|  | ||||
|   size_t Size() const { return pSize; } | ||||
|  | ||||
|   Iterator begin() { return Iterator(pHead); } | ||||
|   Iterator end() { return Iterator(nullptr); } | ||||
|  | ||||
|  private: | ||||
|   Node* Find(const T& v) const { | ||||
|     Node* t = pHead; | ||||
|     while (t) { | ||||
|       if (t->Data == v) { | ||||
|         return t; | ||||
|       } | ||||
|       t = t->Next; | ||||
|     } | ||||
|     return nullptr; | ||||
|   } | ||||
|  | ||||
|   Node* pHead = nullptr; | ||||
|   Node* pTail = nullptr; | ||||
|   size_t pSize = 0; | ||||
| }; | ||||
| }  // namespace PD | ||||
							
								
								
									
										80
									
								
								include/pd/core/sl/pair.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										80
									
								
								include/pd/core/sl/pair.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,41 +1,41 @@ | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/common.hpp> | ||||
|  | ||||
| namespace PD { | ||||
| template <typename T1, typename T2> | ||||
| class Pair { | ||||
|  public: | ||||
|   Pair() = default; | ||||
|   Pair(const T1& f, const T2& s) : First(f), Second(s) {} | ||||
|   Pair(T1&& f, T2&& s) : First(std::move(f)), Second(std::move(s)) {} | ||||
|   ~Pair() = default; | ||||
|  | ||||
|   T1 First; | ||||
|   T2 Second; | ||||
| }; | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/common.hpp> | ||||
|  | ||||
| namespace PD { | ||||
| template <typename T1, typename T2> | ||||
| class Pair { | ||||
|  public: | ||||
|   Pair() = default; | ||||
|   Pair(const T1& f, const T2& s) : First(f), Second(s) {} | ||||
|   Pair(T1&& f, T2&& s) : First(std::move(f)), Second(std::move(s)) {} | ||||
|   ~Pair() = default; | ||||
|  | ||||
|   T1 First; | ||||
|   T2 Second; | ||||
| }; | ||||
| }  // namespace PD | ||||
							
								
								
									
										64
									
								
								include/pd/core/sl/sl.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										64
									
								
								include/pd/core/sl/sl.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -1,33 +1,33 @@ | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/sl/allocator.hpp> | ||||
| #include <pd/core/sl/hashmap.hpp> | ||||
| #include <pd/core/sl/list.hpp> | ||||
| #include <pd/core/sl/pair.hpp> | ||||
| #include <pd/core/sl/stack.hpp> | ||||
| #include <pd/core/sl/tools.hpp> | ||||
| #pragma once | ||||
|  | ||||
| /* | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2024 - 2025 tobid7 | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
| */ | ||||
|  | ||||
| #include <pd/core/sl/allocator.hpp> | ||||
| #include <pd/core/sl/hashmap.hpp> | ||||
| #include <pd/core/sl/list.hpp> | ||||
| #include <pd/core/sl/pair.hpp> | ||||
| #include <pd/core/sl/stack.hpp> | ||||
| #include <pd/core/sl/tools.hpp> | ||||
| #include <pd/core/sl/vector.hpp> | ||||
							
								
								
									
										0
									
								
								include/pd/core/sl/stack.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								include/pd/core/sl/stack.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										0
									
								
								include/pd/core/sl/tools.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								include/pd/core/sl/tools.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										0
									
								
								include/pd/core/sl/vector.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								include/pd/core/sl/vector.hpp
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
		Reference in New Issue
	
	Block a user