diff options
Diffstat (limited to 'test/cbot/CBot_console/CBotDoc.cpp')
-rw-r--r-- | test/cbot/CBot_console/CBotDoc.cpp | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/test/cbot/CBot_console/CBotDoc.cpp b/test/cbot/CBot_console/CBotDoc.cpp new file mode 100644 index 0000000..1c694c9 --- /dev/null +++ b/test/cbot/CBot_console/CBotDoc.cpp @@ -0,0 +1,122 @@ +/* + * CBotDoc.cpp + * + * Created on: 08-08-2012 + * Author: michal + */ +#include "CBotDoc.h" +#include "CBotConsole.h" +#include <iostream> + +CBotDoc::CBotDoc(std::string s) { + // TODO Auto-generated constructor stub + // TODO set m_DocText +// m_pEdit = NULL; + m_pProg = NULL; +// m_bModified = FALSE; + m_DocText = s; + std::cout << s << std::endl; +// std::cout << "Enter to continue..." << std::endl; +// getchar(); +} + +CBotDoc::~CBotDoc() { + +// delete m_pEdit; + delete m_pProg; +} + + +//static bool test = false; + +void CBotDoc::OnRun() +{ + +// m_pEdit->GetWindowText(m_DocText); + CBotString s; + + std::string TextError; + int code, start, end; + + if ( m_pProg == NULL ) m_pProg = new CBotProgram(); + + if (!m_pProg->Compile(m_DocText.c_str(), m_Liste, NULL)) + { + m_pProg->GetError(code, start, end); + delete m_pProg; + m_pProg = NULL; + + TextError = CBotProgram::GetErrorText( code ); + std::cout << TextError << std::endl; + return; + } + + if( m_Liste.GetSize() == 0 ) + { + std::cout << "No function marked \"extern\" !\n"; + return; + } + + for ( int i = 0; i < m_Liste.GetSize(); i++ ) + { + int start, stop; + m_pProg->GetPosition(m_Liste[i], start, stop, GetPosNom, GetPosParam); + CBotString s(m_DocText.substr( start, stop-start ).c_str()); + m_Liste[i] = s; + } +// TODO + CBotConsole dlg; + dlg.m_pListe = &m_Liste; +// dlg.m_pEditx = m_pEdit; + + dlg.OnInitDialog(); + dlg.OnOK(); + dlg.EndProg(); +// if ( dlg.m_code>0 ) +// { +// std::string TextError; +// +// TextError = m_pProg->GetErrorText( dlg.m_code ); +// +// std::cout <<TextError; +// } + + return; +} + +bool CBotDoc::Compile() +{ +// m_pEdit->GetWindowText(m_DocText); + + std::string TextError; + int code, start, end; + + if ( m_pProg == NULL ) m_pProg = new CBotProgram(); + + char buffer[100]; + strcpy(buffer, "a pointer move to see"); + + if (!m_pProg->Compile(m_DocText.c_str(), m_Liste, static_cast<void*>(buffer))) + { + m_pProg->GetError(code, start, end); + delete m_pProg; + m_pProg = NULL; + +// m_pEdit->SetSel( start, end ); +// m_pEdit->SetFocus(); // higlights part of problem + + TextError = CBotProgram::GetErrorText( code ); + std::cout << TextError ; + + return false; + } + +// if ( m_pProg->GetPosition( "TheTest", start, end) ) +// { +// m_pEdit->SetSel( start, end ); +// m_pEdit->SetFocus(); // higlights part of problem +// } + +// m_bModified = FALSE; + return true; +} |