~ubuntu-branches/debian/stretch/protobuf/stretch

« back to all changes in this revision

Viewing changes to src/google/protobuf/compiler/java/java_context.h

  • Committer: Package Import Robot
  • Author(s): Robert S. Edmonds
  • Date: 2014-09-11 22:50:10 UTC
  • mfrom: (10.1.9 experimental)
  • Revision ID: package-import@ubuntu.com-20140911225010-wt4yo9dpc1fzuq5g
Tags: 2.6.0-3
Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_CONTEXT_H__
 
32
#define GOOGLE_PROTOBUF_COMPILER_JAVA_CONTEXT_H__
 
33
 
 
34
#include <map>
 
35
#include <memory>
 
36
#include <vector>
 
37
 
 
38
#include <google/protobuf/stubs/common.h>
 
39
 
 
40
namespace google {
 
41
namespace protobuf {
 
42
  class FileDescriptor;
 
43
  class FieldDescriptor;
 
44
  class OneofDescriptor;
 
45
  class Descriptor;
 
46
  namespace compiler {
 
47
    namespace java {
 
48
      class ClassNameResolver;  // name_resolver.h
 
49
    }
 
50
  }
 
51
}  // namespace protobuf
 
52
 
 
53
namespace protobuf {
 
54
namespace compiler {
 
55
namespace java {
 
56
 
 
57
struct FieldGeneratorInfo;
 
58
struct OneofGeneratorInfo;
 
59
// A context object holds the information that is shared among all code
 
60
// generators.
 
61
class Context {
 
62
 public:
 
63
  explicit Context(const FileDescriptor* file);
 
64
  ~Context();
 
65
 
 
66
  // Get the name resolver associated with this context. The resolver
 
67
  // can be used to map descriptors to Java class names.
 
68
  ClassNameResolver* GetNameResolver();
 
69
 
 
70
  // Get the FieldGeneratorInfo for a given field.
 
71
  const FieldGeneratorInfo* GetFieldGeneratorInfo(
 
72
      const FieldDescriptor* field) const;
 
73
 
 
74
  // Get the OneofGeneratorInfo for a given oneof.
 
75
  const OneofGeneratorInfo* GetOneofGeneratorInfo(
 
76
      const OneofDescriptor* oneof) const;
 
77
 
 
78
 private:
 
79
  void InitializeFieldGeneratorInfo(const FileDescriptor* file);
 
80
  void InitializeFieldGeneratorInfoForMessage(const Descriptor* message);
 
81
  void InitializeFieldGeneratorInfoForFields(
 
82
      const vector<const FieldDescriptor*>& fields);
 
83
 
 
84
  scoped_ptr<ClassNameResolver> name_resolver_;
 
85
  map<const FieldDescriptor*, FieldGeneratorInfo> field_generator_info_map_;
 
86
  map<const OneofDescriptor*, OneofGeneratorInfo> oneof_generator_info_map_;
 
87
  GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(Context);
 
88
};
 
89
 
 
90
}  // namespace java
 
91
}  // namespace compiler
 
92
}  // namespace protobuf
 
93
 
 
94
}  // namespace google
 
95
#endif  // GOOGLE_PROTOBUF_COMPILER_JAVA_CONTEXT_H__