11b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams/* 21b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * Copyright 2012, The Android Open Source Project 31b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * 41b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 51b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * you may not use this file except in compliance with the License. 61b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * You may obtain a copy of the License at 71b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * 81b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * http://www.apache.org/licenses/LICENSE-2.0 91b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * 101b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * Unless required by applicable law or agreed to in writing, software 111b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 121b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * See the License for the specific language governing permissions and 141b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams * limitations under the License. 151b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams */ 161b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 171b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#ifndef _FRAMEWORKS_COMPILE_SLANG_SLANG_RS_REFLECTION_BASE_H_ // NOLINT 181b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#define _FRAMEWORKS_COMPILE_SLANG_SLANG_RS_REFLECTION_BASE_H_ 191b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 201b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include <fstream> 211b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include <iostream> 221b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include <map> 231b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include <set> 241b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include <string> 251b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include <vector> 261b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 271b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include "llvm/ADT/StringExtras.h" 281b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 291b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include "slang_assert.h" 301b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#include "slang_rs_export_type.h" 311b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 321b6a0883cd6984e11e59b0c847fb334df1f41afcJason Samsnamespace slang { 331b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams class RSContext; 341b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams class RSExportVar; 351b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams class RSExportFunc; 361b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams class RSExportForEach; 371b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 381b6a0883cd6984e11e59b0c847fb334df1f41afcJason Samsclass RSReflectionBase { 391b6a0883cd6984e11e59b0c847fb334df1f41afcJason Samsprotected: 401b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams const RSContext *mRSContext; 411b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 421b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 431b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 441b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams RSReflectionBase(const RSContext *); 451b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 461b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 471b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams bool mVerbose; 481b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 491b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::string mLicenseNote; 501b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::string mInputFileName; 511b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 521b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::string mClassName; 531b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::string mOutputPath; 541b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::string mOutputBCFileName; 551b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 561b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::vector< std::string > mText; 571b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::string mIndent; 581b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 591b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams bool openFile(const std::string &name, std::string &errorMsg); 601b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams void startFile(const std::string &filename); 611b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams void incIndent(); 621b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams void decIndent(); 631b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams void write(const std::string &t); 64192392fc5ffedc06eb8ae2b89d703b3c658fddd6Jason Sams void write(const std::stringstream &t); 651b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 661b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams std::string stripRS(const std::string &s) const; 671b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 681b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams static bool writeFile(const std::string &filename, const std::vector< std::string > &txt); 691b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 701b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 711b6a0883cd6984e11e59b0c847fb334df1f41afcJason Samsprivate: 721b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 731b6a0883cd6984e11e59b0c847fb334df1f41afcJason Samspublic: 741b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams virtual ~RSReflectionBase(); 751b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 76192392fc5ffedc06eb8ae2b89d703b3c658fddd6Jason Sams static std::string genInitValue(const clang::APValue &Val, bool asBool=false); 771b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 781b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams}; // class RSReflection 791b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 801b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams} // namespace slang 811b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams 821b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams#endif // _FRAMEWORKS_COMPILE_SLANG_SLANG_RS_REFLECTION_BASE_H_ NOLINT 83