//===------------------------- NameMangleAPI.h ---------------------------===//
//
// SPIR Tools
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===---------------------------------------------------------------------===//
/*
* Contributed by: Intel Corporation.
*/
#ifndef __NAME_MANGLE_API_H__
#define __NAME_MANGLE_API_H__
#include "FunctionDescriptor.h"
#include <string>
namespace SPIR {
struct NameMangler {
/// @brief Constructor.
/// @param SPIRversion spir version to mangle according to.
NameMangler(SPIRversion);
/// @brief Converts the given function descriptor to string that represents
/// the function's prototype.
/// The mangling algorithm is based on Itanium mangling algorithm
/// (http://sourcery.mentor.com/public/cxx-abi/abi.html#mangling), with
/// SPIR extensions.
/// @param FunctionDescriptor function to be mangled.
/// @param std::string the mangled name if the mangling succeeds,
/// the error otherwise.
/// @return MangleError enum representing the status - success or the error.
MangleError mangle(const FunctionDescriptor&, std::string &);
private:
SPIRversion m_spir_version;
};
} // End SPIR namespace
#endif //__NAME_MANGLE_API_H__