{"id":26489953,"url":"https://github.com/taharachedi/custom_stack_with_redo_undo_feature-cpp","last_synced_at":"2025-03-20T07:53:39.822Z","repository":{"id":281301078,"uuid":"944869461","full_name":"taharachedi/Custom_Stack_With_REDO_UNDO_Feature-CPP","owner":"taharachedi","description":"A C++ class for managing strings with built-in undo/redo functionality using stacks. 🚀","archived":false,"fork":false,"pushed_at":"2025-03-08T06:06:27.000Z","size":0,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-08T06:28:34.438Z","etag":null,"topics":["datastructures","stack","string-manipulation","undo-redo"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taharachedi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-08T05:58:26.000Z","updated_at":"2025-03-08T06:06:31.000Z","dependencies_parsed_at":"2025-03-08T06:38:40.237Z","dependency_job_id":null,"html_url":"https://github.com/taharachedi/Custom_Stack_With_REDO_UNDO_Feature-CPP","commit_stats":null,"previous_names":["taharachedi/custom_stack_with_redo_undo_feature-cpp"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Stack_With_REDO_UNDO_Feature-CPP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Stack_With_REDO_UNDO_Feature-CPP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Stack_With_REDO_UNDO_Feature-CPP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taharachedi%2FCustom_Stack_With_REDO_UNDO_Feature-CPP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taharachedi","download_url":"https://codeload.github.com/taharachedi/Custom_Stack_With_REDO_UNDO_Feature-CPP/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244574743,"owners_count":20474818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["datastructures","stack","string-manipulation","undo-redo"],"created_at":"2025-03-20T07:53:39.195Z","updated_at":"2025-03-20T07:53:39.811Z","avatar_url":"https://github.com/taharachedi.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📌 Custom Stack with REDO \u0026 UNDO Feature⚡\n\n\u003e **A C++ class for managing strings with built-in undo/redo functionality using stacks. 🚀**\n\n---\n\n## 🌟 Project Overview\n\nThe `clsMyString` class provides a **string management system** with the ability to undo and redo changes. It uses **two stacks** to track modifications, allowing users to revert or reapply changes efficiently.\n\n### 🔹 Core Functionalities:\n- **Set and Get String Values** ✏️\n- **Undo Last Change** ⏪\n- **Redo Last Undone Change** ⏩\n\nThis implementation ensures a smooth user experience by maintaining a **history of modifications**, making it ideal for text editors, command-based interfaces, and other applications requiring version control.\n\n---\n\n## ✨ Features\n\n### 🔹 Basic String Operations\n- **`Set(Value)`**: Updates the string and stores the previous value for undo.\n- **`Get()`**: Retrieves the current string value.\n- **`Value` Property**: Accessor for the string (supports `get` and `set`).\n\n### 🔹 Undo/Redo Functionality\n- **`Undo()`**: Restores the string to its previous state.\n- **`Redo()`**: Reapplies the last undone change.\n\n---\n\n## 🚀 How It Works\n\n### 🔹 Managing String Changes\n- When `Set(Value)` is called, the current value is pushed onto the **Undo stack** before updating.\n- Performing an **Undo** moves the current value to the **Redo stack** and retrieves the last stored value from **Undo**.\n- Performing a **Redo** moves the current value back to **Undo** and retrieves the last stored value from **Redo**.\n\n### 🔹 Memory Management\n- Only stores necessary changes, preventing excessive memory usage.\n- Ensures efficient access through **stack-based** operations.\n\n---\n\n## 📚 Potential Enhancements\n\n- 🏗 **Multi-level Undo/Redo Optimization**: Allowing configurable history depth.\n- 🔍 **Change Tracking**: Storing granular changes rather than full strings.\n- 📂 **Persistent Storage**: Saving history to a file for session restoration.\n- 🚀 **Thread Safety**: Implementing concurrency control for multi-threaded environments.\n\n---\n\n## ⚙️ Technologies Used\n\n- **Language**: C++\n- **Stack-based Undo/Redo**: Efficient history tracking.\n- **Dynamic String Management**: Using `std::string` for flexible operations.\n\n---\n\n## 🎯 Learning Outcomes\n\nThis project demonstrates:\n- ✅ **Efficient string modification tracking**\n- ✅ **Undo/Redo functionality with stack data structures**\n- ✅ **Property-based access in C++ (`__declspec(property)`)**\n- ✅ **Memory-efficient implementation of reversible actions**\n\n---\n\n## 📜 License\n\nThis project is **open-source**. Feel free to modify and enhance it! 🚀\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! If you have ideas for improvements, submit a Pull Request.\n\n---\n\n## 🏁 Ready to Explore?\n\n### 🚀 How to Run\n1. **Download** the repository.\n2. **Include** `clsMyString.h` in your project.\n3. **Compile \u0026 Run** your C++ program (e.g., `g++ main.cpp -o output`).\n4. **Test** different string modifications, undo, and redo operations.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaharachedi%2Fcustom_stack_with_redo_undo_feature-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaharachedi%2Fcustom_stack_with_redo_undo_feature-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaharachedi%2Fcustom_stack_with_redo_undo_feature-cpp/lists"}