Skip to content

Commit 344f77f

Browse files
committed
the "dont copy memory" update
1 parent d6dd2bd commit 344f77f

21 files changed

+41
-31
lines changed

include/rift/config.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ namespace rift {
4242
/// @brief Sets a global variable.
4343
/// @param name the name of the variable
4444
/// @param value the value of the variable
45-
void setGlobal(std::string const& name, Value value) noexcept {
45+
void setGlobal(std::string const& name, Value&& value) noexcept {
4646
m_globals[name] = std::move(value);
4747
}
4848

include/rift/errors/compile.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace rift {
99
/// @brief Represents an error that occurred during compilation (lexing/parsing).
1010
class [[nodiscard]] CompileError {
1111
public:
12-
CompileError(std::string source, std::string message, size_t index, size_t endIndex) noexcept :
12+
CompileError(std::string&& source, std::string&& message, size_t index, size_t endIndex) noexcept :
1313
m_source(std::move(source)), m_message(std::move(message)), m_index(index), m_endIndex(endIndex) {
1414
if (m_index + 1 == m_endIndex) {
1515
m_index++;

include/rift/errors/runtime.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace rift {
99
/// @brief Represents an error that occurred during compilation (lexing/parsing).
1010
class [[nodiscard]] RuntimeError {
1111
public:
12-
RuntimeError(std::string message, size_t index, size_t endIndex) noexcept :
12+
RuntimeError(std::string&& message, size_t index, size_t endIndex) noexcept :
1313
m_message(std::move(message)), m_index(index), m_endIndex(endIndex) {
1414
if (m_index + 1 == m_endIndex) {
1515
m_index++;

include/rift/nodes/accessor.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace rift {
1111

1212
class AccessorNode final : public Node {
1313
public:
14-
explicit AccessorNode(std::unique_ptr<Node> node, std::string name, size_t fromIndex, size_t toIndex) noexcept
14+
explicit AccessorNode(std::unique_ptr<Node>&& node, std::string&& name, size_t fromIndex, size_t toIndex) noexcept
1515
: Node(fromIndex, toIndex), m_node(std::move(node)), m_name(std::move(name)) { m_type = Type::Accessor; }
1616

1717
[[nodiscard]] std::string toDebugString() const noexcept override {

include/rift/nodes/assign.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace rift {
88

99
class AssignNode final : public Node {
1010
public:
11-
explicit AssignNode(std::string name, std::unique_ptr<Node> value, size_t fromIndex, size_t toIndex) noexcept
11+
explicit AssignNode(std::string&& name, std::unique_ptr<Node>&& value, size_t fromIndex, size_t toIndex) noexcept
1212
: Node(fromIndex, toIndex), m_name(std::move(name)), m_value(std::move(value)) { m_type = Type::Assign; }
1313

1414
[[nodiscard]] std::string toDebugString() const noexcept override {

include/rift/nodes/binary.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace rift {
1111

1212
class BinaryNode final : public Node {
1313
public:
14-
explicit BinaryNode(std::unique_ptr<Node> lhs, TokenType op, std::unique_ptr<Node> rhs, size_t fromIndex, size_t toIndex) noexcept
14+
explicit BinaryNode(std::unique_ptr<Node>&& lhs, TokenType op, std::unique_ptr<Node>&& rhs, size_t fromIndex, size_t toIndex) noexcept
1515
: Node(fromIndex, toIndex), m_lhs(std::move(lhs)), m_rhs(std::move(rhs)), m_op(op) { m_type = Type::Binary; }
1616

1717
[[nodiscard]] std::string toDebugString() const noexcept override {

include/rift/nodes/call.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ namespace rift {
88

99
class CallNode final : public Node {
1010
public:
11-
explicit CallNode(std::unique_ptr<Node> node, std::vector<std::unique_ptr<Node>> args, size_t fromIndex, size_t toIndex) noexcept
11+
explicit CallNode(std::unique_ptr<Node>&& node, std::vector<std::unique_ptr<Node>>&& args, size_t fromIndex, size_t toIndex) noexcept
1212
: Node(fromIndex, toIndex), m_node(std::move(node)), m_args(std::move(args)) { m_type = Type::Call; }
1313

1414
[[nodiscard]] std::string toDebugString() const noexcept override {
1515
std::string result = fmt::format("CallNode({}", m_node->toDebugString());
16-
for (size_t i = 0; i < m_args.size(); ++i) {
16+
for (const auto & m_arg : m_args) {
1717
result += ", ";
18-
result += m_args[i]->toDebugString();
18+
result += m_arg->toDebugString();
1919
}
2020
return result + ")";
2121
}

include/rift/nodes/forloop.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace rift {
88

99
class ForNode final : public Node {
1010
public:
11-
explicit ForNode(std::string varName, std::unique_ptr<Node> iterator, std::unique_ptr<Node> body, size_t fromIndex, size_t toIndex)
11+
explicit ForNode(std::string&& varName, std::unique_ptr<Node>&& iterator, std::unique_ptr<Node>&& body, size_t fromIndex, size_t toIndex)
1212
: Node(fromIndex, toIndex), m_varName(std::move(varName)), m_iterator(std::move(iterator)), m_body(std::move(body)) { m_type = Type::ForLoop; }
1313

1414
[[nodiscard]] std::string toDebugString() const noexcept override {

include/rift/nodes/identifier.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace rift {
88

99
class IdentifierNode final : public Node {
1010
public:
11-
explicit IdentifierNode(std::string name, size_t fromIndex, size_t toIndex) noexcept
11+
explicit IdentifierNode(std::string&& name, size_t fromIndex, size_t toIndex) noexcept
1212
: Node(fromIndex, toIndex), m_name(std::move(name)) { m_type = Type::Identifier; }
1313

1414
explicit IdentifierNode(Token const& token) noexcept

include/rift/nodes/indexer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace rift {
88

99
class IndexerNode final : public Node {
1010
public:
11-
explicit IndexerNode(std::unique_ptr<Node> node, std::unique_ptr<Node> index, size_t fromIndex, size_t toIndex) noexcept
11+
explicit IndexerNode(std::unique_ptr<Node>&& node, std::unique_ptr<Node>&& index, size_t fromIndex, size_t toIndex) noexcept
1212
: Node(fromIndex, toIndex), m_node(std::move(node)), m_index(std::move(index)) { m_type = Type::Indexer; }
1313

1414
[[nodiscard]] std::string toDebugString() const noexcept override {

0 commit comments

Comments
 (0)