Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
Move.h
Go to the documentation of this file.
1
6#pragma once
7
9#include <vector>
10
11namespace cli {
12
13namespace builtin {
14
19class Move {
20public:
21 static std::shared_ptr < abstraction::Value > move ( const std::vector < std::shared_ptr < abstraction::Value > > & params ) {
22 if ( params [ 0 ]->isTemporary ( ) ) {
24 if ( abstraction::TypeQualifiers::isConst ( params [ 0 ]->getTypeQualifiers ( ) ) )
25 typeQualifiers = typeQualifiers | abstraction::TypeQualifiers::TypeQualifierSet::CONST;
26
27 return params [ 0 ]->clone ( typeQualifiers, true );
28 } else {
30 if ( abstraction::TypeQualifiers::isConst ( params [ 0 ]->getTypeQualifiers ( ) ) )
31 typeQualifiers = typeQualifiers | abstraction::TypeQualifiers::TypeQualifierSet::CONST;
32
33 return std::make_shared < abstraction::ValueReference > ( params [ 0 ], typeQualifiers, true );
34 }
35 }
36};
37
38} /* namespace builtin */
39
40} /* namespace cli */
41
TypeQualifierSet
Definition: TypeQualifiers.hpp:15
static constexpr bool isConst(TypeQualifierSet arg)
Definition: TypeQualifiers.hpp:35
Definition: Move.h:19
static std::shared_ptr< abstraction::Value > move(const std::vector< std::shared_ptr< abstraction::Value > > &params)
Definition: Move.h:21
Definition: Arg.h:11