| #!/bin/sh |
| # 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. |
| |
| # This file takes an output file as its first parameter, followed by one or more |
| # FIDL schema files in JSON format. It then generates a header containing a C++ |
| # map from schema filename to file contents, which can then be used for test |
| # purposes. |
| |
| set -e |
| |
| FILENAME="${1}" |
| rm -f "${FILENAME}" |
| |
| cat > "${FILENAME}" << EOF |
| #include <map> |
| #include <string> |
| // Autogenerated: Do not modify! |
| namespace fidl_codec_test { |
| class ${2} { |
| public: |
| ${2}() { |
| map_ = { |
| EOF |
| |
| add_entry() { |
| if [ ! -f "$1" ]; then |
| echo "file $1 not found" |
| exit 1 |
| fi; |
| cat >> "${FILENAME}" <<EOF |
| {"$1", R"FIDL($(cat "$1"))FIDL"}, |
| EOF |
| } |
| |
| if [ ${3} = "-content" ]; then |
| if [ ! -f "${4}" ]; then |
| echo "file ${4} not found" |
| exit 1 |
| fi; |
| |
| while IFS= read -r line |
| do |
| add_entry $line |
| done < "${4}"; |
| else |
| shift 2 |
| |
| for i in "$@"; do |
| add_entry ${i} |
| done |
| fi; |
| |
| cat >> "${FILENAME}" << EOF |
| }; |
| } |
| std::map<std::string, std::string> &map() { return map_; } |
| private: |
| std::map<std::string, std::string> map_; |
| }; |
| |
| } // namespace fidl_codec_test |
| EOF |