User forums > General (but related to Code::Blocks)
wxsmith generate inconsistent EOL
(1/1)
ollydbg:
See this screen shot below
I just use the wizard to create a wxWidgtes 3.0 simple project (C::B revision 9781, WinXP)
stahta01:
The line that I guess causes the problem.
From src\plugins\scriptedwizard\resources\wxwidgets\wizard.script
--- Code: ---local PchInclude = WantPCH ? ( _T("#include \"") + PCHFileName + _T("\"\n") ) : _T("");
--- End code ---
Tim S.
ollydbg:
Hi, Tim, thanks.
Now, we have such code:
--- Code: ---// -----------------------------------------------------------------------------
// substitute all plugin macros in <buffer>
function SubstituteMacros(buffer)
{
// handle [IF] / [ENDIF] pairs
if (GuiBuilder == 0)
{
if (GuiAppType == 0)
{
buffer = HandleDirective(buffer, _T("WXDIALOG"), true);
buffer = HandleDirective(buffer, _T("WXFRAME"), false);
}
else if (GuiAppType == 1)
{
buffer = HandleDirective(buffer, _T("WXDIALOG"), false);
buffer = HandleDirective(buffer, _T("WXFRAME"), true);
}
buffer = HandleDirective(buffer, _T("NONE"), true);
buffer = HandleDirective(buffer, _T("WXFB"), false);
}
else if (GuiBuilder == 1)
{
if (GuiAppType == 0)
{
buffer = HandleDirective(buffer, _T("WXDIALOG"), true);
buffer = HandleDirective(buffer, _T("WXFRAME"), false);
}
else if (GuiAppType == 1)
{
buffer = HandleDirective(buffer, _T("WXDIALOG"), false);
buffer = HandleDirective(buffer, _T("WXFRAME"), true);
}
}
else if (GuiBuilder == 2)
{
if (GuiAppType == 0)
{
buffer = HandleDirective(buffer, _T("WXDIALOG"), true);
buffer = HandleDirective(buffer, _T("WXFRAME"), false);
}
else if (GuiAppType == 1)
{
buffer = HandleDirective(buffer, _T("WXDIALOG"), false);
buffer = HandleDirective(buffer, _T("WXFRAME"), true);
}
buffer = HandleDirective(buffer, _T("NONE"), false);
buffer = HandleDirective(buffer, _T("WXFB"), true);
}
buffer = HandleDirective(buffer, _T("WINDOWS"), (PLATFORM == PLATFORM_MSW ? true : false));
// create class name from project name which is valid c++ identifier
local Prefix = GetFixedProjectName(Wizard.GetProjectName());
local PchInclude = WantPCH ? ( _T("#include \"") + PCHFileName + _T("\"\n") ) : _T("");
// macros substitution
buffer.Replace(_T("[PROJECT_HDR]"), Prefix.Upper() );
buffer.Replace(_T("[PROJECT_NAME]"), Wizard.GetProjectName());
buffer.Replace(_T("[FILENAME_PREFIX]"), Prefix);
buffer.Replace(_T("[CLASS_PREFIX]"), Prefix);
buffer.Replace(_T("[AUTHOR_NAME]"), ProjAuthor);
buffer.Replace(_T("[AUTHOR_EMAIL]"), ProjEmail);
buffer.Replace(_T("[AUTHOR_WWW]"), ProjWebsite);
buffer.Replace(_T("[NOW]"), ReplaceMacros(_T("$(TODAY)"), false));
buffer.Replace(_T("[PCH_INCLUDE]"), PchInclude);
return buffer;
}
--- End code ---
The PCH_INCLUDE will be replaced either by empty string or a #include statement with \n as the EOL.
The whole buffer is a template source file, such as Main.cpp
--- Code: ---/***************************************************************
* Name: [FILENAME_PREFIX]Main.cpp
* Purpose: Code for Application Frame
* Author: [AUTHOR_NAME] ([AUTHOR_EMAIL])
* Created: [NOW]
* Copyright: [AUTHOR_NAME] ([AUTHOR_WWW])
* License:
**************************************************************/
[PCH_INCLUDE]#include "[FILENAME_PREFIX]Main.h"
#include <wx/msgdlg.h>
//(*InternalHeaders([CLASS_PREFIX][IF WXFRAME]Frame[ENDIF WXFRAME][IF WXDIALOG]Dialog[ENDIF WXDIALOG])
//*)
//helper functions
enum wxbuildinfoformat {
short_f, long_f };
--- End code ---
The file under my system has CRLF.
So, what is the solution? Do we have any way to determine the EOL of the template file?
Another method is the use the EOL which is depend on the operation system, we already have some conditions in the script like:
--- Code: ---if (PLATFORM != PLATFORM_MSW)
...
else
...
--- End code ---
stahta01:
I would suggest using "GetEOLStr(stc->GetEOLMode())"; but, I am not sure it is the correct function.
And, I am not sure how to get it used in a script file.
Looks like "GetEOLStr(-1)" should work easier than "GetEOLStr(stc->GetEOLMode())".
Tim S.
Navigation
[0] Message Index
Go to full version