diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/llvm12/tools/llvm-rc/ResourceScriptToken.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/llvm12/tools/llvm-rc/ResourceScriptToken.h')
-rw-r--r-- | contrib/libs/llvm12/tools/llvm-rc/ResourceScriptToken.h | 162 |
1 files changed, 81 insertions, 81 deletions
diff --git a/contrib/libs/llvm12/tools/llvm-rc/ResourceScriptToken.h b/contrib/libs/llvm12/tools/llvm-rc/ResourceScriptToken.h index cc8ca48b49..d821f10138 100644 --- a/contrib/libs/llvm12/tools/llvm-rc/ResourceScriptToken.h +++ b/contrib/libs/llvm12/tools/llvm-rc/ResourceScriptToken.h @@ -1,81 +1,81 @@ -//===-- ResourceScriptToken.h -----------------------------------*- C++-*-===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===---------------------------------------------------------------------===// -// -// This declares the .rc script tokens and defines an interface for tokenizing -// the input data. The list of available tokens is located at -// ResourceScriptTokenList.def. -// -// Note that the tokenizer does not support preprocessor directives. The -// preprocessor should do its work on the .rc file before running llvm-rc. -// -// As for now, it is possible to parse ASCII files only (the behavior on -// UTF files might be undefined). However, it already consumes UTF-8 BOM, if -// there is any. Thus, ASCII-compatible UTF-8 files are tokenized correctly. -// -// Ref: msdn.microsoft.com/en-us/library/windows/desktop/aa380599(v=vs.85).aspx -// -//===---------------------------------------------------------------------===// - -#ifndef LLVM_TOOLS_LLVMRC_RESOURCESCRIPTTOKEN_H -#define LLVM_TOOLS_LLVMRC_RESOURCESCRIPTTOKEN_H - -#include "llvm/ADT/StringRef.h" -#include "llvm/Support/Error.h" - -#include <cstdint> -#include <map> -#include <string> -#include <vector> - -namespace llvm { - -// A definition of a single resource script token. Each token has its kind -// (declared in ResourceScriptTokenList) and holds a value - a reference -// representation of the token. -// RCToken does not claim ownership on its value. A memory buffer containing -// the token value should be stored in a safe place and cannot be freed -// nor reallocated. -class RCToken { -public: - enum class Kind { -#define TOKEN(Name) Name, -#define SHORT_TOKEN(Name, Ch) Name, -#include "ResourceScriptTokenList.def" - }; - - RCToken(RCToken::Kind RCTokenKind, StringRef Value); - - // Get an integer value of the integer token. - uint32_t intValue() const; - bool isLongInt() const; - - StringRef value() const; - Kind kind() const; - - // Check if a token describes a binary operator. - bool isBinaryOp() const; - -private: - Kind TokenKind; - StringRef TokenValue; -}; - -// Tokenize Input. -// In case no error occurred, the return value contains -// tokens in order they were in the input file. -// In case of any error, the return value contains -// a textual representation of error. -// -// Tokens returned by this function hold only references to the parts -// of the Input. Memory buffer containing Input cannot be freed, -// modified or reallocated. -Expected<std::vector<RCToken>> tokenizeRC(StringRef Input); - -} // namespace llvm - -#endif +//===-- ResourceScriptToken.h -----------------------------------*- C++-*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===---------------------------------------------------------------------===// +// +// This declares the .rc script tokens and defines an interface for tokenizing +// the input data. The list of available tokens is located at +// ResourceScriptTokenList.def. +// +// Note that the tokenizer does not support preprocessor directives. The +// preprocessor should do its work on the .rc file before running llvm-rc. +// +// As for now, it is possible to parse ASCII files only (the behavior on +// UTF files might be undefined). However, it already consumes UTF-8 BOM, if +// there is any. Thus, ASCII-compatible UTF-8 files are tokenized correctly. +// +// Ref: msdn.microsoft.com/en-us/library/windows/desktop/aa380599(v=vs.85).aspx +// +//===---------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVMRC_RESOURCESCRIPTTOKEN_H +#define LLVM_TOOLS_LLVMRC_RESOURCESCRIPTTOKEN_H + +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/Error.h" + +#include <cstdint> +#include <map> +#include <string> +#include <vector> + +namespace llvm { + +// A definition of a single resource script token. Each token has its kind +// (declared in ResourceScriptTokenList) and holds a value - a reference +// representation of the token. +// RCToken does not claim ownership on its value. A memory buffer containing +// the token value should be stored in a safe place and cannot be freed +// nor reallocated. +class RCToken { +public: + enum class Kind { +#define TOKEN(Name) Name, +#define SHORT_TOKEN(Name, Ch) Name, +#include "ResourceScriptTokenList.def" + }; + + RCToken(RCToken::Kind RCTokenKind, StringRef Value); + + // Get an integer value of the integer token. + uint32_t intValue() const; + bool isLongInt() const; + + StringRef value() const; + Kind kind() const; + + // Check if a token describes a binary operator. + bool isBinaryOp() const; + +private: + Kind TokenKind; + StringRef TokenValue; +}; + +// Tokenize Input. +// In case no error occurred, the return value contains +// tokens in order they were in the input file. +// In case of any error, the return value contains +// a textual representation of error. +// +// Tokens returned by this function hold only references to the parts +// of the Input. Memory buffer containing Input cannot be freed, +// modified or reallocated. +Expected<std::vector<RCToken>> tokenizeRC(StringRef Input); + +} // namespace llvm + +#endif |