Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- ExtractAPI/Serialization/SerializerBase.h ----------------*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. ///
  9. /// \file
  10. /// This file defines the ExtractAPI APISerializer interface.
  11. ///
  12. //===----------------------------------------------------------------------===//
  13.  
  14. #ifndef LLVM_CLANG_EXTRACTAPI_SERIALIZATION_SERIALIZERBASE_H
  15. #define LLVM_CLANG_EXTRACTAPI_SERIALIZATION_SERIALIZERBASE_H
  16.  
  17. #include "clang/ExtractAPI/API.h"
  18. #include "clang/ExtractAPI/APIIgnoresList.h"
  19. #include "llvm/Support/raw_ostream.h"
  20.  
  21. namespace clang {
  22. namespace extractapi {
  23.  
  24. /// Common options to customize the serializer output.
  25. struct APISerializerOption {
  26.   /// Do not include unnecessary whitespaces to save space.
  27.   bool Compact;
  28. };
  29.  
  30. /// The base interface of serializers for API information.
  31. class APISerializer {
  32. public:
  33.   /// Serialize the API information to \p os.
  34.   virtual void serialize(raw_ostream &os) = 0;
  35.  
  36. protected:
  37.   const APISet &API;
  38.  
  39.   /// The list of symbols to ignore.
  40.   ///
  41.   /// Note: This should be consulted before emitting a symbol.
  42.   const APIIgnoresList &IgnoresList;
  43.  
  44.   APISerializerOption Options;
  45.  
  46. public:
  47.   APISerializer() = delete;
  48.   APISerializer(const APISerializer &) = delete;
  49.   APISerializer(APISerializer &&) = delete;
  50.   APISerializer &operator=(const APISerializer &) = delete;
  51.   APISerializer &operator=(APISerializer &&) = delete;
  52.  
  53. protected:
  54.   APISerializer(const APISet &API, const APIIgnoresList &IgnoresList,
  55.                 APISerializerOption Options = {})
  56.       : API(API), IgnoresList(IgnoresList), Options(Options) {}
  57.  
  58.   virtual ~APISerializer() = default;
  59. };
  60.  
  61. } // namespace extractapi
  62. } // namespace clang
  63.  
  64. #endif // LLVM_CLANG_EXTRACTAPI_SERIALIZATION_SERIALIZERBASE_H
  65.