// // Copyright (c) 2011 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // #ifndef COMPILER_PREPROCESSOR_MACRO_H_ #define COMPILER_PREPROCESSOR_MACRO_H_ #include #include #include "common/angleutils.h" #include "Token.h" namespace pp { class Macro { public: enum Type { kTypeObj, kTypeFunc }; // Takes ownership of pointer parameters. Macro(Type type, std::string* name, TokenVector* parameters, TokenVector* replacements); ~Macro(); Type type() const { return mType; } const std::string* identifier() const { return mName; } const TokenVector* parameters() const { return mParameters; } const TokenVector* replacements() const { return mReplacements; } private: DISALLOW_COPY_AND_ASSIGN(Macro); Type mType; std::string* mName; TokenVector* mParameters; TokenVector* mReplacements; }; } // namespace pp #endif COMPILER_PREPROCESSOR_MACRO_H_