PageRenderTime 94ms CodeModel.GetById 74ms app.highlight 12ms RepoModel.GetById 2ms app.codeStats 0ms

/thirdparty/breakpad/third_party/protobuf/protobuf/src/google/protobuf/compiler/cpp/cpp_service.h

http://github.com/tomahawk-player/tomahawk
C++ Header | 118 lines | 43 code | 25 blank | 50 comment | 0 complexity | 7dbd7f45e4fd64c2bece54dfe0d22b6d MD5 | raw file
  1// Protocol Buffers - Google's data interchange format
  2// Copyright 2008 Google Inc.  All rights reserved.
  3// http://code.google.com/p/protobuf/
  4//
  5// Redistribution and use in source and binary forms, with or without
  6// modification, are permitted provided that the following conditions are
  7// met:
  8//
  9//     * Redistributions of source code must retain the above copyright
 10// notice, this list of conditions and the following disclaimer.
 11//     * Redistributions in binary form must reproduce the above
 12// copyright notice, this list of conditions and the following disclaimer
 13// in the documentation and/or other materials provided with the
 14// distribution.
 15//     * Neither the name of Google Inc. nor the names of its
 16// contributors may be used to endorse or promote products derived from
 17// this software without specific prior written permission.
 18//
 19// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 20// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 21// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 22// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 23// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 24// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 25// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 26// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 27// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 28// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 29// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 30
 31// Author: kenton@google.com (Kenton Varda)
 32//  Based on original Protocol Buffers design by
 33//  Sanjay Ghemawat, Jeff Dean, and others.
 34
 35#ifndef GOOGLE_PROTOBUF_COMPILER_CPP_SERVICE_H__
 36#define GOOGLE_PROTOBUF_COMPILER_CPP_SERVICE_H__
 37
 38#include <map>
 39#include <string>
 40#include <google/protobuf/stubs/common.h>
 41#include <google/protobuf/descriptor.h>
 42
 43namespace google {
 44namespace protobuf {
 45  namespace io {
 46    class Printer;             // printer.h
 47  }
 48}
 49
 50namespace protobuf {
 51namespace compiler {
 52namespace cpp {
 53
 54class ServiceGenerator {
 55 public:
 56  // See generator.cc for the meaning of dllexport_decl.
 57  explicit ServiceGenerator(const ServiceDescriptor* descriptor,
 58                            const string& dllexport_decl);
 59  ~ServiceGenerator();
 60
 61  // Header stuff.
 62
 63  // Generate the class definitions for the service's interface and the
 64  // stub implementation.
 65  void GenerateDeclarations(io::Printer* printer);
 66
 67  // Source file stuff.
 68
 69  // Generate code that initializes the global variable storing the service's
 70  // descriptor.
 71  void GenerateDescriptorInitializer(io::Printer* printer, int index);
 72
 73  // Generate implementations of everything declared by GenerateDeclarations().
 74  void GenerateImplementation(io::Printer* printer);
 75
 76 private:
 77  enum RequestOrResponse { REQUEST, RESPONSE };
 78  enum VirtualOrNon { VIRTUAL, NON_VIRTUAL };
 79
 80  // Header stuff.
 81
 82  // Generate the service abstract interface.
 83  void GenerateInterface(io::Printer* printer);
 84
 85  // Generate the stub class definition.
 86  void GenerateStubDefinition(io::Printer* printer);
 87
 88  // Prints signatures for all methods in the
 89  void GenerateMethodSignatures(VirtualOrNon virtual_or_non,
 90                                io::Printer* printer);
 91
 92  // Source file stuff.
 93
 94  // Generate the default implementations of the service methods, which
 95  // produce a "not implemented" error.
 96  void GenerateNotImplementedMethods(io::Printer* printer);
 97
 98  // Generate the CallMethod() method of the service.
 99  void GenerateCallMethod(io::Printer* printer);
100
101  // Generate the Get{Request,Response}Prototype() methods.
102  void GenerateGetPrototype(RequestOrResponse which, io::Printer* printer);
103
104  // Generate the stub's implementations of the service methods.
105  void GenerateStubMethods(io::Printer* printer);
106
107  const ServiceDescriptor* descriptor_;
108  map<string, string> vars_;
109
110  GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ServiceGenerator);
111};
112
113}  // namespace cpp
114}  // namespace compiler
115}  // namespace protobuf
116
117}  // namespace google
118#endif  // GOOGLE_PROTOBUF_COMPILER_CPP_SERVICE_H__