diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e050ba0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/build +/.cache \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..8e43c93 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 3.10) + +project(ZtAsyncio CXX) + +set(CMAKE_CXX_STANDARD 26 + CMAKE_CXX_STANDARD_REQUIRED ON + CMAKE_CXX_EXTENSIONS OFF) + +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +add_executable(test1 + src/test1.cpp +) \ No newline at end of file diff --git a/include/asyncio.hpp b/include/asyncio.hpp new file mode 100644 index 0000000..60c95f0 --- /dev/null +++ b/include/asyncio.hpp @@ -0,0 +1,24 @@ +#include +#include +namespace zt{ + template + struct Task{ + struct promise_type; + struct promise_type{ + std::promise promise_; + void return_value(T value){promise_.set_value(value);} + auto initial_suspend(){ + return std::suspend_always{}; + } + auto final_suspend()noexcept{ + return std::suspend_always{}; + } + auto get_return_object(){ + return Task{}; + } + void unhandled_exception(){ + return; + } + }; + }; +} \ No newline at end of file diff --git a/src/test1.cpp b/src/test1.cpp new file mode 100644 index 0000000..2f50e88 --- /dev/null +++ b/src/test1.cpp @@ -0,0 +1,15 @@ +#include +#include +#include +#include +#include "asyncio.hpp" + +zt::Task return0(){ + std::println(std::cout,"return 0;"); + co_return 0; +} + +int main(){ + auto ret = return0(); + ret.promise_type +} \ No newline at end of file