/*
 * Copyright 2010-2012, The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef _FRAMEWORKS_COMPILE_SLANG_SLANG_RS_METADATA_H_  // NOLINT
#define _FRAMEWORKS_COMPILE_SLANG_SLANG_RS_METADATA_H_

// MN stands for "metadata name"
#define RS_EXPORT_VAR_MN  "#rs_export_var"
#define RS_EXPORT_VAR_NAME  0
#define RS_EXPORT_VAR_TYPE  1

#define RS_EXPORT_FUNC_MN "#rs_export_func"
#define RS_EXPORT_FUNC_NAME 0

#define RS_EXPORT_TYPE_MN "#rs_export_type"

#define RS_OBJECT_SLOTS_MN "#rs_object_slots"

#define RS_EXPORT_FOREACH_NAME_MN "#rs_export_foreach_name"

#define RS_EXPORT_FOREACH_MN "#rs_export_foreach"

#define RS_EXPORT_REDUCE_MN "#rs_export_reduce"

#endif  // _FRAMEWORKS_COMPILE_SLANG_SLANG_RS_METADATA_H_  NOLINT
