Add missed Terminal::Complete source files

This commit is contained in:
Keith Winstein
2011-08-13 15:54:46 -04:00
parent 9eb6131b57
commit 71e22ee041
2 changed files with 58 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
#include "completeterminal.hpp"
using namespace std;
using namespace Parser;
string Terminal::Complete::act( const string &str )
{
for ( unsigned int i = 0; i < str.size(); i++ ) {
/* parse octet into up to three actions */
list<Action *> actions( parser.input( str[ i ] ) );
/* apply actions to terminal and delete them */
for ( list<Action *>::iterator it = actions.begin();
it != actions.end();
it++ ) {
Action *act = *it;
act->act_on_terminal( &terminal );
delete act;
}
}
return terminal.read_octets_to_host();
}
string Terminal::Complete::act( const Action *act )
{
/* apply action to terminal */
act->act_on_terminal( &terminal );
return terminal.read_octets_to_host();
}
+28
View File
@@ -0,0 +1,28 @@
#ifndef COMPLETE_TERMINAL_HPP
#define COMPLETE_TERMINAL_HPP
#include "parser.hpp"
#include "terminal.hpp"
/* This class represents the complete terminal -- a UTF8Parser feeding Actions to an Emulator. */
namespace Terminal {
class Complete {
private:
Parser::UTF8Parser parser;
Terminal::Emulator terminal;
public:
Complete( size_t width, size_t height ) : parser(), terminal( width, height ) {}
std::string act( const std::string &str );
std::string act( const Parser::Action *act );
std::string open( void ) { return terminal.open(); }
std::string close( void ) { return terminal.close(); }
const Framebuffer & get_fb( void ) { return terminal.get_fb(); }
};
}
#endif