1862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang/* 2862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * Copyright 2012, The Android Open Source Project 3862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * 4862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * Licensed under the Apache License, Version 2.0 (the "License"); 5862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * you may not use this file except in compliance with the License. 6862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * You may obtain a copy of the License at 7862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * 8862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * http://www.apache.org/licenses/LICENSE-2.0 9862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * 10862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * Unless required by applicable law or agreed to in writing, software 11862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * distributed under the License is distributed on an "AS IS" BASIS, 12862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * See the License for the specific language governing permissions and 14862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang * limitations under the License. 15862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang */ 16862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 17862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang#ifndef BCC_EXECUTION_ENGINE_SYMBOL_RESOLVER_INTERFACE_H 18862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang#define BCC_EXECUTION_ENGINE_SYMBOL_RESOLVER_INTERFACE_H 19862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 20862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang#include <cstddef> 21862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 22862f3ba997e14b61dce9d341a75688951e67fd1bZonr Changnamespace bcc { 23862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 24862f3ba997e14b61dce9d341a75688951e67fd1bZonr Changclass SymbolResolverInterface { 25862f3ba997e14b61dce9d341a75688951e67fd1bZonr Changpublic: 26862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang static void *LookupFunction(void *pResolver, const char *pName) { 27862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang SymbolResolverInterface *resolver = 28862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang reinterpret_cast<SymbolResolverInterface*>(pResolver); 29862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang return ((resolver != NULL) ? resolver->getAddress(pName) : NULL); 30862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang } 31862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 32862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang // Should this be a const method? 33862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang virtual void *getAddress(const char *pName) = 0; 34862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 35862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang virtual ~SymbolResolverInterface() { } 36862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang}; 37862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 38862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang} // end namespace bcc 39862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang 40862f3ba997e14b61dce9d341a75688951e67fd1bZonr Chang#endif // BCC_EXECUTION_ENGINE_SYMBOL_RESOLVER_INTERFACE_H 41