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