1*4ba319b5SDimitry Andric //===--- XRayInstr.cpp ------------------------------------------*- C++ -*-===//
2*4ba319b5SDimitry Andric //
3*4ba319b5SDimitry Andric //                     The LLVM Compiler Infrastructure
4*4ba319b5SDimitry Andric //
5*4ba319b5SDimitry Andric // This file is distributed under the University of Illinois Open Source
6*4ba319b5SDimitry Andric // License. See LICENSE.TXT for details.
7*4ba319b5SDimitry Andric //
8*4ba319b5SDimitry Andric //===----------------------------------------------------------------------===//
9*4ba319b5SDimitry Andric //
10*4ba319b5SDimitry Andric // This is part of XRay, a function call instrumentation system.
11*4ba319b5SDimitry Andric //
12*4ba319b5SDimitry Andric //===----------------------------------------------------------------------===//
13*4ba319b5SDimitry Andric 
14*4ba319b5SDimitry Andric #include "clang/Basic/XRayInstr.h"
15*4ba319b5SDimitry Andric #include "llvm/ADT/StringSwitch.h"
16*4ba319b5SDimitry Andric 
17*4ba319b5SDimitry Andric namespace clang {
18*4ba319b5SDimitry Andric 
parseXRayInstrValue(StringRef Value)19*4ba319b5SDimitry Andric XRayInstrMask parseXRayInstrValue(StringRef Value) {
20*4ba319b5SDimitry Andric   XRayInstrMask ParsedKind = llvm::StringSwitch<XRayInstrMask>(Value)
21*4ba319b5SDimitry Andric                                  .Case("all", XRayInstrKind::All)
22*4ba319b5SDimitry Andric                                  .Case("custom", XRayInstrKind::Custom)
23*4ba319b5SDimitry Andric                                  .Case("function", XRayInstrKind::Function)
24*4ba319b5SDimitry Andric                                  .Case("typed", XRayInstrKind::Typed)
25*4ba319b5SDimitry Andric                                  .Case("none", XRayInstrKind::None)
26*4ba319b5SDimitry Andric                                  .Default(XRayInstrKind::None);
27*4ba319b5SDimitry Andric   return ParsedKind;
28*4ba319b5SDimitry Andric }
29*4ba319b5SDimitry Andric 
30*4ba319b5SDimitry Andric } // namespace clang
31