blob: a7a2f87b55f7b273efeea9aa0dec20c14912de67 [file] [log] [blame]
alokp@chromium.org3a01d1b2011-08-30 05:10:53 +00001//
2// Copyright (c) 2011 The ANGLE Project Authors. All rights reserved.
3// Use of this source code is governed by a BSD-style license that can be
4// found in the LICENSE file.
5//
6
Corentin Wallez054f7ed2016-09-20 17:15:59 -04007#include "compiler/preprocessor/Macro.h"
alokp@chromium.org3a01d1b2011-08-30 05:10:53 +00008
Corentin Wallez054f7ed2016-09-20 17:15:59 -04009#include "common/angleutils.h"
10#include "compiler/preprocessor/Token.h"
alokp@chromium.org3a01d1b2011-08-30 05:10:53 +000011
Geoff Lang197d5292018-04-25 14:29:00 -040012namespace angle
13{
14
alokp@chromium.org3a01d1b2011-08-30 05:10:53 +000015namespace pp
16{
17
Jamie Madillb980c562018-11-27 11:34:27 -050018Macro::Macro() : predefined(false), disabled(false), expansionCount(0), type(kTypeObj) {}
Jamie Madillacf2f3a2017-11-21 19:22:44 -050019
Jamie Madillb980c562018-11-27 11:34:27 -050020Macro::~Macro() {}
Jamie Madillacf2f3a2017-11-21 19:22:44 -050021
Zhenyao Mod526f982014-05-13 14:51:19 -070022bool Macro::equals(const Macro &other) const
alokp@chromium.org3a01d1b2011-08-30 05:10:53 +000023{
Jamie Madillf832c9d2016-12-12 17:38:48 -050024 return (type == other.type) && (name == other.name) && (parameters == other.parameters) &&
alokp@chromium.org98d04ec2012-05-21 22:47:20 +000025 (replacements == other.replacements);
alokp@chromium.org3a01d1b2011-08-30 05:10:53 +000026}
27
Olli Etuaho6cb4c7f2015-08-13 11:27:17 +030028void PredefineMacro(MacroSet *macroSet, const char *name, int value)
29{
Olli Etuaho6cb4c7f2015-08-13 11:27:17 +030030 Token token;
31 token.type = Token::CONST_INT;
Corentin Wallez054f7ed2016-09-20 17:15:59 -040032 token.text = ToString(value);
Olli Etuaho6cb4c7f2015-08-13 11:27:17 +030033
Olli Etuaho47c27e82017-01-17 15:29:35 +000034 std::shared_ptr<Macro> macro = std::make_shared<Macro>();
35 macro->predefined = true;
36 macro->type = Macro::kTypeObj;
37 macro->name = name;
38 macro->replacements.push_back(token);
Olli Etuaho6cb4c7f2015-08-13 11:27:17 +030039
40 (*macroSet)[name] = macro;
41}
42
alokp@chromium.org3a01d1b2011-08-30 05:10:53 +000043} // namespace pp
Geoff Lang197d5292018-04-25 14:29:00 -040044
45} // namespace angle