cmodule.h revision b82acc5264df5ef0d8cd5265826baa9a90f436b3
1ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu/*
2ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu * Copyright (C) 2009 Wind River Systems.
3ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu */
4ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu
5ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#ifndef __CMODULE_H
6ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#define __CMODULE_H
7ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu
8ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#include <module.h>
9ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu
10ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryuclass CModule;
11ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu
125463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryutypedef OMX_ERRORTYPE (*cmodule_instantiate_t)(OMX_PTR *);
135463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryutypedef OMX_ERRORTYPE (*cmodule_query_name_t)(OMX_STRING *);
145463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryutypedef OMX_ERRORTYPE (*cmodule_query_roles_t)(OMX_U32 *, OMX_U8 **);
155463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryu
16ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryuclass CModule {
17ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu public:
1893829fc5dd7d8b02ab8425f4f6cecf39e0636508Ho-Eun Ryu    CModule(const OMX_STRING lname);
19ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu    ~CModule();
20ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu
21b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /*
22b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu     * library loading / unloading
23b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu     */
24ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu    OMX_ERRORTYPE Load(void);
25ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu    OMX_ERRORTYPE Unload(void);
26ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu
27b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /* end of library loading / unloading */
28b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu
29b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /*
30b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu     * accessor
31b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu     */
32b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /* library name */
3393829fc5dd7d8b02ab8425f4f6cecf39e0636508Ho-Eun Ryu    const OMX_STRING GetLibraryName(void);
3493829fc5dd7d8b02ab8425f4f6cecf39e0636508Ho-Eun Ryu
35b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /* end of accessor */
36b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu
37ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu private:
38b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /*
39b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu     * library symbol
40b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu     */
415463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryu    cmodule_instantiate_t instantiate;
425463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryu    cmodule_query_name_t query_name;
435463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryu    cmodule_query_roles_t query_roles;
445463849b74e78069ba8853df8be5e185e712a6c1Ho-Eun Ryu
45b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /* end of library symbol */
46b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu
47b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /* library name */
4893829fc5dd7d8b02ab8425f4f6cecf39e0636508Ho-Eun Ryu    char lname[OMX_MAX_STRINGNAME_SIZE];
49b82acc5264df5ef0d8cd5265826baa9a90f436b3Ho-Eun Ryu    /* utils::module */
50ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu    struct module *module;
51ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu};
52ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu
53ad314a082b0ba22294ba369dde3f84f88010a612Ho-Eun Ryu#endif /* __CMODULE_H */
54