blob: 55b5fe204648f64bd3e66cb445f1c94fa252aa1e [file] [log] [blame]
/*
* Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "src/sksl/SkSLUtil.h"
#include "src/sksl/SkSLStringStream.h"
#if defined(STARBOARD)
#include "starboard/system.h"
#define exit(status) SbSystemBreakIntoDebugger()
#endif
#ifndef __STDC_FORMAT_MACROS
#define __STDC_FORMAT_MACROS
#endif
namespace SkSL {
#if defined(SKSL_STANDALONE) || !SK_SUPPORT_GPU
StandaloneShaderCaps standaloneCaps;
#endif
void sksl_abort() {
#ifdef SKSL_STANDALONE
abort();
#else
sk_abort_no_print();
exit(1);
#endif
}
void write_stringstream(const StringStream& s, OutputStream& out) {
out.write(s.str().c_str(), s.str().size());
}
bool is_assignment(Token::Kind op) {
switch (op) {
case Token::EQ: // fall through
case Token::PLUSEQ: // fall through
case Token::MINUSEQ: // fall through
case Token::STAREQ: // fall through
case Token::SLASHEQ: // fall through
case Token::PERCENTEQ: // fall through
case Token::SHLEQ: // fall through
case Token::SHREQ: // fall through
case Token::BITWISEOREQ: // fall through
case Token::BITWISEXOREQ: // fall through
case Token::BITWISEANDEQ: // fall through
case Token::LOGICALOREQ: // fall through
case Token::LOGICALXOREQ: // fall through
case Token::LOGICALANDEQ:
return true;
default:
return false;
}
}
Token::Kind remove_assignment(Token::Kind op) {
switch (op) {
case Token::PLUSEQ: return Token::PLUS;
case Token::MINUSEQ: return Token::MINUS;
case Token::STAREQ: return Token::STAR;
case Token::SLASHEQ: return Token::SLASH;
case Token::PERCENTEQ: return Token::PERCENT;
case Token::SHLEQ: return Token::SHL;
case Token::SHREQ: return Token::SHR;
case Token::BITWISEOREQ: return Token::BITWISEOR;
case Token::BITWISEXOREQ: return Token::BITWISEXOR;
case Token::BITWISEANDEQ: return Token::BITWISEAND;
case Token::LOGICALOREQ: return Token::LOGICALOR;
case Token::LOGICALXOREQ: return Token::LOGICALXOR;
case Token::LOGICALANDEQ: return Token::LOGICALAND;
default: return op;
}
}
} // namespace