| //===--- SwiftDemangle.h - Public demangling interface ----------*- C++ -*-===// |
| // |
| // This source file is part of the Swift.org open source project |
| // |
| // Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors |
| // Licensed under Apache License v2.0 with Runtime Library Exception |
| // |
| // See https://swift.org/LICENSE.txt for license information |
| // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors |
| // |
| //===----------------------------------------------------------------------===// |
| /// |
| /// \file |
| /// This header declares functions in the libswiftDemangle library, |
| /// which provides external access to Swift's demangler. |
| /// |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef SWIFT_DEMANGLE_SWIFT_DEMANGLE_H |
| #define SWIFT_DEMANGLE_SWIFT_DEMANGLE_H |
| |
| #include <swift/SwiftDemangle/Platform.h> |
| |
| /// @{ |
| /// Version constants for libswiftDemangle library. |
| |
| /// Major version changes when there are ABI or source incompatible changes. |
| #define SWIFT_DEMANGLE_VERSION_MAJOR 1 |
| |
| /// Minor version changes when new APIs are added in ABI- and source-compatible |
| /// way. |
| #define SWIFT_DEMANGLE_VERSION_MINOR 2 |
| |
| /// @} |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /// Demangle Swift function names. |
| /// |
| /// \returns the length of the demangled function name (even if greater than the |
| /// size of the output buffer) or 0 if the input is not a Swift-mangled function |
| /// name (in which cases \p OutputBuffer is left untouched). |
| SWIFT_DEMANGLE_LINKAGE |
| size_t swift_demangle_getDemangledName(const char *MangledName, |
| char *OutputBuffer, size_t Length); |
| |
| /// Demangle Swift function names with module names and implicit self |
| /// and metatype type names in function signatures stripped. |
| /// |
| /// \returns the length of the demangled function name (even if greater than the |
| /// size of the output buffer) or 0 if the input is not a Swift-mangled function |
| /// name (in which cases \p OutputBuffer is left untouched). |
| SWIFT_DEMANGLE_LINKAGE |
| size_t swift_demangle_getSimplifiedDemangledName(const char *MangledName, |
| char *OutputBuffer, |
| size_t Length); |
| |
| /// Demangle a Swift symbol and return the module name of the mangled entity. |
| /// |
| /// \returns the length of the demangled module name (even if greater than the |
| /// size of the output buffer) or 0 if the input is not a Swift-mangled name |
| /// (in which cases \p OutputBuffer is left untouched). |
| SWIFT_DEMANGLE_LINKAGE |
| size_t swift_demangle_getModuleName(const char *MangledName, |
| char *OutputBuffer, |
| size_t Length); |
| |
| /// Demangles a Swift function name and returns true if the function |
| /// conforms to the Swift calling convention. |
| /// |
| /// \returns true if the function conforms to the Swift calling convention. |
| /// The return value is unspecified if the \p MangledName does not refer to a |
| /// function symbol. |
| SWIFT_DEMANGLE_LINKAGE |
| int swift_demangle_hasSwiftCallingConvention(const char *MangledName); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| // Old API. To be removed when we remove the compatibility symlink. |
| |
| /// @{ |
| /// Version constants for libfunctionNameDemangle library. |
| |
| /// Major version changes when there are ABI or source incompatible changes. |
| #define FUNCTION_NAME_DEMANGLE_VERSION_MAJOR 0 |
| |
| /// Minor version changes when new APIs are added in ABI- and source-compatible |
| /// way. |
| #define FUNCTION_NAME_DEMANGLE_VERSION_MINOR 2 |
| |
| /// @} |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /// Demangle Swift function names. |
| /// |
| /// Note that this function has a generic name because it is called from |
| /// contexts where it is not appropriate to use code names. |
| /// |
| /// \returns the length of the demangled function name (even if greater than the |
| /// size of the output buffer) or 0 if the input is not a Swift-mangled function |
| /// name (in which cases \p OutputBuffer is left untouched). |
| SWIFT_DEMANGLE_LINKAGE |
| size_t fnd_get_demangled_name(const char *MangledName, char *OutputBuffer, |
| size_t Length); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif |
| |
| #endif // SWIFT_DEMANGLE_SWIFT_DEMANGLE_H |
| |