Program Listing for File parsecontext.h#

Return to documentation for file (sdv_idl_compiler\parsecontext.h)

#ifndef PARSE_CONTEXT_H
#define PARSE_CONTEXT_H

#include "includes.h"
#include "source.h"
#include "codepos.h"
#include <filesystem>
#include <string>

class CContext
{
public:

    CContext(const std::filesystem::path& rpath, sdv::idl::IEntityContext::ELocation eLocation = sdv::idl::IEntityContext::ELocation::source);

    CContext(const char* szCode);

    CContext(const CContext&) = delete;

    CContext(CContext&& rContext) noexcept;

    ~CContext();

    CContext& operator=(const CContext&) = delete;

    CContext& operator=(CContext&& rContext) noexcept;

    bool operator==(const CContext& rContext) const;

    bool operator!=(const CContext& rContext) const;

    CSource& Source() { return m_source; }
    const CSource& Source() const { return m_source; }
    CCodePos& Code() { return m_code; }
    const CCodePos& Code() const { return m_code; }
    sdv::idl::IEntityContext::ELocation GetLocation() const { return m_eLocation; }

private:
    CSource                             m_source;
    CCodePos                            m_code;
    sdv::idl::IEntityContext::ELocation m_eLocation = sdv::idl::IEntityContext::ELocation::source;
};

using CContextPtr = std::shared_ptr<CContext>;

#endif // !defined(PARSE_CONTEXT_H)