ApiInitializer.h revision 56513f5ff4f3e851c5f0cb38dc8851d18616b3c0
1/*
2* Copyright 2011 The Android Open Source Project
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*/
16
17#ifndef _API_INITIALIZER_H_
18#define _API_INITIALIZER_H_
19#include <stdlib.h>
20#include <dlfcn.h>
21
22class ApiInitializer {
23public:
24    ApiInitializer(void *dso) :
25        m_dso(dso) {
26    }
27    static void *s_getProc(const char *name, void *userData) {
28        ApiInitializer *self = (ApiInitializer *)userData;
29        return self->getProc(name);
30    }
31private:
32    void *m_dso;
33    void *getProc(const char *name) {
34        void *symbol = NULL;
35        if (m_dso) {
36            symbol = dlsym(m_dso, name);
37        }
38        return symbol;
39    }
40};
41
42#endif
43