Exemplo n.º 1
0
	std::string Imm2asm::TranslateToAsm( const std::string& imm, const Environment& tables )
	{
		m_pTables = (Environment*)&tables;

		std::string buffer = ExpandCode(imm);		// 为entry添加活动保存指令

		//std::cout << std::endl << buffer << std::endl;

		LocateLabel( buffer );

		std::string line;
		std::size_t iter = 0;

		while ( iter < buffer.size() )
		{
			line += buffer[ iter ];

			if ( buffer[ iter ] == '\n' )
			{
				TranslateLine(line);

				line = "";
			}

			iter++;
		}

		return m_asmcode;
	}
Exemplo n.º 2
0
main()
{
    string line;

    printf("Enter a line: ");
    line = GetLine();
    TranslateLine(line);
}
Exemplo n.º 3
0
//=============================================================================
// replaces all meta tags of within a buffer
//=============================================================================
long Translate(char* src,char* dest,long ilength) {
    char  b[4096];
    char  b2[4096];
    long           len,clen,ilen = 0;
    char* end = src + ilength;

    while (src < end) {
        len  = ReadLine(src,b,end);
        TranslateLine(b,b2);
        clen = strlen(b2);
        memcpy(dest,b2,clen);
        dest += clen;
        *dest++ = 0x0A;
        ilen += clen + 1;
        src += len + 1;
        //printf("%s\n",b2);
    }

    return ilen;
}
Exemplo n.º 4
0
void CChat::AddLine(int ClientID, int Team, const char *pLine)
{
	if(ClientID != -1 && m_pClient->m_aClients[ClientID].m_aName[0] == '\0') // unknown client
		return;
	
	char *p = const_cast<char*>(pLine);
	while(*p)
	{
		pLine = p;
		// find line seperator and strip multiline
		while(*p)
		{
			if(*p++ == '\n')
			{
				*(p-1) = 0;
				break;
			}
		}

		m_CurrentLine = (m_CurrentLine+1)%MAX_LINES;
		m_aLines[m_CurrentLine].m_Time = time_get();
		m_aLines[m_CurrentLine].m_YOffset[0] = -1.0f;
		m_aLines[m_CurrentLine].m_YOffset[1] = -1.0f;
		m_aLines[m_CurrentLine].m_ClientID = ClientID;
		m_aLines[m_CurrentLine].m_Team = Team;
		m_aLines[m_CurrentLine].m_NameColor = -2;
		m_aLines[m_CurrentLine].m_Highlighted = str_find_nocase(pLine, m_pClient->m_aClients[m_pClient->m_Snap.m_LocalClientID].m_aName) != 0;
		if (m_aLines[m_CurrentLine].m_pThread)
		{
			thread_destroy(m_aLines[m_CurrentLine].m_pThread);
			m_aLines[m_CurrentLine].m_pThread = 0;
		}

		if(ClientID == -1) // server message
		{
			str_copy(m_aLines[m_CurrentLine].m_aName, "*** ", sizeof(m_aLines[m_CurrentLine].m_aName));
			str_format(m_aLines[m_CurrentLine].m_aText, sizeof(m_aLines[m_CurrentLine].m_aText), "%s", pLine);
		}
		else
		{
			if(m_pClient->m_aClients[ClientID].m_Team == TEAM_SPECTATORS)
				m_aLines[m_CurrentLine].m_NameColor = TEAM_SPECTATORS;

			if(m_pClient->m_Snap.m_pGameobj && m_pClient->m_Snap.m_pGameobj->m_Flags&GAMEFLAG_TEAMS)
			{
				if(m_pClient->m_aClients[ClientID].m_Team == TEAM_RED)
					m_aLines[m_CurrentLine].m_NameColor = TEAM_RED;
				else if(m_pClient->m_aClients[ClientID].m_Team == TEAM_BLUE)
					m_aLines[m_CurrentLine].m_NameColor = TEAM_BLUE;
			}
			
			str_copy(m_aLines[m_CurrentLine].m_aName, m_pClient->m_aClients[ClientID].m_aName, sizeof(m_aLines[m_CurrentLine].m_aName));
			str_format(m_aLines[m_CurrentLine].m_aText, sizeof(m_aLines[m_CurrentLine].m_aText), ": %s", pLine);
		}
		
		char aBuf[1024];
		str_format(aBuf, sizeof(aBuf), "%s%s", m_aLines[m_CurrentLine].m_aName, m_aLines[m_CurrentLine].m_aText);
		Console()->Print(IConsole::OUTPUT_LEVEL_STANDARD, "chat", aBuf);

		TranslateLine(&m_aLines[m_CurrentLine]);
	}

	// play sound
	if(ClientID >= 0)
		m_pClient->m_pSounds->Play(CSounds::CHN_GUI, SOUND_CHAT_CLIENT, 0, vec2(0,0));
	else
		m_pClient->m_pSounds->Play(CSounds::CHN_GUI, SOUND_CHAT_SERVER, 0, vec2(0,0));
}