11c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang/*
21c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * Copyright 2012, The Android Open Source Project
31c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang *
41c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * Licensed under the Apache License, Version 2.0 (the "License");
51c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * you may not use this file except in compliance with the License.
61c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * You may obtain a copy of the License at
71c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang *
81c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang *     http://www.apache.org/licenses/LICENSE-2.0
91c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang *
101c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * Unless required by applicable law or agreed to in writing, software
111c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * distributed under the License is distributed on an "AS IS" BASIS,
121c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * See the License for the specific language governing permissions and
141c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * limitations under the License.
151c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang */
161c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
17c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#ifndef BCC_CORE_CONTEXT_IMPL_H
18c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#define BCC_CORE_CONTEXT_IMPL_H
191c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
20d2a5a0eab7a1273797029702652e50b2ed9e6a6dShih-wei Liao#include <llvm/ADT/SmallPtrSet.h>
211c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang#include <llvm/LLVMContext.h>
221c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
231c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changnamespace bcc {
241c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
251c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changclass BCCContext;
26d2a5a0eab7a1273797029702652e50b2ed9e6a6dShih-wei Liaoclass Source;
271c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
281c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang/*
291c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * class BCCContextImpl contains the implementation of BCCContext.
301c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang */
311c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changclass BCCContextImpl {
321c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changpublic:
331c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  llvm::LLVMContext mLLVMContext;
341c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
35d2a5a0eab7a1273797029702652e50b2ed9e6a6dShih-wei Liao  // The set of sources that initialized in this context. They will be destroyed
36d2a5a0eab7a1273797029702652e50b2ed9e6a6dShih-wei Liao  // automatically when this context is gone.
37d2a5a0eab7a1273797029702652e50b2ed9e6a6dShih-wei Liao  llvm::SmallPtrSet<Source *, 2> mOwnSources;
38d2a5a0eab7a1273797029702652e50b2ed9e6a6dShih-wei Liao
391c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  BCCContextImpl(BCCContext &pContext) { }
40d2a5a0eab7a1273797029702652e50b2ed9e6a6dShih-wei Liao  ~BCCContextImpl();
411c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang};
421c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
431c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang} // namespace bcc
441c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
45c72c4ddfcd79c74f70713da91a69569451b5c19eZonr Chang#endif  // BCC_CORE_CONTEXT_IMPL_H
46