BCCContext.h revision 1c30cee77f9a148215a0dacee2d922d1ec1b3bae
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
171c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang#ifndef BCC_EXECUTION_ENGINE_CONTEXT_H
181c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang#define BCC_EXECUTION_ENGINE_CONTEXT_H
191c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
201c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changnamespace llvm {
211c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  class LLVMContext;
221c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang}
231c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
241c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changnamespace bcc {
251c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
261c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changclass BCCContextImpl;
271c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
281c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang/*
291c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang * class BCCContext manages the global data across the libbcc infrastructure.
301c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang */
311c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changclass BCCContext {
321c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Changpublic:
331c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  BCCContextImpl *const mImpl;
341c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
351c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  BCCContext();
361c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  ~BCCContext();
371c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
381c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  llvm::LLVMContext &getLLVMContext();
391c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  const llvm::LLVMContext &getLLVMContext() const;
401c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
411c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  // Global BCCContext
421c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  static BCCContext *GetOrCreateGlobalContext();
431c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang  static void DestroyGlobalContext();
441c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang};
451c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
461c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang} // namespace bcc
471c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang
481c30cee77f9a148215a0dacee2d922d1ec1b3baeZonr Chang#endif  // BCC_EXECUTION_ENGINE_CONTEXT_H
49