LLVM 20.0.0git
Classes | Namespaces | Typedefs | Enumerations | Functions
YAMLParser.cpp File Reference
#include "llvm/Support/YAMLParser.h"
#include "llvm/ADT/AllocatorList.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/SMLoc.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/Unicode.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <map>
#include <memory>
#include <string>
#include <system_error>
#include <utility>

Go to the source code of this file.

Classes

struct  llvm::yaml::Token
 Token - A single YAML token. More...
 
class  llvm::yaml::Scanner
 Scans YAML tokens from a MemoryBuffer. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
namespace  llvm::yaml
 

Typedefs

using EncodingInfo = std::pair< UnicodeEncodingForm, unsigned >
 EncodingInfo - Holds the encoding type and length of the byte order mark if it exists.
 
using TokenQueueT = BumpPtrList< Token >
 
using UTF8Decoded = std::pair< uint32_t, unsigned >
 The Unicode scalar value of a UTF-8 minimal well-formed code unit subsequence and the subsequence's length in code units (uint8_t).
 

Enumerations

enum  UnicodeEncodingForm {
  UEF_UTF32_LE , UEF_UTF32_BE , UEF_UTF16_LE , UEF_UTF16_BE ,
  UEF_UTF8 , UEF_Unknown
}
 

Functions

static EncodingInfo getUnicodeEncoding (StringRef Input)
 getUnicodeEncoding - Reads up to the first 4 bytes to determine the Unicode encoding form of Input.
 
static UTF8Decoded decodeUTF8 (StringRef Range)
 
static void encodeUTF8 (uint32_t UnicodeScalarValue, SmallVectorImpl< char > &Result)
 encodeUTF8 - Encode UnicodeScalarValue in UTF-8 and append it to result.
 
static bool is_ns_hex_digit (const char C)
 
static bool is_ns_word_char (const char C)
 
static LLVM_ATTRIBUTE_NOINLINE bool wasEscaped (StringRef::iterator First, StringRef::iterator Position)
 
static unsigned getChompedLineBreaks (char ChompingIndicator, unsigned LineBreaks, StringRef Str)
 Get the number of line breaks after chomping.
 
static StringRef parseScalarValue (StringRef UnquotedValue, SmallVectorImpl< char > &Storage, StringRef LookupChars, std::function< StringRef(StringRef, SmallVectorImpl< char > &)> UnescapeCallback)
 parseScalarValue - A common parsing routine for all flow scalar styles.
 

Typedef Documentation

◆ EncodingInfo

EncodingInfo - Holds the encoding type and length of the byte order mark if it exists.

Length is in {0, 2, 3, 4}.

Definition at line 52 of file YAMLParser.cpp.

◆ TokenQueueT

Definition at line 164 of file YAMLParser.cpp.

◆ UTF8Decoded

using UTF8Decoded = std::pair<uint32_t, unsigned>

The Unicode scalar value of a UTF-8 minimal well-formed code unit subsequence and the subsequence's length in code units (uint8_t).

A length of 0 represents an error.

Definition at line 194 of file YAMLParser.cpp.

Enumeration Type Documentation

◆ UnicodeEncodingForm

Enumerator
UEF_UTF32_LE 

UTF-32 Little Endian.

UEF_UTF32_BE 

UTF-32 Big Endian.

UEF_UTF16_LE 

UTF-16 Little Endian.

UEF_UTF16_BE 

UTF-16 Big Endian.

UEF_UTF8 

UTF-8 or ascii.

UEF_Unknown 

Not a valid Unicode encoding.

Definition at line 41 of file YAMLParser.cpp.

Function Documentation

◆ decodeUTF8()

static UTF8Decoded decodeUTF8 ( StringRef  Range)
static

Definition at line 196 of file YAMLParser.cpp.

References End, and Range.

Referenced by llvm::yaml::escape().

◆ encodeUTF8()

static void encodeUTF8 ( uint32_t  UnicodeScalarValue,
SmallVectorImpl< char > &  Result 
)
static

encodeUTF8 - Encode UnicodeScalarValue in UTF-8 and append it to result.

Definition at line 579 of file YAMLParser.cpp.

Referenced by llvm::yaml::escape().

◆ getChompedLineBreaks()

static unsigned getChompedLineBreaks ( char  ChompingIndicator,
unsigned  LineBreaks,
StringRef  Str 
)
static

Get the number of line breaks after chomping.

Return the number of trailing line breaks to emit, depending on ChompingIndicator.

Definition at line 1591 of file YAMLParser.cpp.

◆ getUnicodeEncoding()

static EncodingInfo getUnicodeEncoding ( StringRef  Input)
static

getUnicodeEncoding - Reads up to the first 4 bytes to determine the Unicode encoding form of Input.

Parameters
InputA string of length 0 or more.
Returns
An EncodingInfo indicating the Unicode encoding form of the input and how long the byte order mark is if one exists.

Definition at line 60 of file YAMLParser.cpp.

References llvm::StringRef::empty(), llvm::StringRef::size(), UEF_Unknown, UEF_UTF16_BE, UEF_UTF16_LE, UEF_UTF32_BE, UEF_UTF32_LE, and UEF_UTF8.

◆ is_ns_hex_digit()

static bool is_ns_hex_digit ( const char  C)
static

Definition at line 1006 of file YAMLParser.cpp.

References llvm::CallingConv::C.

◆ is_ns_word_char()

static bool is_ns_word_char ( const char  C)
static

Definition at line 1008 of file YAMLParser.cpp.

References llvm::CallingConv::C.

◆ parseScalarValue()

static StringRef parseScalarValue ( StringRef  UnquotedValue,
SmallVectorImpl< char > &  Storage,
StringRef  LookupChars,
std::function< StringRef(StringRef, SmallVectorImpl< char > &)>  UnescapeCallback 
)
static

parseScalarValue - A common parsing routine for all flow scalar styles.

It handles line break characters by itself, adds regular content characters to the result, and forwards escaped sequences to the provided routine for the style-specific processing.

Parameters
UnquotedValue- An input value without quotation marks.
Storage- A storage for the result if the input value is multiline or contains escaped characters.
LookupChars- A set of special characters to search in the input string. Should include line break characters and the escape character specific for the processing scalar style, if any.
UnescapeCallback- This is called when the escape character is found in the input.
Returns
- The unfolded and unescaped value.

Definition at line 2054 of file YAMLParser.cpp.

References llvm::append_range(), assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorImpl< T >::clear(), llvm::StringRef::drop_front(), llvm::SmallVectorBase< Size_T >::empty(), llvm::StringRef::find_first_of(), llvm::StringRef::find_last_not_of(), I, llvm::StringRef::ltrim(), llvm::StringRef::npos, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorImpl< T >::reserve(), llvm::SmallVectorBase< Size_T >::size(), llvm::StringRef::size(), llvm::StringRef::substr(), and llvm::StringRef::take_front().

◆ wasEscaped()

static bool wasEscaped ( StringRef::iterator  First,
StringRef::iterator  Position 
)
static

Definition at line 1385 of file YAMLParser.cpp.

References assert(), llvm::First, and I.