| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef ZIRCON_TOOLS_KAZOO_OUTPUT_UTIL_H_ |
| #define ZIRCON_TOOLS_KAZOO_OUTPUT_UTIL_H_ |
| |
| #include "tools/kazoo/syscall_library.h" |
| #include "tools/kazoo/writer.h" |
| |
| // Outputs a copyright header like the one at the top of this file to |writer|. |
| void CopyrightHeaderWithCppComments(Writer* writer); |
| |
| // Outputs a copyright header using '#' as the comment marker. |
| void CopyrightHeaderWithHashComments(Writer* writer); |
| |
| // Converts |input| to lowercase, assuming it's entirely ASCII. |
| std::string ToLowerAscii(const std::string& input); |
| |
| // Converts |input| to uppercase, assuming it's entirely ASCII. |
| std::string ToUpperAscii(const std::string& input); |
| |
| // Maps a name from typical FidlCamelStyle to zircon_snake_style. |
| std::string CamelToSnake(const std::string& camel_fidl); |
| |
| // Gets a string representing |type| suitable for output to a C file in userspace. |
| std::string GetCUserModeName(const Type& type); |
| |
| // Gets a string representing |type| suitable for output to a C file in a kernel header (rather than |
| // zx_xyz_t*, this will have user_out_ptr<xyz>, etc.) |
| std::string GetCKernelModeName(const Type& type); |
| |
| struct JsonTypeNameData { |
| std::string name; |
| bool is_pointer{false}; |
| std::string attribute; |
| }; |
| |
| // Gets a filled out JsonTypeNameData suitable for output to the definitions.json file. This |
| // includes a type name similar to the GetCUserName, separate indication of whether the type is a |
| // pointer, and the data for the argument attributes, if any. |
| JsonTypeNameData GetJsonName(const Type& type); |
| |
| // Gets a string representing |type| suitable for output to a Go file. |
| std::string GetGoName(const Type& type); |
| |
| // Gets a size-compatible Go native type. |
| std::string GetNativeGoName(const Type& type); |
| |
| // Ensure argument name isn't a Go keyword. |
| std::string RemapReservedGoName(const std::string& name); |
| |
| uint32_t DJBHash(const std::string& str); |
| |
| enum class SignatureNewlineStyle { kAllOneLine, kOnePerLine }; |
| |
| #endif // ZIRCON_TOOLS_KAZOO_OUTPUT_UTIL_H_ |