// // For now, keep it simple: if it starts "gl_", it's reserved, independent // of scope. Except, if the symbol table is at the built-in push-level, // which is when we are parsing built-ins. // Also checks for "webgl_" and "_webgl_" reserved identifiers if parsing a // webgl shader. // // Returns true if there was an error. // bool TParseContext::reservedErrorCheck(int line, const TString& identifier) { static const char* reservedErrMsg = "reserved built-in name"; if (!symbolTable.atBuiltInLevel()) { if (identifier.compare(0, 3, "gl_") == 0) { error(line, reservedErrMsg, "gl_", ""); return true; } if (shaderSpec == SH_WEBGL_SPEC) { if (identifier.compare(0, 6, "webgl_") == 0) { error(line, reservedErrMsg, "webgl_", ""); return true; } if (identifier.compare(0, 7, "_webgl_") == 0) { error(line, reservedErrMsg, "_webgl_", ""); return true; } } if (identifier.find("__") != TString::npos) { //error(line, "Two consecutive underscores are reserved for future use.", identifier.c_str(), "", ""); //return true; infoSink.info.message(EPrefixWarning, "Two consecutive underscores are reserved for future use.", line); return false; } } return false; }
// // For now, keep it simple: if it starts "gl_", it's reserved, independent // of scope. Except, if the symbol table is at the built-in push-level, // which is when we are parsing built-ins. // Also checks for "webgl_" and "_webgl_" reserved identifiers if parsing a // webgl shader. // // Returns true if there was an error. // bool TParseContext::reservedErrorCheck(int line, const TString& identifier) { static const char* reservedErrMsg = "reserved built-in name"; if (!symbolTable.atBuiltInLevel()) { if (identifier.compare(0, 3, "gl_") == 0) { error(line, reservedErrMsg, "gl_"); return true; } if (isWebGLBasedSpec(shaderSpec)) { if (identifier.compare(0, 6, "webgl_") == 0) { error(line, reservedErrMsg, "webgl_"); return true; } if (identifier.compare(0, 7, "_webgl_") == 0) { error(line, reservedErrMsg, "_webgl_"); return true; } if (shaderSpec == SH_CSS_SHADERS_SPEC && identifier.compare(0, 4, "css_") == 0) { error(line, reservedErrMsg, "css_"); return true; } } if (identifier.find("__") != TString::npos) { error(line, "identifiers containing two consecutive underscores (__) are reserved as possible future keywords", identifier.c_str()); return true; } } return false; }
bool CShader::Load() { TString strExtension = CFilePathTool::GetInstance()->Extension(GetFilePath().c_str()); bool bIsVS = strExtension.compare(_T(".vs")) == 0; m_shaderType = bIsVS ? GL_VERTEX_SHADER : GL_FRAGMENT_SHADER; if (m_commonHeader.GetWritePos() == 0) { #if (BEYONDENGINE_PLATFORM == PLATFORM_ANDROID) const char* pszPlatformDef = "#define PLATFORM_ANDROID\r\n"; #elif (BEYONDENGINE_PLATFORM == PLATFORM_IOS) const char* pszPlatformDef = "#define PLATFORM_IOS\r\n"; #else const char* pszPlatformDef = "#define PLATFORM_WIN32\r\n"; #endif m_commonHeader.Serialize((const void *)pszPlatformDef, strlen(pszPlatformDef)); TString strPath = CResourceManager::GetInstance()->GetFullPath(_T("commonheader.txt"), eRT_Shader); m_commonHeader.Serialize(strPath.c_str()); } BEATS_ASSERT(m_pData == NULL); m_pData = new CSerializer(m_commonHeader); BEATS_ASSERT(CFilePathTool::GetInstance()->Exists(m_strPath.m_value.c_str()), "Can't find shader file %s", m_strPath.m_value.c_str()) m_pData->Serialize(m_strPath.m_value.c_str()); super::Load(); return true; }
bool EndsWith(const TString &str, const TString&& suffix) { if (str.length() >= suffix.length()) { return (0 == str.compare (str.length() - suffix.length(), suffix.length(), suffix)); } else { return false; } }
/***************************************************************************** ** Procedure: CEventFactory::Create ** ** Arguments: 'strCommand' - String from PBX ** ** Returns: Derivative CEventBlock for this PBX command ** ** Description: This function creates a new CEventBlock object ** *****************************************************************************/ CEventBlock* CEventFactory::Create(TString& strData) { // We should have at least one object in our event list _TSP_ASSERT(m_pHead != NULL); // The first element is always the command. TString strCommand = GetNextElem(strData); if (strCommand.empty()) return NULL; // Uppercase the command string CharUpperBuff(&strCommand[0], strCommand.length()); // Convert the command string into its numerical equivelant for // quick lookup. enum CEventBlock::PBXEvent evtType = CEventBlock::Unknown; for (int i = 0; g_StringToEvent[i].pszEvent != NULL; i++) { if (!strCommand.compare(g_StringToEvent[i].pszEvent)) { evtType = g_StringToEvent[i].evtType; break; } } // If the event is unknown, it means we have not completely defined // the interface and have a problem! _TSP_ASSERT (evtType != CEventBlock::Unknown); // Return the event object which encapsulates this command return m_pHead->Create(evtType, strData); }// CEventFactory::Create
TString Decorate(const TString &string) { if (string.compare(0, 3, "gl_") != 0) { return "_" + string; } return string; }
explicit RPC_caller(const TString& module_name) : hModule(LoadLibraryEx(module_name.c_str(), NULL, 0)) { PROCESSENTRY32 entry; entry.dwSize = sizeof(PROCESSENTRY32); HandleHolder snapshot(CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL)); if (Process32First(snapshot(), &entry) == TRUE) { while (Process32Next(snapshot(), &entry) == TRUE) { if (module_name.compare(entry.szExeFile) == 0) { hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); if(!hProcess()) throw rpc_call_error(TString(_TEXT("Unable to open process ")) + module_name); base = this->GetModuleBase(hProcess(), module_name); } } } }
// ---------------------------------------------------------------------------- // String.h bool Test_String() { TTRACE(_T("=====================================================")); // StrRCSpn テスト。 { const TCHAR* strCharSet = _T("abc"); int ret; const TCHAR* str1 = _T("nakayama"); ret = StrRCSpn(str1, strCharSet); if (ret != 7) { TTRACE(_T("StrRCSpn# failed! ret=%d"), ret); return false; } const TCHAR* str2 = _T("erio"); ret = StrRCSpn(str2, strCharSet); if (ret != -1) { TTRACE(_T("StrRCSpn# failed! ret=%d"), ret); return false; } const TCHAR* str3 = _T("nakayama erio"); ret = StrRCSpn(str3, strCharSet); if (ret != 7) { TTRACE(_T("StrRCSpn# failed! ret=%d"), ret); return false; } } // StrRStr テスト。 { const TCHAR* result = NULL; const TCHAR* str1 = _T("Romancing SaGa, SaGa Frontier, Unlimited SaGa"); result = StrRStr(str1, _T("SaGa")); if (result == NULL || _tcscmp(_T("SaGa"), result) != 0) { TTRACE(_T("StrRStr# failed! result=%s"), result); return false; } const TCHAR* str2 = _T("Romancing SaGa, SaGa Frontier, Unlimited SaGa, Romancing SaGa -Minstrel Song-"); result = StrRStr(str2, _T("SaGa")); if (result == NULL || _tcscmp(_T("SaGa -Minstrel Song-"), result) != 0) { TTRACE(_T("StrRStr# failed! result=%s"), result); return false; } result = StrRStr(str2, _T("Itoken")); if (result != NULL) { TTRACE(_T("StrRStr# failed! result=%s"), result); return false; } } // Tokens テスト。 { Tokens<TCHAR> tokens; tokens.Set(_T("I love \"Romancing SaGa\" (Super Famicom software)"), _T(" "), _T("\"\"()")); TString token; if (!tokens.Next(token) || token.compare(_T("I")) != 0) { TTRACE(_T("Tokens# failed! result=%s"), token.c_str()); return false; } if (!tokens.Next(token) || token.compare(_T("love")) != 0) { TTRACE(_T("Tokens# failed! result=%s"), token.c_str()); return false; } if (!tokens.Next(token) || token.compare(_T("Romancing SaGa")) != 0) { TTRACE(_T("Tokens# failed! result=%s"), token.c_str()); return false; } if (!tokens.Next(token) || token.compare(_T("Super Famicom software")) != 0) { TTRACE(_T("Tokens# failed! result=%s"), token.c_str()); return false; } if (tokens.Next(token)) { TTRACE(_T("Tokens# failed!")); return false; } if (tokens.Next(token)) { TTRACE(_T("Tokens# failed!")); return false; } } return true; }