Bash++
Bash++ compiler internal documentation
bpp_object_assignment.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2025 Andrew S. Rightenburg
3 * Bash++: Bash with classes
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
7#pragma once
8
9#include <string>
10#include <memory>
11
12#include "bpp.h"
13#include "bpp_string.h"
14
15namespace bpp {
16
25 private:
26 std::string lvalue;
27 std::string rvalue;
28 bool lvalue_nonprimitive = false;
29 bool rvalue_nonprimitive = false;
30 std::shared_ptr<bpp_entity> lvalue_object;
31 std::shared_ptr<bpp_entity> rvalue_object;
32 bool adding = false;
33 bool rvalue_array = false;
34 public:
35 void set_lvalue(const std::string& lvalue);
36 void set_rvalue(const std::string& rvalue);
37 void set_lvalue_nonprimitive(bool is_nonprimitive);
38 void set_rvalue_nonprimitive(bool is_nonprimitive);
39 void set_lvalue_object(std::shared_ptr<bpp_entity> object);
40 void set_rvalue_object(std::shared_ptr<bpp_entity> object);
41 void set_adding(bool is_adding);
42 void set_rvalue_array(bool is_array);
43
44 std::string get_lvalue() const;
45 std::string get_rvalue() const;
46 bool lvalue_is_nonprimitive() const;
47 bool rvalue_is_nonprimitive() const;
48 std::shared_ptr<bpp_entity> get_lvalue_object() const;
49 std::shared_ptr<bpp_entity> get_rvalue_object() const;
50 bool is_adding() const;
51 bool rvalue_is_array() const;
52};
53
54} // namespace bpp
An object assignment statement in Bash++.
Definition bpp_object_assignment.h:24
void set_rvalue_array(bool is_array)
Definition bpp_object_assignment.cpp:39
bool rvalue_array
Definition bpp_object_assignment.h:33
bool rvalue_is_array() const
Definition bpp_object_assignment.cpp:71
void set_adding(bool is_adding)
Definition bpp_object_assignment.cpp:35
bool adding
Definition bpp_object_assignment.h:32
std::shared_ptr< bpp_entity > lvalue_object
Definition bpp_object_assignment.h:30
void set_rvalue_nonprimitive(bool is_nonprimitive)
Definition bpp_object_assignment.cpp:23
bool rvalue_nonprimitive
Definition bpp_object_assignment.h:29
std::shared_ptr< bpp_entity > get_lvalue_object() const
Definition bpp_object_assignment.cpp:59
void set_lvalue(const std::string &lvalue)
Definition bpp_object_assignment.cpp:11
bool rvalue_is_nonprimitive() const
Definition bpp_object_assignment.cpp:55
void set_lvalue_object(std::shared_ptr< bpp_entity > object)
Definition bpp_object_assignment.cpp:27
std::string get_rvalue() const
Definition bpp_object_assignment.cpp:47
std::string get_lvalue() const
Definition bpp_object_assignment.cpp:43
void set_lvalue_nonprimitive(bool is_nonprimitive)
Definition bpp_object_assignment.cpp:19
void set_rvalue(const std::string &rvalue)
Definition bpp_object_assignment.cpp:15
std::shared_ptr< bpp_entity > rvalue_object
Definition bpp_object_assignment.h:31
std::string lvalue
Definition bpp_object_assignment.h:26
bool lvalue_is_nonprimitive() const
Definition bpp_object_assignment.cpp:51
std::string rvalue
Definition bpp_object_assignment.h:27
bool lvalue_nonprimitive
Definition bpp_object_assignment.h:28
bool is_adding() const
Definition bpp_object_assignment.cpp:67
std::shared_ptr< bpp_entity > get_rvalue_object() const
Definition bpp_object_assignment.cpp:63
void set_rvalue_object(std::shared_ptr< bpp_entity > object)
Definition bpp_object_assignment.cpp:31
The practical difference between bpp_code_entity and bpp_string is how we handle the code buffers.
Definition bpp_string.h:77
Definition bash_case.cpp:9