-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathwasm_runner.h
More file actions
30 lines (25 loc) · 1.29 KB
/
Copy pathwasm_runner.h
File metadata and controls
30 lines (25 loc) · 1.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#pragma once
#include "embedded_runner.h"
#include <QMutex>
// ─────────────────────────────────────────────────────────────────────────────
// WasmRunner — WASM-based C/C++ cross-platform runner
//
// Compiles the given source via Wasmer's clang/clang WASM package,
// runs the resulting binary in Wasmer, and captures stdout/stderr.
// ─────────────────────────────────────────────────────────────────────────────
class WasmRunner : public EmbeddedRunner
{
public:
WasmRunner(bool isCpp = false);
Result execute(const QString &code,
const QString &stdinInput,
volatile bool *abort = nullptr,
const QMap<QString, QString> &additionalFiles = {}) override;
QString languageId() const override { return m_isCpp ? "cpp" : "c"; }
QString languageName() const override { return m_isCpp ? "C++" : "C"; }
private:
bool m_isCpp;
QMutex m_mutex;
QString getWasmerExecutable() const;
QString getWasiSdkCompiler() const;
};