#pragma once
#include "fiber.hpp"
#include <deque>
#include <iostream>

class scheduler {
public:
    std::deque<Fiber*> fibers_;  
    Context context_;            
    Context* current_context_;    
    int* data_;                   

    scheduler() : data_(nullptr) {}

    void spawn(Fiber* fiber);      
    void do_it();                 
    void fiber_exit(Context* current_context); 
    Context* get_current_context(); 


    int* get_data() {
        return data_;
    }

    void set_data(int* data) {
        data_ = data;
    }
};

extern scheduler s;