| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | 
							- /*
 
-  * Copyright 2015 Google Inc. All rights reserved.
 
-  *
 
-  * Licensed under the Apache License, Version 2.0 (the "License");
 
-  * you may not use this file except in compliance with the License.
 
-  * You may obtain a copy of the License at
 
-  *
 
-  *     http://www.apache.org/licenses/LICENSE-2.0
 
-  *
 
-  * Unless required by applicable law or agreed to in writing, software
 
-  * distributed under the License is distributed on an "AS IS" BASIS,
 
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
-  * See the License for the specific language governing permissions and
 
-  * limitations under the License.
 
-  */
 
- #include <iostream>
 
- #include <sstream>
 
- #include <string>
 
- #include "flatbuffers/hash.h"
 
- #include <stdio.h>
 
- enum OutputFormat {
 
-   kDecimal,
 
-   kHexadecimal,
 
-   kHexadecimal0x
 
- };
 
- int main(int argc, char* argv[]) {
 
-   const char* name = argv[0];
 
-   if (argc <= 1) {
 
-     printf("%s HASH [OPTION]... STRING... [-- STRING...]\n", name);
 
-     printf("Available hashing algorithms:\n  32 bit:\n");
 
-     size_t size = sizeof(flatbuffers::kHashFunctions32) /
 
-                   sizeof(flatbuffers::kHashFunctions32[0]);
 
-     for (size_t i = 0; i < size; ++i) {
 
-       printf("    * %s\n", flatbuffers::kHashFunctions32[i].name);
 
-     }
 
-     printf("  64 bit:\n");
 
-     size = sizeof(flatbuffers::kHashFunctions64) /
 
-            sizeof(flatbuffers::kHashFunctions64[0]);
 
-     for (size_t i = 0; i < size; ++i) {
 
-       printf("    * %s\n", flatbuffers::kHashFunctions64[i].name);
 
-     }
 
-     printf(
 
-         "  -d         Output hash in decimal.\n"
 
-         "  -x         Output hash in hexadecimal.\n"
 
-         "  -0x        Output hash in hexadecimal and prefix with 0x.\n"
 
-         "  -c         Append the string to the output in a c-style comment.\n");
 
-     return 0;
 
-   }
 
-   const char* hash_algorithm = argv[1];
 
-   flatbuffers::NamedHashFunction<uint32_t>::HashFunction hash_function32 =
 
-       flatbuffers::FindHashFunction32(hash_algorithm);
 
-   flatbuffers::NamedHashFunction<uint64_t>::HashFunction hash_function64 =
 
-       flatbuffers::FindHashFunction64(hash_algorithm);
 
-   if (!hash_function32 && !hash_function64) {
 
-     printf("\"%s\" is not a known hash algorithm.\n", hash_algorithm);
 
-     return 0;
 
-   }
 
-   OutputFormat output_format = kHexadecimal;
 
-   bool annotate = false;
 
-   bool escape_dash = false;
 
-   for (int i = 2; i < argc; i++) {
 
-     const char* arg = argv[i];
 
-     if (!escape_dash && arg[0] == '-') {
 
-       std::string opt = arg;
 
-       if (opt == "-d")       output_format = kDecimal;
 
-       else if (opt == "-x")  output_format = kHexadecimal;
 
-       else if (opt == "-0x") output_format = kHexadecimal0x;
 
-       else if (opt == "-c")  annotate = true;
 
-       else if (opt == "--")  escape_dash = true;
 
-       else printf("Unrecognized argument: \"%s\"\n", arg);
 
-     } else {
 
-       std::stringstream ss;
 
-       if (output_format == kDecimal) {
 
-         ss << std::dec;
 
-       } else if (output_format == kHexadecimal) {
 
-         ss << std::hex;
 
-       } else if (output_format == kHexadecimal0x) {
 
-         ss << std::hex;
 
-         ss << "0x";
 
-       }
 
-       if (hash_function32)
 
-         ss << hash_function32(arg);
 
-       else if (hash_function64)
 
-         ss << hash_function64(arg);
 
-       if (annotate)
 
-         ss << " /* \"" << arg << "\" */";
 
-       ss << "\n";
 
-       std::cout << ss.str();
 
-     }
 
-   }
 
-   return 0;
 
- }
 
 
  |