189eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley/*
289eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * Copyright (C) 2015, The Android Open Source Project
389eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley *
489eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * Licensed under the Apache License, Version 2.0 (the "License");
589eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * you may not use this file except in compliance with the License.
689eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * You may obtain a copy of the License at
789eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley *
889eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley *     http://www.apache.org/licenses/LICENSE-2.0
989eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley *
1089eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * Unless required by applicable law or agreed to in writing, software
1189eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * distributed under the License is distributed on an "AS IS" BASIS,
1289eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1389eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * See the License for the specific language governing permissions and
1489eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley * limitations under the License.
1589eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley */
1689eaab56f3ff913c247397b858fac3c8d3d4a206Christopher Wiley
1789e3586afa180230fa999d4287df90df9d066cefChristopher Wiley#ifndef AIDL_AIDL_H_
1889e3586afa180230fa999d4287df90df9d066cefChristopher Wiley#define AIDL_AIDL_H_
1989e3586afa180230fa999d4287df90df9d066cefChristopher Wiley
20632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley#include <limits>
2190be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley#include <memory>
2290be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley#include <string>
2390be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley#include <vector>
2490be4e3fe6d16ea8e8263b80989ef2ab4e6ef9c6Christopher Wiley
252cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin#include "aidl_language.h"
264a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley#include "io_delegate.h"
2789e3586afa180230fa999d4287df90df9d066cefChristopher Wiley#include "options.h"
282cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin#include "type_namespace.h"
2989e3586afa180230fa999d4287df90df9d066cefChristopher Wiley
30fdeb0f4b96b6c39b1b9ed3358634f180f9e6df06Christopher Wileynamespace android {
31fdeb0f4b96b6c39b1b9ed3358634f180f9e6df06Christopher Wileynamespace aidl {
32fdeb0f4b96b6c39b1b9ed3358634f180f9e6df06Christopher Wiley
33632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wileyenum class AidlError {
34632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  UNKOWN = std::numeric_limits<int32_t>::min(),
35632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  BAD_PRE_PROCESSED_FILE,
36632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  PARSE_ERROR,
37632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  FOUND_PARCELABLE,
38632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  BAD_PACKAGE,
39632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  BAD_IMPORT,
40632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  BAD_TYPE,
41632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  BAD_METHOD_ID,
42632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  GENERATION_ERROR,
43632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley
44632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley  OK = 0,
45632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley};
46632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley
474a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wileyint compile_aidl_to_cpp(const CppOptions& options,
484a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley                        const IoDelegate& io_delegate);
494a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wileyint compile_aidl_to_java(const JavaOptions& options,
504a2884b0e9414ed9dfee4e141e8bd462c07b442bChristopher Wiley                         const IoDelegate& io_delegate);
51c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlinbool preprocess_aidl(const JavaOptions& options,
52c1f39b4ea30e7313eeb7f3d3fd5ec66ba00f2bb5Casey Dahlin                     const IoDelegate& io_delegate);
5389e3586afa180230fa999d4287df90df9d066cefChristopher Wiley
542cc93169679e222dda71c73814f28a9fb0832166Casey Dahlinnamespace internals {
552cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin
56632801d891bd269badc780ab5f0f08e56e6df10aChristopher WileyAidlError load_and_validate_aidl(
57632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley    const std::vector<std::string> preprocessed_files,
58632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley    const std::vector<std::string> import_paths,
59632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley    const std::string& input_file_name,
60632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley    const IoDelegate& io_delegate,
61632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley    TypeNamespace* types,
62632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley    std::unique_ptr<AidlInterface>* returned_interface,
63632801d891bd269badc780ab5f0f08e56e6df10aChristopher Wiley    std::vector<std::unique_ptr<AidlImport>>* returned_imports);
642cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin
65ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wileybool parse_preprocessed_file(const IoDelegate& io_delegate,
66ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley                             const std::string& filename, TypeNamespace* types);
67ef1409302aa97b1807e55c63588ac0a428f41a06Christopher Wiley
682cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin} // namespace internals
692cc93169679e222dda71c73814f28a9fb0832166Casey Dahlin
70fdeb0f4b96b6c39b1b9ed3358634f180f9e6df06Christopher Wiley}  // namespace android
71fdeb0f4b96b6c39b1b9ed3358634f180f9e6df06Christopher Wiley}  // namespace aidl
72fdeb0f4b96b6c39b1b9ed3358634f180f9e6df06Christopher Wiley
7389e3586afa180230fa999d4287df90df9d066cefChristopher Wiley#endif  // AIDL_AIDL_H_
74