//
// 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;
}
Beispiel #2
0
//
// 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;
}
Beispiel #3
0
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;
}
Beispiel #4
0
 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;
     }
 }
Beispiel #5
0
/*****************************************************************************
** 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
Beispiel #6
0
TString Decorate(const TString &string)
{
    if (string.compare(0, 3, "gl_") != 0)
    {
        return "_" + string;
    }

    return string;
}
Beispiel #7
0
	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);
				}
			}
		}
	}
Beispiel #8
0
// ----------------------------------------------------------------------------
// 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;
}