#pragma once
#include "Hash.h"
#include <panda/string_view.h>

namespace xs {

using xs::my_perl;

struct Scope {
    struct Hints {
        static void set    (panda::string_view name, const Sv& value);
        static void remove (panda::string_view name);

        static bool exists (panda::string_view name) {
            #if PERL_VERSION >= 34
                return cop_hints_exists_pvn(PL_curcop, name.data(), name.length(), 0, 0);
            #else
                #ifndef REFCOUNTED_HE_EXISTS
                    #define REFCOUNTED_HE_EXISTS 0x00000002
                #endif
                return cop_hints_fetch_pvn(PL_curcop, name.data(), name.length(), 0, REFCOUNTED_HE_EXISTS);
            #endif
        }

        static Scalar get (panda::string_view name) {
            return cop_hints_fetch_pvn(PL_curcop, name.data(), name.length(), 0, 0);
        }

        static Hash get ();

        static Scalar get_ct (panda::string_view name);
    };
};

}