mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-19 03:07:58 -05:00
Set item type features when setting type
This commit is contained in:
@ -12,7 +12,7 @@ GenericBoolPropertySequence::GenericBoolPropertySequence(std::string keywordName
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.KeywordIgnoreCase(std::move(keywordName)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Integer().Capture(CAPTURE_VALUE)
|
||||
});
|
||||
}
|
||||
@ -22,6 +22,6 @@ void GenericBoolPropertySequence::ProcessMatch(MenuFileParserState* state, Seque
|
||||
if (m_set_callback)
|
||||
{
|
||||
const auto value = result.NextCapture(CAPTURE_VALUE).IntegerValue();
|
||||
m_set_callback(state, value > 0);
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos(), value > 0);
|
||||
}
|
||||
}
|
||||
|
@ -10,10 +10,11 @@ namespace menu
|
||||
class GenericBoolPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, bool value)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos, bool value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_VALUE = 1;
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
static constexpr auto CAPTURE_VALUE = 2;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
|
@ -12,7 +12,7 @@ GenericColorPropertySequence::GenericColorPropertySequence(std::string keywordNa
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.KeywordIgnoreCase(std::move(keywordName)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Numeric().Capture(CAPTURE_R),
|
||||
create.Numeric().Capture(CAPTURE_G),
|
||||
create.Numeric().Capture(CAPTURE_B),
|
||||
@ -30,6 +30,6 @@ void GenericColorPropertySequence::ProcessMatch(MenuFileParserState* state, Sequ
|
||||
color.b = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_B));
|
||||
color.a = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_A));
|
||||
|
||||
m_set_callback(state, color);
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos(), color);
|
||||
}
|
||||
}
|
||||
|
@ -11,13 +11,14 @@ namespace menu
|
||||
class GenericColorPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, CommonColor value)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos, CommonColor value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_R = 1;
|
||||
static constexpr auto CAPTURE_G = 2;
|
||||
static constexpr auto CAPTURE_B = 3;
|
||||
static constexpr auto CAPTURE_A = 4;
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
static constexpr auto CAPTURE_R = 2;
|
||||
static constexpr auto CAPTURE_G = 3;
|
||||
static constexpr auto CAPTURE_B = 4;
|
||||
static constexpr auto CAPTURE_A = 5;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
|
@ -19,7 +19,7 @@ std::unique_ptr<GenericExpressionPropertySequence> GenericExpressionPropertySequ
|
||||
|
||||
const MenuMatcherFactory create(result.get());
|
||||
result->AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keyword)),
|
||||
create.KeywordIgnoreCase(std::move(keyword)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Label(MenuCommonMatchers::LABEL_EXPRESSION),
|
||||
create.Optional(create.Char(';'))
|
||||
});
|
||||
@ -37,7 +37,7 @@ std::unique_ptr<GenericExpressionPropertySequence> GenericExpressionPropertySequ
|
||||
keywordMatchers.emplace_back(create.KeywordIgnoreCase(std::move(keyword)));
|
||||
|
||||
result->AddMatchers({
|
||||
create.And(std::move(keywordMatchers)),
|
||||
create.And(std::move(keywordMatchers)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Label(MenuCommonMatchers::LABEL_EXPRESSION),
|
||||
create.Optional(create.Char(';'))
|
||||
});
|
||||
@ -51,12 +51,12 @@ std::unique_ptr<GenericExpressionPropertySequence> GenericExpressionPropertySequ
|
||||
|
||||
const MenuMatcherFactory create(result.get());
|
||||
result->AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keyword)),
|
||||
create.KeywordIgnoreCase(std::move(keyword)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Or({
|
||||
create.And({
|
||||
create.KeywordIgnoreCase("when"),
|
||||
create.Char('('),
|
||||
create.Label(MenuCommonMatchers::LABEL_EXPRESSION).Capture(CAPTURE_VALUE),
|
||||
create.Label(MenuCommonMatchers::LABEL_EXPRESSION),
|
||||
create.Char(')')
|
||||
}),
|
||||
create.Label(MenuCommonMatchers::LABEL_EXPRESSION)
|
||||
@ -72,6 +72,6 @@ void GenericExpressionPropertySequence::ProcessMatch(MenuFileParserState* state,
|
||||
if (m_set_callback)
|
||||
{
|
||||
auto expression = MenuCommonMatchers::ProcessExpression(state, result);
|
||||
m_set_callback(state, std::move(expression));
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos(), std::move(expression));
|
||||
}
|
||||
}
|
||||
|
@ -11,10 +11,10 @@ namespace menu
|
||||
class GenericExpressionPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, std::unique_ptr<ICommonExpression> value)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos, std::unique_ptr<ICommonExpression> value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_VALUE = 1;
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
|
@ -12,7 +12,7 @@ GenericFloatingPointPropertySequence::GenericFloatingPointPropertySequence(std::
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.KeywordIgnoreCase(std::move(keywordName)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Numeric().Capture(CAPTURE_VALUE)
|
||||
});
|
||||
}
|
||||
@ -22,6 +22,6 @@ void GenericFloatingPointPropertySequence::ProcessMatch(MenuFileParserState* sta
|
||||
if (m_set_callback)
|
||||
{
|
||||
const auto value = MenuMatcherFactory::TokenNumericFloatingPointValue(result.NextCapture(CAPTURE_VALUE));
|
||||
m_set_callback(state, value);
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos(), value);
|
||||
}
|
||||
}
|
||||
|
@ -10,10 +10,11 @@ namespace menu
|
||||
class GenericFloatingPointPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, double value)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos, double value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_VALUE = 1;
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
static constexpr auto CAPTURE_VALUE = 2;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
|
@ -12,7 +12,7 @@ GenericIntPropertySequence::GenericIntPropertySequence(std::string keywordName,
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.KeywordIgnoreCase(std::move(keywordName)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Integer().Capture(CAPTURE_VALUE)
|
||||
});
|
||||
}
|
||||
@ -22,6 +22,6 @@ void GenericIntPropertySequence::ProcessMatch(MenuFileParserState* state, Sequen
|
||||
if (m_set_callback)
|
||||
{
|
||||
const auto value = result.NextCapture(CAPTURE_VALUE).IntegerValue();
|
||||
m_set_callback(state, value);
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos(), value);
|
||||
}
|
||||
}
|
||||
|
@ -10,10 +10,11 @@ namespace menu
|
||||
class GenericIntPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, int value)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos, int value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_VALUE = 1;
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
static constexpr auto CAPTURE_VALUE = 2;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
|
@ -12,14 +12,14 @@ GenericKeywordPropertySequence::GenericKeywordPropertySequence(std::string keywo
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.KeywordIgnoreCase(std::move(keywordName)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
});
|
||||
}
|
||||
|
||||
void GenericKeywordPropertySequence::ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const
|
||||
{
|
||||
if(m_set_callback)
|
||||
if (m_set_callback)
|
||||
{
|
||||
m_set_callback(state);
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos());
|
||||
}
|
||||
}
|
||||
|
@ -10,9 +10,11 @@ namespace menu
|
||||
class GenericKeywordPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
protected:
|
||||
|
@ -12,7 +12,7 @@ GenericMenuEventHandlerSetPropertySequence::GenericMenuEventHandlerSetPropertySe
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.KeywordIgnoreCase(std::move(keywordName)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Char('{')
|
||||
});
|
||||
}
|
||||
@ -24,6 +24,6 @@ void GenericMenuEventHandlerSetPropertySequence::ProcessMatch(MenuFileParserStat
|
||||
auto newEventHandlerSet = std::make_unique<CommonEventHandlerSet>();
|
||||
state->m_current_event_handler_set = newEventHandlerSet.get();
|
||||
state->m_current_nested_event_handler_set = newEventHandlerSet.get();
|
||||
m_set_callback(state, std::move(newEventHandlerSet));
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos(), std::move(newEventHandlerSet));
|
||||
}
|
||||
}
|
||||
|
@ -11,10 +11,10 @@ namespace menu
|
||||
class GenericMenuEventHandlerSetPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, std::unique_ptr<CommonEventHandlerSet> value)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos, std::unique_ptr<CommonEventHandlerSet> value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_VALUE = 1;
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
|
@ -12,7 +12,7 @@ GenericStringPropertySequence::GenericStringPropertySequence(std::string keyword
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.KeywordIgnoreCase(std::move(keywordName)).Capture(CAPTURE_FIRST_TOKEN),
|
||||
create.Text().Capture(CAPTURE_VALUE)
|
||||
});
|
||||
}
|
||||
@ -22,6 +22,6 @@ void GenericStringPropertySequence::ProcessMatch(MenuFileParserState* state, Seq
|
||||
if (m_set_callback)
|
||||
{
|
||||
const auto& value = MenuMatcherFactory::TokenTextValue(result.NextCapture(CAPTURE_VALUE));
|
||||
m_set_callback(state, value);
|
||||
m_set_callback(state, result.NextCapture(CAPTURE_FIRST_TOKEN).GetPos(), value);
|
||||
}
|
||||
}
|
||||
|
@ -10,10 +10,11 @@ namespace menu
|
||||
class GenericStringPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const std::string& value)>;
|
||||
using callback_t = std::function<void(MenuFileParserState* state, const TokenPos& pos, const std::string& value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_VALUE = 1;
|
||||
static constexpr auto CAPTURE_FIRST_TOKEN = 1;
|
||||
static constexpr auto CAPTURE_VALUE = 2;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
|
Reference in New Issue
Block a user