slang_rs_exportable.h revision c383a500aa59423264811be3874461bf8adbfea0
1c383a500aa59423264811be3874461bf8adbfea0Zonr Chang/*
2c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * Copyright 2010, The Android Open Source Project
3c383a500aa59423264811be3874461bf8adbfea0Zonr Chang *
4c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * Licensed under the Apache License, Version 2.0 (the "License");
5c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * you may not use this file except in compliance with the License.
6c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * You may obtain a copy of the License at
7c383a500aa59423264811be3874461bf8adbfea0Zonr Chang *
8c383a500aa59423264811be3874461bf8adbfea0Zonr Chang *     http://www.apache.org/licenses/LICENSE-2.0
9c383a500aa59423264811be3874461bf8adbfea0Zonr Chang *
10c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * Unless required by applicable law or agreed to in writing, software
11c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * distributed under the License is distributed on an "AS IS" BASIS,
12c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * See the License for the specific language governing permissions and
14c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * limitations under the License.
15c383a500aa59423264811be3874461bf8adbfea0Zonr Chang */
16c383a500aa59423264811be3874461bf8adbfea0Zonr Chang
17a41ce1d98094da84643995d40d71c529905123fcZonr Chang#ifndef _SLANG_COMPILER_RS_EXPORTABLE_HPP
18a41ce1d98094da84643995d40d71c529905123fcZonr Chang#define _SLANG_COMPILER_RS_EXPORTABLE_HPP
19a41ce1d98094da84643995d40d71c529905123fcZonr Chang
20a41ce1d98094da84643995d40d71c529905123fcZonr Chang#include "slang_rs_context.h"
21a41ce1d98094da84643995d40d71c529905123fcZonr Chang
22a41ce1d98094da84643995d40d71c529905123fcZonr Changnamespace slang {
23a41ce1d98094da84643995d40d71c529905123fcZonr Chang
24a41ce1d98094da84643995d40d71c529905123fcZonr Changclass RSExportable {
25b257301a1c711ba81458a4f8bf3c99c91c91a047Zonr Chang public:
26a41ce1d98094da84643995d40d71c529905123fcZonr Chang  enum Kind {
27a41ce1d98094da84643995d40d71c529905123fcZonr Chang    EX_FUNC,
28a41ce1d98094da84643995d40d71c529905123fcZonr Chang    EX_TYPE,
29a41ce1d98094da84643995d40d71c529905123fcZonr Chang    EX_VAR
30a41ce1d98094da84643995d40d71c529905123fcZonr Chang  };
31a41ce1d98094da84643995d40d71c529905123fcZonr Chang
32b257301a1c711ba81458a4f8bf3c99c91c91a047Zonr Chang private:
33a41ce1d98094da84643995d40d71c529905123fcZonr Chang  Kind mK;
34a41ce1d98094da84643995d40d71c529905123fcZonr Chang
35b257301a1c711ba81458a4f8bf3c99c91c91a047Zonr Chang protected:
36a41ce1d98094da84643995d40d71c529905123fcZonr Chang  RSExportable(RSContext *Context, RSExportable::Kind K) : mK(K) {
37a41ce1d98094da84643995d40d71c529905123fcZonr Chang    Context->newExportable(this);
38a41ce1d98094da84643995d40d71c529905123fcZonr Chang    return;
39a41ce1d98094da84643995d40d71c529905123fcZonr Chang  }
40a41ce1d98094da84643995d40d71c529905123fcZonr Chang
41b257301a1c711ba81458a4f8bf3c99c91c91a047Zonr Chang public:
42a41ce1d98094da84643995d40d71c529905123fcZonr Chang  inline Kind getKind() const { return mK; }
43a41ce1d98094da84643995d40d71c529905123fcZonr Chang
44a41ce1d98094da84643995d40d71c529905123fcZonr Chang  virtual ~RSExportable() { }
45a41ce1d98094da84643995d40d71c529905123fcZonr Chang};
46a41ce1d98094da84643995d40d71c529905123fcZonr Chang}
47a41ce1d98094da84643995d40d71c529905123fcZonr Chang
48a41ce1d98094da84643995d40d71c529905123fcZonr Chang#endif  // _SLANG_COMPILER_RS_EXPORTABLE_HPP
49