"Fossies" - the Fresh Open Source Software Archive

Member "flatbuffers-23.1.21/src/annotated_binary_text_gen.h" (21 Jan 2023, 2339 Bytes) of package /linux/misc/flatbuffers-23.1.21.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "annotated_binary_text_gen.h" see the Fossies "Dox" file reference documentation.

    1 /*
    2  * Copyright 2021 Google Inc. All rights reserved.
    3  *
    4  * Licensed under the Apache License, Version 2.0 (the "License");
    5  * you may not use this file except in compliance with the License.
    6  * You may obtain a copy of the License at
    7  *
    8  *     http://www.apache.org/licenses/LICENSE-2.0
    9  *
   10  * Unless required by applicable law or agreed to in writing, software
   11  * distributed under the License is distributed on an "AS IS" BASIS,
   12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   13  * See the License for the specific language governing permissions and
   14  * limitations under the License.
   15  */
   16 
   17 #ifndef FLATBUFFERS_ANNOTATED_BINARY_TEXT_GEN_H_
   18 #define FLATBUFFERS_ANNOTATED_BINARY_TEXT_GEN_H_
   19 
   20 #include <map>
   21 #include <memory>
   22 #include <string>
   23 
   24 #include "binary_annotator.h"
   25 
   26 namespace flatbuffers {
   27 
   28 class AnnotatedBinaryTextGenerator {
   29  public:
   30   struct Options {
   31     // The maximum number of raw bytes to print per line in the output. 8 is a
   32     // good default due to the largest type (double) being 8 bytes long.
   33     size_t max_bytes_per_line = 8;
   34 
   35     // The output file postfix, appended between the filename and the extension.
   36     // Example binary1.bin -> binary1_annotated.bin
   37     std::string output_postfix = "";
   38 
   39     // The output file extension, replacing any extension given. If empty, don't
   40     // change the provided extension. AFB = Annotated Flatbuffer Binary
   41     //
   42     // Example: binary1.bin -> binary1.afb
   43     std::string output_extension = "afb";
   44   };
   45 
   46   explicit AnnotatedBinaryTextGenerator(
   47       const Options &options, std::map<uint64_t, BinarySection> annotations,
   48       const uint8_t *const binary, const int64_t binary_length)
   49       : annotations_(std::move(annotations)),
   50         binary_(binary),
   51         binary_length_(binary_length),
   52         options_(options) {}
   53 
   54   // Generate the annotated binary for the given `filename`. Returns true if the
   55   // annotated binary was successfully saved.
   56   bool Generate(const std::string &filename,
   57                 const std::string &schema_filename);
   58 
   59  private:
   60   const std::map<uint64_t, BinarySection> annotations_;
   61 
   62   // The binary data itself.
   63   const uint8_t *binary_;
   64   const int64_t binary_length_;
   65 
   66   // Output configuration
   67   const Options options_;
   68 };
   69 
   70 }  // namespace flatbuffers
   71 
   72 #endif  // FLATBUFFERS_ANNOTATED_BINARY_TEXT_GEN_H_