|
@@ -61,12 +61,12 @@ Token::Token(token::Number value) noexcept: type{Type::Number}
|
|
|
|
|
|
Token::Token(token::Keyword value) noexcept: type{Type::Keyword}
|
|
Token::Token(token::Keyword value) noexcept: type{Type::Keyword}
|
|
{
|
|
{
|
|
- keyword = std::move(value);
|
|
|
|
|
|
+ new (&keyword) token::Keyword{std::move(value)};
|
|
}
|
|
}
|
|
|
|
|
|
Token::Token(token::Word value) noexcept: type{Type::Word}
|
|
Token::Token(token::Word value) noexcept: type{Type::Word}
|
|
{
|
|
{
|
|
- word = std::move(value);
|
|
|
|
|
|
+ new (&word) token::Word{std::move(value)};
|
|
}
|
|
}
|
|
|
|
|
|
Token::Token(Token const &src): type{src.type}
|
|
Token::Token(Token const &src): type{src.type}
|
|
@@ -77,10 +77,10 @@ Token::Token(Token const &src): type{src.type}
|
|
number = src.number;
|
|
number = src.number;
|
|
break;
|
|
break;
|
|
case Type::Keyword:
|
|
case Type::Keyword:
|
|
- keyword = src.keyword;
|
|
|
|
|
|
+ new (&keyword) token::Keyword{src.keyword};
|
|
break;
|
|
break;
|
|
case Type::Word:
|
|
case Type::Word:
|
|
- word = src.word;
|
|
|
|
|
|
+ new (&word) token::Word{src.word};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -93,12 +93,13 @@ Token::Token(Token &&src) noexcept: type{src.type}
|
|
number = src.number;
|
|
number = src.number;
|
|
break;
|
|
break;
|
|
case Type::Keyword:
|
|
case Type::Keyword:
|
|
- keyword = std::move(src.keyword);
|
|
|
|
|
|
+ new (&keyword) token::Keyword{std::move(src.keyword)};
|
|
break;
|
|
break;
|
|
case Type::Word:
|
|
case Type::Word:
|
|
- word = std::move(src.word);
|
|
|
|
|
|
+ new (&word) token::Word{std::move(src.word)};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
void Token::destroy() noexcept
|
|
void Token::destroy() noexcept
|
|
{
|
|
{
|
|
switch (type)
|
|
switch (type)
|
|
@@ -126,10 +127,10 @@ Token &Token::operator=(Token const &src)
|
|
number = src.number;
|
|
number = src.number;
|
|
break;
|
|
break;
|
|
case Type::Keyword:
|
|
case Type::Keyword:
|
|
- keyword = src.keyword;
|
|
|
|
|
|
+ new (&keyword) token::Keyword{src.keyword};
|
|
break;
|
|
break;
|
|
case Type::Word:
|
|
case Type::Word:
|
|
- word = src.word;
|
|
|
|
|
|
+ new (&word) token::Word{src.word};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return *this;
|
|
return *this;
|
|
@@ -147,10 +148,10 @@ Token &Token::operator=(Token &&src) noexcept
|
|
number = src.number;
|
|
number = src.number;
|
|
break;
|
|
break;
|
|
case Type::Keyword:
|
|
case Type::Keyword:
|
|
- keyword = std::move(src.keyword);
|
|
|
|
|
|
+ new (&keyword) token::Keyword{std::move(src.keyword)};
|
|
break;
|
|
break;
|
|
case Type::Word:
|
|
case Type::Word:
|
|
- word = std::move(src.word);
|
|
|
|
|
|
+ new (&word) token::Word{std::move(src.word)};
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return *this;
|
|
return *this;
|