• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2016, The Android Open Source Project
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  #include "generate_java.h"
18  
19  #include <memory>
20  #include <stdio.h>
21  #include <stdlib.h>
22  #include <string.h>
23  
24  #include <android-base/stringprintf.h>
25  
26  #include "code_writer.h"
27  #include "type_java.h"
28  
29  using std::unique_ptr;
30  using ::android::aidl::java::Variable;
31  using std::string;
32  using android::base::StringPrintf;
33  
34  namespace android {
35  namespace aidl {
36  
37  // =================================================
VariableFactory(const string & base)38  VariableFactory::VariableFactory(const string& base)
39      : base_(base),
40        index_(0) {
41  }
42  
Get(const Type * type)43  Variable* VariableFactory::Get(const Type* type) {
44    Variable* v = new Variable(
45        type, StringPrintf("%s%d", base_.c_str(), index_));
46    vars_.push_back(v);
47    index_++;
48    return v;
49  }
50  
Get(int index)51  Variable* VariableFactory::Get(int index) {
52    return vars_[index];
53  }
54  
55  namespace java {
56  
generate_java(const string & filename,const string & originalSrc,AidlInterface * iface,JavaTypeNamespace * types,const IoDelegate & io_delegate,const JavaOptions & options)57  int generate_java(const string& filename, const string& originalSrc,
58                    AidlInterface* iface, JavaTypeNamespace* types,
59                    const IoDelegate& io_delegate, const JavaOptions& options) {
60    Class* cl = generate_binder_interface_class(iface, types, options);
61  
62    Document* document = new Document(
63        "" /* no comment */,
64        iface->GetPackage(),
65        originalSrc,
66        unique_ptr<Class>(cl));
67  
68    CodeWriterPtr code_writer = io_delegate.GetCodeWriter(filename);
69    document->Write(code_writer.get());
70  
71    return 0;
72  }
73  
74  }  // namespace java
75  }  // namespace android
76  }  // namespace aidl
77