mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-15 14:16:07 -06:00
ide: PDB debugger now can use Esc scripts for pretty printing
This commit is contained in:
parent
33431e0b32
commit
fa58d0c40a
39 changed files with 1118 additions and 630 deletions
|
|
@ -167,9 +167,11 @@ CONSOLE_APP_MAIN
|
||||||
Execute(global, "main", INT_MAX);
|
Execute(global, "main", INT_MAX);
|
||||||
}
|
}
|
||||||
catch(CParser::Error e) {
|
catch(CParser::Error e) {
|
||||||
|
DDUMP(e);
|
||||||
Cout() << "ERROR: " << e << "\n";
|
Cout() << "ERROR: " << e << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DDUMP(global);
|
||||||
DDUMP(global.Get("out"));
|
DDUMP(global.Get("out"));
|
||||||
DDUMP(global.Get("out2"));
|
DDUMP(global.Get("out2"));
|
||||||
DDUMP(global.Get("out3"));
|
DDUMP(global.Get("out3"));
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ uses
|
||||||
Esc;
|
Esc;
|
||||||
|
|
||||||
file
|
file
|
||||||
|
test2.esc,
|
||||||
test.esc,
|
test.esc,
|
||||||
Esc.cpp;
|
Esc.cpp;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,14 +25,22 @@ CONSOLE_APP_MAIN
|
||||||
RLOG(e);
|
RLOG(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
code = LoadFile(GetDataFile("test2.esc"));
|
||||||
|
|
||||||
|
try {
|
||||||
|
Scan(global, code);
|
||||||
|
EscValue data_ptr;
|
||||||
|
for(int i = 0; i < 100; i++)
|
||||||
|
{
|
||||||
|
RTIMING("run test 2");
|
||||||
|
data_ptr = Execute(global, "test", INT_MAX);
|
||||||
|
}
|
||||||
|
RDUMP(data_ptr);
|
||||||
|
}
|
||||||
|
catch(CParser::Error e) {
|
||||||
|
RLOG(e);
|
||||||
|
}
|
||||||
|
|
||||||
RLOG("");
|
RLOG("");
|
||||||
RLOG("-----------------------");
|
RLOG("-----------------------");
|
||||||
|
|
||||||
DUMP(global.GetAdd("result"));
|
|
||||||
|
|
||||||
// EscValue v;
|
|
||||||
// v.SetArray().Add(123);
|
|
||||||
// EscValue v2 = v;
|
|
||||||
// v.SetArray().Add(v);
|
|
||||||
// DUMP(v);
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,14 @@ sieve()
|
||||||
N = 2000;
|
N = 2000;
|
||||||
sieve = N * [1];
|
sieve = N * [1];
|
||||||
prime = [];
|
prime = [];
|
||||||
|
:ii = 0;
|
||||||
for(i = 2; i < N; i++) {
|
for(i = 2; i < N; i++) {
|
||||||
if(sieve[i]) {
|
if(sieve[i]) {
|
||||||
prime[] = i;
|
prime[] = i;
|
||||||
for(j = i; j < N; j += i)
|
for(j = i; j < N; j += i) {
|
||||||
sieve[j] = 0;
|
sieve[j] = 0;
|
||||||
|
:ii++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return prime;
|
return prime;
|
||||||
|
|
|
||||||
10
benchmarks/BenchEsc/test2.esc
Normal file
10
benchmarks/BenchEsc/test2.esc
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
test()
|
||||||
|
{
|
||||||
|
item.address = 1;
|
||||||
|
from = 100;
|
||||||
|
sz = 16;
|
||||||
|
data_ptr = [];
|
||||||
|
for(ii = 0; ii < 20000; ii++)
|
||||||
|
data_ptr[] = item.address + (ii + from) * sz;
|
||||||
|
return data_ptr;
|
||||||
|
}
|
||||||
|
|
@ -32,7 +32,7 @@ CONSOLE_APP_MAIN
|
||||||
Escape(global, "InputNumber()", SIC_InputNumber);
|
Escape(global, "InputNumber()", SIC_InputNumber);
|
||||||
StdLib(global);
|
StdLib(global);
|
||||||
try {
|
try {
|
||||||
Scan(global, LoadFile(GetDataFile("script.esc")));
|
Scan(global, LoadDataFile("script.esc"));
|
||||||
Execute(global, "main", INT_MAX);
|
Execute(global, "main", INT_MAX);
|
||||||
}
|
}
|
||||||
catch(CParser::Error e) {
|
catch(CParser::Error e) {
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,28 @@ void CSyntax::InitKeywords()
|
||||||
"GetMinSize", "GetStdSize",
|
"GetMinSize", "GetStdSize",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
static const char *dbg[] = {
|
||||||
|
"void", "self", "if", "else", "while", "do", "case",
|
||||||
|
"default", "break", "return", "switch", "operator", "for",
|
||||||
|
"fn", "typename",
|
||||||
|
"value", "from", "items", "template_param",
|
||||||
|
"TEXT", "HAS_DATA", "ITEM_COUNT", "ITEM_TYPE", "STRING",
|
||||||
|
"ITEM_PTR", "ITEM_PTRS", "ITEM_DEREF_PTRS", "CHUNK",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
static const char *dbglib[] = {
|
||||||
|
"is_number", "is_array", "is_map", "is_void", "int", "to_string", "to_number",
|
||||||
|
"count", "keys", "values", "rand", "reverse", "sort", "order", "replace",
|
||||||
|
"ToUpper", "ToLower", "len", "mid", "exists",
|
||||||
|
|
||||||
|
"SizeOf", "TypeName", "DeRef", "Field",
|
||||||
|
"PeekPtr", "Peek8", "Peek16", "Peek32", "Peek64", "Peek32f", "Peek64f",
|
||||||
|
"SizeOfPtr",
|
||||||
|
|
||||||
|
"LOG",
|
||||||
|
|
||||||
|
NULL
|
||||||
|
};
|
||||||
static const char *java[] = {
|
static const char *java[] = {
|
||||||
"abstract", "assert", "boolean", "byte", "case",
|
"abstract", "assert", "boolean", "byte", "case",
|
||||||
"catch", "char", "class", "const",
|
"catch", "char", "class", "const",
|
||||||
|
|
@ -337,6 +359,7 @@ void CSyntax::InitKeywords()
|
||||||
LoadSyntax(css, cssn);
|
LoadSyntax(css, cssn);
|
||||||
LoadSyntax(empty, empty); // This is JSON - no keywords to highlights
|
LoadSyntax(empty, empty); // This is JSON - no keywords to highlights
|
||||||
LoadSyntax(php, php2);
|
LoadSyntax(php, php2);
|
||||||
|
LoadSyntax(dbg, dbglib);
|
||||||
|
|
||||||
kw_macros = InitUpp(upp_macros);
|
kw_macros = InitUpp(upp_macros);
|
||||||
kw_logs = InitUpp(upp_logs);
|
kw_logs = InitUpp(upp_logs);
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ public:
|
||||||
enum HighlightType {
|
enum HighlightType {
|
||||||
HIGHLIGHT_NONE = -1, HIGHLIGHT_CPP = 0, HIGHLIGHT_USC, HIGHLIGHT_JAVA, HIGHLIGHT_T,
|
HIGHLIGHT_NONE = -1, HIGHLIGHT_CPP = 0, HIGHLIGHT_USC, HIGHLIGHT_JAVA, HIGHLIGHT_T,
|
||||||
HIGHLIGHT_CALC, HIGHLIGHT_LAY, HIGHLIGHT_SCH, HIGHLIGHT_SQL, HIGHLIGHT_CS,
|
HIGHLIGHT_CALC, HIGHLIGHT_LAY, HIGHLIGHT_SCH, HIGHLIGHT_SQL, HIGHLIGHT_CS,
|
||||||
HIGHLIGHT_JAVASCRIPT, HIGHLIGHT_CSS, HIGHLIGHT_JSON, HIGHLIGHT_PHP,
|
HIGHLIGHT_JAVASCRIPT, HIGHLIGHT_CSS, HIGHLIGHT_JSON, HIGHLIGHT_PHP, HIGHLIGHT_DBG,
|
||||||
HIGHLIGHT_COUNT
|
HIGHLIGHT_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ void RegisterSyntaxModules()
|
||||||
RegisterCSyntax("usc", CSyntax::HIGHLIGHT_USC, "*.usc", "U++ widget definitions");
|
RegisterCSyntax("usc", CSyntax::HIGHLIGHT_USC, "*.usc", "U++ widget definitions");
|
||||||
RegisterCSyntax("calc", CSyntax::HIGHLIGHT_CALC, "", "");
|
RegisterCSyntax("calc", CSyntax::HIGHLIGHT_CALC, "", "");
|
||||||
RegisterCSyntax("php", CSyntax::HIGHLIGHT_PHP, "*.php", "PHP");
|
RegisterCSyntax("php", CSyntax::HIGHLIGHT_PHP, "*.php", "PHP");
|
||||||
|
RegisterCSyntax("usc", CSyntax::HIGHLIGHT_DBG, "*.dbg", "Debugger pretty printing scripts");
|
||||||
|
|
||||||
EditorSyntax::Register("diff", callback(CreateDiffSyntax), "*.diff *.patch", "Diff");
|
EditorSyntax::Register("diff", callback(CreateDiffSyntax), "*.diff *.patch", "Diff");
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,24 @@ namespace Upp {
|
||||||
#define IMAGEFILE <CtrlLib/Ctrls.iml>
|
#define IMAGEFILE <CtrlLib/Ctrls.iml>
|
||||||
#include <Draw/iml_source.h>
|
#include <Draw/iml_source.h>
|
||||||
|
|
||||||
|
void NewStyleArrows()
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
// TODO
|
||||||
|
CtrlImg::Set(CtrlImg::I_smallup, CtrlImg::smallup_n());
|
||||||
|
CtrlImg::Set(CtrlImg::I_smalldown, MirrorVert(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlImg::I_smallleft, RotateAntiClockwise(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlImg::I_smallright, RotateClockwise(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlsImg::I_UA, CtrlImg::smallup_n());
|
||||||
|
CtrlImg::Set(CtrlsImg::I_DA, MirrorVert(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlsImg::I_LA, RotateAntiClockwise(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlsImg::I_RA, RotateClockwise(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlsImg::I_kUA, CtrlImg::smallup_n());
|
||||||
|
CtrlImg::Set(CtrlsImg::I_kDA, MirrorVert(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlsImg::I_kLA, RotateAntiClockwise(CtrlImg::smallup_n()));
|
||||||
|
CtrlImg::Set(CtrlsImg::I_kRA, RotateClockwise(CtrlImg::smallup_n()));
|
||||||
|
}
|
||||||
|
|
||||||
Color AdjustColor(Color c, int adj)
|
Color AdjustColor(Color c, int adj)
|
||||||
{
|
{
|
||||||
return Color(clamp(c.GetR() + adj, 0, 255),
|
return Color(clamp(c.GetR() + adj, 0, 255),
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@ Color FaceColor(int adj);
|
||||||
// Creates synthetic style based on SColors and basic button face
|
// Creates synthetic style based on SColors and basic button face
|
||||||
void ChSynthetic(Image *button100x100, Color *text, bool macos = false, int dpi = DPI(1));
|
void ChSynthetic(Image *button100x100, Color *text, bool macos = false, int dpi = DPI(1));
|
||||||
|
|
||||||
|
void NewStyleArrows();
|
||||||
|
|
||||||
// for diagnostics purposes
|
// for diagnostics purposes
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
void SetChameleonSample(const Value& m, bool once = true);
|
void SetChameleonSample(const Value& m, bool once = true);
|
||||||
|
|
|
||||||
|
|
@ -426,8 +426,14 @@ void ChHostSkin0()
|
||||||
else for(sysColor *s = sSysColor; s < sSysColor + __countof(sSysColor); s++) // this also resets all imls via SColorPaper_Write!!!
|
else for(sysColor *s = sSysColor; s < sSysColor + __countof(sSysColor); s++) // this also resets all imls via SColorPaper_Write!!!
|
||||||
(*s->set)(sAdjust(Color::FromCR(GetSysColor(s->syscolor))));
|
(*s->set)(sAdjust(Color::FromCR(GetSysColor(s->syscolor))));
|
||||||
|
|
||||||
|
if(IsWin11())
|
||||||
|
NewStyleArrows();
|
||||||
|
|
||||||
ChBaseSkin();
|
ChBaseSkin();
|
||||||
|
|
||||||
|
if(IsWin11())
|
||||||
|
NewStyleArrows();
|
||||||
|
|
||||||
GUI_GlobalStyle_Write(GUISTYLE_XP);
|
GUI_GlobalStyle_Write(GUISTYLE_XP);
|
||||||
#ifndef PLATFORM_WINCE
|
#ifndef PLATFORM_WINCE
|
||||||
GUI_DragFullWindow_Write(IsSysFlag(SPI_GETDRAGFULLWINDOWS));
|
GUI_DragFullWindow_Write(IsSysFlag(SPI_GETDRAGFULLWINDOWS));
|
||||||
|
|
@ -736,6 +742,9 @@ void ChHostSkin0()
|
||||||
14, 26);
|
14, 26);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if(IsWin11())
|
||||||
|
// NewStyleArrows();
|
||||||
|
|
||||||
// LabelBoxTextColor_Write(XpColor(XP_BUTTON, BP_GROUPBOX, GBS_NORMAL, 3803/*TMT_TEXTCOLOR*/));
|
// LabelBoxTextColor_Write(XpColor(XP_BUTTON, BP_GROUPBOX, GBS_NORMAL, 3803/*TMT_TEXTCOLOR*/));
|
||||||
// LabelBoxColor_Write(XpColor(XP_BUTTON, BP_GROUPBOX, GBS_NORMAL, 3822/*TMT_BORDERCOLORHINT*/));
|
// LabelBoxColor_Write(XpColor(XP_BUTTON, BP_GROUPBOX, GBS_NORMAL, 3822/*TMT_BORDERCOLORHINT*/));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ IMAGE_ID(information)
|
||||||
IMAGE_ID(question)
|
IMAGE_ID(question)
|
||||||
IMAGE_ID(error)
|
IMAGE_ID(error)
|
||||||
IMAGE_ID(smallcheck)
|
IMAGE_ID(smallcheck)
|
||||||
|
IMAGE_ID(smallup_n)
|
||||||
|
IMAGE_ID(spinup_n)
|
||||||
IMAGE_ID(smallup)
|
IMAGE_ID(smallup)
|
||||||
IMAGE_ID(smalldown)
|
IMAGE_ID(smalldown)
|
||||||
IMAGE_ID(smallleft)
|
IMAGE_ID(smallleft)
|
||||||
|
|
@ -280,67 +282,77 @@ IMAGE_DATA(162,147,171,48,87,85,85,85,253,54,125,0,228,251,70,233,0,0,0,0,0,0,0,
|
||||||
IMAGE_END_DATA(832, 2)
|
IMAGE_END_DATA(832, 2)
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,219,205,113,35,55,16,134,225,182,93,150,125,244,69,119,95,173,124,152,131,179,208,198,195,40,20,4,147,112)
|
IMAGE_DATA(120,156,237,154,81,110,227,32,16,134,81,87,155,237,227,190,68,170,20,105,149,183,149,242,216,158,197,231,113,206,227,83)
|
||||||
IMAGE_DATA(20,180,70,18,181,67,16,191,131,198,255,251,108,77,21,181,36,209,24,244,55,4,201,213,202,159,242,167,68,186,6,238)
|
IMAGE_DATA(228,16,190,196,158,130,53,105,72,8,12,204,48,128,33,22,83,33,217,49,230,255,254,25,140,237,202,226,93,188,11,98)
|
||||||
IMAGE_DATA(187,58,30,119,181,220,111,222,190,58,30,111,222,231,26,51,117,190,118,127,200,83,242,115,60,133,92,147,116,157,160,237)
|
IMAGE_DATA(72,228,152,244,244,147,192,113,123,91,122,250,219,199,124,99,198,242,130,113,252,18,127,196,231,178,241,25,123,102,143,205)
|
||||||
IMAGE_DATA(239,67,39,153,52,233,80,129,80,225,208,132,226,87,252,233,125,218,129,137,218,254,46,102,66,71,79,32,124,98,150,73)
|
IMAGE_DATA(196,225,112,144,186,213,102,225,134,233,193,110,181,217,98,34,228,227,149,252,80,124,188,130,159,24,31,45,251,225,248,104)
|
||||||
IMAGE_DATA(135,90,239,250,251,80,36,98,31,31,158,207,239,242,155,107,130,190,137,61,70,225,201,62,144,189,106,236,149,157,57,187)
|
IMAGE_DATA(209,79,138,143,150,252,228,240,209,130,159,88,190,86,253,112,185,90,243,147,202,211,138,159,92,28,181,253,228,214,175,229)
|
||||||
IMAGE_DATA(159,183,141,129,98,18,110,47,104,57,77,223,101,17,74,212,39,199,236,92,183,221,179,251,251,253,207,65,39,177,159,201)
|
IMAGE_DATA(167,148,238,218,126,74,235,173,229,103,43,58,91,169,255,86,174,203,173,172,151,181,125,228,226,104,197,71,42,79,107,62)
|
||||||
IMAGE_DATA(254,56,29,29,60,92,243,244,126,92,222,143,171,227,184,124,61,70,101,46,167,184,154,81,115,73,157,199,233,120,93,231)
|
IMAGE_DATA(184,92,173,250,224,240,181,236,67,71,14,47,53,249,237,72,241,82,147,219,23,156,107,166,22,43,37,94,137,149,27,199)
|
||||||
IMAGE_DATA(60,98,231,240,85,251,172,80,251,118,156,99,231,80,160,118,244,28,188,181,79,167,243,245,114,121,185,190,255,228,61,46)
|
IMAGE_DATA(191,226,163,54,67,143,91,180,56,217,90,93,76,91,189,249,82,184,90,125,88,171,193,199,225,90,131,47,133,171,36,95)
|
||||||
IMAGE_DATA(23,185,158,207,242,241,248,196,57,120,251,253,242,114,249,24,243,199,143,159,181,182,219,230,28,183,218,219,28,182,251,95)
|
IMAGE_DATA(14,174,18,124,177,122,107,241,113,117,74,243,165,142,95,138,47,215,184,185,249,90,29,175,213,58,180,58,127,91,190,238)
|
||||||
IMAGE_DATA(95,95,28,121,120,120,113,248,58,247,240,58,110,227,255,172,255,195,250,152,215,215,215,239,199,108,183,31,31,243,176,6)
|
IMAGE_DATA(215,224,226,106,173,197,197,209,91,147,139,163,185,38,87,77,205,205,199,47,177,227,156,230,75,190,239,51,58,223,39,120)
|
||||||
IMAGE_DATA(209,89,223,175,181,125,141,31,31,23,177,6,81,181,183,122,254,113,99,235,95,247,245,163,215,126,91,239,219,152,91,31)
|
IMAGE_DATA(208,239,216,103,120,81,208,152,0,38,140,1,209,103,225,110,193,70,64,161,223,40,64,92,3,184,49,0,26,43,189,239)
|
||||||
IMAGE_DATA(242,230,249,221,131,232,181,143,233,253,243,243,229,238,113,246,12,222,245,32,170,118,76,239,205,252,135,122,148,82,223,183)
|
IMAGE_DATA(119,108,74,80,251,227,60,63,197,15,31,96,8,204,157,10,59,120,32,88,149,250,237,105,34,221,99,219,26,136,50,195)
|
||||||
IMAGE_DATA(166,183,186,251,251,63,123,20,234,107,124,253,125,239,125,199,182,222,190,235,226,104,253,253,249,237,199,223,94,151,246,245)
|
IMAGE_DATA(97,65,192,102,232,178,192,102,212,119,120,232,124,219,126,186,227,242,199,140,65,192,78,204,54,112,7,199,53,135,165,205)
|
||||||
IMAGE_DATA(183,121,62,63,255,167,94,223,181,246,177,185,204,169,191,239,189,237,186,11,221,31,174,239,191,254,246,189,119,157,223,126)
|
IMAGE_DATA(75,147,158,54,223,250,100,97,25,104,154,36,150,88,142,129,175,235,229,160,50,220,180,167,12,218,186,77,84,134,2,218)
|
||||||
IMAGE_DATA(125,226,250,255,125,253,5,95,127,92,189,207,235,193,221,30,112,184,247,199,123,96,190,254,63,246,96,203,246,126,47,11)
|
IMAGE_DATA(100,134,160,246,48,76,114,158,79,114,217,11,182,121,22,114,154,196,181,127,36,67,176,222,167,211,124,29,243,124,126,104)
|
||||||
IMAGE_DATA(141,107,246,96,123,126,96,237,189,251,239,86,219,124,207,97,223,79,31,123,224,127,29,176,190,7,121,88,131,125,221,251)
|
IMAGE_DATA(169,109,155,81,105,43,6,117,124,28,79,158,249,224,44,14,55,239,120,30,213,248,15,253,51,216,103,28,199,123,31,181)
|
||||||
IMAGE_DATA(115,179,231,197,246,26,245,248,88,235,251,143,221,26,148,120,239,119,59,242,222,3,22,174,93,112,14,209,181,141,57,52)
|
IMAGE_DATA(237,246,113,114,64,158,235,102,174,225,28,187,253,8,57,32,105,43,189,240,184,84,125,105,234,147,115,175,242,173,199,84)
|
||||||
IMAGE_DATA(249,252,177,155,67,179,207,95,150,121,84,255,252,25,152,139,210,231,239,191,222,255,20,16,154,164,121,60,60,63,150,239)
|
IMAGE_DATA(117,72,227,188,215,128,156,123,74,237,247,251,249,169,31,60,7,159,106,64,210,166,212,222,158,255,88,141,98,244,67,57)
|
||||||
IMAGE_DATA(249,219,11,210,237,56,242,124,205,250,182,35,230,249,111,111,111,31,199,254,246,237,231,217,235,231,174,255,205,209,250,251)
|
IMAGE_DATA(213,186,230,241,239,26,97,117,165,235,155,181,15,53,149,239,208,117,193,213,55,253,153,227,171,117,201,212,87,156,251,253)
|
||||||
IMAGE_DATA(243,53,143,148,250,71,230,159,120,168,248,53,227,155,193,146,110,11,229,250,185,230,28,90,212,54,231,208,10,245,169,79)
|
IMAGE_DATA(191,236,250,190,220,83,231,101,138,190,89,123,232,186,195,142,227,250,225,235,207,172,189,207,159,153,31,90,253,239,215,31)
|
||||||
IMAGE_DATA(125,234,83,191,93,237,150,123,159,235,103,0,0,48,139,237,203,128,39,249,197,247,144,253,215,145,218,95,117,198,184,94)
|
IMAGE_DATA(186,254,248,106,159,86,131,167,123,0,187,246,252,26,216,235,191,91,3,53,183,205,123,25,54,174,93,3,117,62,146,251)
|
||||||
IMAGE_DATA(46,151,143,67,20,191,5,73,169,31,248,22,135,250,107,213,175,125,45,220,213,223,236,174,5,237,185,216,198,124,168,95)
|
IMAGE_DATA(224,253,87,105,219,207,28,240,253,212,173,65,120,29,0,159,65,156,28,152,186,207,222,224,249,2,173,81,110,95,240,249)
|
||||||
IMAGE_DATA(112,46,223,99,126,254,147,226,231,107,143,175,190,99,46,135,235,111,99,152,231,21,91,95,33,163,167,237,188,111,94,94)
|
IMAGE_DATA(195,200,65,137,103,63,221,210,158,1,11,107,23,100,32,107,91,12,85,222,63,12,134,106,239,95,0,199,234,239,159,8)
|
||||||
IMAGE_DATA(94,106,215,223,124,175,193,249,124,190,238,231,227,162,92,255,20,83,211,55,151,204,250,155,239,53,104,84,255,240,26,40)
|
IMAGE_DATA(75,166,247,239,223,203,95,129,192,32,237,230,156,79,141,208,249,106,65,210,141,115,126,78,125,168,81,206,191,92,46,215)
|
||||||
IMAGE_DATA(213,223,36,175,129,242,30,157,188,6,187,215,12,45,73,107,32,250,251,83,244,26,20,124,127,20,92,131,219,235,132,148)
|
IMAGE_DATA(102,110,235,253,173,235,167,230,95,7,87,223,244,107,183,24,125,14,127,100,203,18,111,9,255,25,44,25,58,81,190,253)
|
||||||
IMAGE_DATA(217,19,63,214,192,53,7,99,175,40,37,244,79,242,45,222,23,3,128,154,127,223,228,77,254,57,246,63,27,107,170,242)
|
IMAGE_DATA(53,25,106,104,219,12,181,162,235,119,253,174,223,245,187,126,61,237,154,247,62,223,126,143,30,61,122,244,232,209,99,35)
|
||||||
IMAGE_DATA(107,18,64,103,170,255,170,16,208,137,212,95,149,227,58,192,76,30,190,140,244,124,1,193,53,128,217,68,229,223,113,13)
|
IMAGE_DATA(241,31,111,170,218,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
||||||
IMAGE_DATA(0,35,139,206,190,227,26,0,70,117,151,229,20,194,53,128,241,145,127,172,236,80,246,201,63,38,65,254,177,50,242,143)
|
IMAGE_END_DATA(864, 16)
|
||||||
IMAGE_DATA(149,145,127,172,140,252,99,101,228,31,43,35,255,88,25,249,199,202,200,63,86,70,254,177,50,242,143,149,145,127,172,140)
|
|
||||||
IMAGE_DATA(252,99,101,228,31,43,35,255,88,25,249,199,202,200,63,86,70,254,177,50,242,143,149,145,127,172,140,252,99,101,228,31)
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(43,35,255,88,25,249,199,202,200,63,86,70,254,177,50,242,143,149,145,127,172,172,100,254,175,102,13,199,1,180,82,34)
|
IMAGE_DATA(120,156,237,216,203,113,219,72,20,64,209,55,27,199,225,237,40,31,230,224,216,20,133,131,80,62,154,161,45,170,40,136)
|
||||||
IMAGE_DATA(255,161,188,147,127,244,66,59,255,169,217,231,26,64,75,154,249,247,102,60,97,255,0,106,209,202,191,55,235,145,207,7)
|
IMAGE_DATA(4,1,162,255,125,78,21,119,102,3,232,190,208,179,20,63,227,103,252,136,127,98,197,233,255,207,251,199,231,180,246,15)
|
||||||
IMAGE_DATA(106,83,207,127,230,24,64,77,170,249,87,24,195,58,55,207,1,228,80,201,110,14,177,231,153,207,207,168,161,183,252,231)
|
IMAGE_DATA(51,121,127,123,123,251,243,249,184,135,226,215,191,112,125,215,143,242,239,194,151,235,159,93,189,11,169,239,229,214,154,223)
|
||||||
IMAGE_DATA(28,64,170,110,243,127,240,121,64,138,238,242,159,249,124,32,69,87,249,207,125,126,163,53,196,184,134,207,191,57,70,202)
|
IMAGE_DATA(174,159,241,94,62,215,60,157,78,151,181,86,175,127,231,94,158,190,254,121,141,229,115,109,189,126,130,70,79,231,231,190)
|
||||||
IMAGE_DATA(57,39,62,15,229,180,234,197,10,249,231,51,116,223,90,126,207,49,115,254,249,30,105,12,71,251,164,209,179,25,243,239)
|
IMAGE_DATA(120,121,121,41,125,253,179,207,61,120,125,125,125,191,190,159,123,18,95,255,180,229,154,107,247,114,240,250,103,159,123,80)
|
||||||
IMAGE_DATA(61,34,198,64,93,15,189,145,132,126,74,94,223,150,200,255,129,49,80,79,78,159,114,251,54,117,254,51,199,65,29,154)
|
IMAGE_DATA(233,250,79,239,65,162,235,159,237,222,131,196,51,122,247,30,92,253,204,72,101,215,30,68,250,249,180,121,15,50,254,255)
|
||||||
IMAGE_DATA(253,175,86,91,99,222,90,227,136,66,246,29,99,161,188,150,61,155,50,255,90,243,201,238,44,98,180,236,219,116,249,207)
|
IMAGE_DATA(232,225,30,92,126,78,68,158,153,248,103,15,238,221,195,98,86,228,114,253,127,224,91,159,26,255,47,6,72,230,215,239)
|
||||||
IMAGE_DATA(117,112,29,113,92,203,222,145,127,207,88,122,45,134,135,90,239,140,254,21,173,173,53,111,141,113,52,215,80,200,127,109)
|
IMAGE_DATA(248,29,255,198,143,218,247,241,200,218,15,226,26,191,32,66,9,143,186,247,14,48,170,61,237,123,15,24,205,183,63,70)
|
||||||
IMAGE_DATA(165,242,31,211,63,242,239,25,75,183,205,112,80,205,127,98,15,201,191,103,44,253,86,195,66,61,255,9,125,36,255,158)
|
IMAGE_DATA(174,252,1,194,59,192,104,54,245,127,231,29,128,158,109,110,255,206,59,0,189,250,210,242,30,225,29,160,127,250,103,102)
|
||||||
IMAGE_DATA(177,202,180,27,134,34,249,143,236,37,249,247,140,85,174,229,216,81,237,159,167,159,222,218,57,57,81,154,95,211,49,108)
|
IMAGE_DATA(79,181,175,127,6,161,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102)
|
||||||
IMAGE_DATA(99,149,107,57,12,173,246,0,242,239,25,171,108,203,177,83,107,15,48,123,58,69,254,75,141,83,188,235,216,43,150,127)
|
IMAGE_DATA(166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127)
|
||||||
IMAGE_DATA(79,95,201,191,103,156,58,109,199,151,162,123,128,209,219,135,154,25,99,105,205,169,187,113,234,180,29,59,53,247,128,172)
|
IMAGE_DATA(102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,166,127,102,150,179,255,247,229,53,238,124,160,150)
|
||||||
IMAGE_DATA(204,104,205,181,231,113,170,118,30,155,154,123,0,249,15,140,83,181,243,184,41,154,127,75,143,201,191,99,156,202,125,199)
|
IMAGE_DATA(28,253,63,234,93,255,180,34,117,255,123,219,247,14,80,83,202,254,87,27,223,49,63,160,148,84,253,175,182,190,241,251)
|
||||||
IMAGE_DATA(167,226,123,128,217,235,156,231,230,206,177,231,113,170,119,30,55,85,242,63,19,173,53,19,242,223,131,106,123,192,44,180)
|
IMAGE_DATA(80,90,242,254,15,174,1,37,37,237,63,193,26,55,239,109,229,3,71,36,105,247,136,184,221,179,223,159,41,161,181,254)
|
||||||
IMAGE_DATA(214,75,200,127,47,200,127,2,173,245,18,242,223,11,246,128,4,90,107,37,228,191,39,228,63,146,214,90,9,249,239,9)
|
IMAGE_DATA(143,124,96,175,102,251,127,242,123,176,71,115,253,31,252,62,236,209,84,255,71,191,95,105,15,233,87,247,253,47,215,216)
|
||||||
IMAGE_DATA(123,64,36,173,117,18,242,223,27,242,95,145,144,255,222,176,7,84,36,228,191,71,228,191,18,33,255,61,98,15,168,68)
|
IMAGE_DATA(243,204,59,191,71,62,181,206,98,134,254,253,14,221,182,154,127,231,24,185,127,127,71,234,195,179,231,148,226,204,70,236)
|
||||||
IMAGE_DATA(200,127,175,200,127,5,66,254,123,197,30,80,129,144,255,158,145,255,194,132,252,247,140,61,160,48,33,255,189,35,255,5)
|
IMAGE_DATA(127,245,179,97,13,202,250,118,54,177,227,60,227,216,185,77,209,255,19,107,80,206,145,115,58,122,110,67,247,127,112,29)
|
||||||
IMAGE_DATA(9,249,239,29,123,64,65,66,254,71,64,254,11,17,242,63,2,246,128,66,132,252,143,130,252,23,32,228,127,20,236,1)
|
IMAGE_DATA(202,72,121,254,197,174,157,226,190,83,173,19,9,218,191,179,22,249,213,60,179,33,251,79,117,63,135,79,150,45,106,158)
|
||||||
IMAGE_DATA(5,8,249,31,9,249,87,38,228,127,36,236,1,202,132,252,143,134,252,43,18,242,63,26,246,0,69,66,254,71,68,254)
|
IMAGE_DATA(219,112,253,31,245,228,62,242,188,154,103,167,255,149,181,210,29,49,43,146,157,221,226,252,178,94,59,213,125,167,88,39)
|
||||||
IMAGE_DATA(149,8,249,31,17,123,128,18,33,255,163,34,255,153,132,236,143,140,61,32,147,144,255,209,145,255,12,66,254,71,199,30)
|
IMAGE_DATA(229,30,134,254,75,203,213,255,150,243,211,255,202,90,105,143,153,59,146,246,191,243,12,245,191,178,86,250,163,230,134,228)
|
||||||
IMAGE_DATA(112,144,144,253,89,144,255,3,132,252,207,130,61,224,0,33,255,51,33,255,137,132,252,207,132,61,32,129,144,253,25,145)
|
IMAGE_DATA(253,239,56,71,253,175,172,149,231,184,89,200,210,255,198,179,212,255,202,90,249,142,156,43,73,207,111,229,60,87,175,125)
|
||||||
IMAGE_DATA(255,72,66,254,103,196,30,16,73,200,255,172,200,127,128,144,253,153,177,7,4,8,249,159,29,249,119,16,178,191,2,246)
|
IMAGE_DATA(164,147,68,247,87,117,141,91,107,229,59,114,22,106,205,0,253,175,172,149,247,200,185,82,106,6,44,207,116,136,254,115)
|
||||||
IMAGE_DATA(0,7,33,255,171,32,255,6,33,251,43,97,15,48,8,249,95,13,249,255,34,100,127,69,236,1,95,132,252,175,138,252)
|
IMAGE_DATA(173,147,253,212,185,150,173,255,149,115,213,255,202,58,101,142,157,15,89,103,192,226,108,191,93,243,192,90,169,238,169,185)
|
||||||
IMAGE_DATA(95,201,255,194,150,223,3,132,236,175,142,252,147,255,149,45,187,7,8,217,199,39,242,143,149,45,183,7,8,217,199,61)
|
IMAGE_DATA(117,202,28,59,87,74,206,128,67,205,164,186,215,150,215,41,122,242,156,149,156,1,250,127,176,78,209,147,231,34,107,255)
|
||||||
IMAGE_DATA(242,143,149,45,179,7,152,231,218,112,205,209,151,21,243,15,220,76,191,7,152,231,216,112,173,209,167,105,175,1,243,220)
|
IMAGE_DATA(55,206,88,255,119,214,41,124,238,252,149,125,6,44,207,250,200,119,143,222,99,203,235,20,63,121,46,138,244,63,146,84)
|
||||||
IMAGE_DATA(26,174,49,250,54,221,53,96,158,83,195,181,197,24,102,206,63,16,50,205,30,96,158,75,195,53,197,88,134,191,6,204)
|
IMAGE_DATA(123,22,250,111,65,177,25,48,138,84,251,21,250,111,133,254,119,72,181,95,161,255,86,152,1,59,164,218,171,208,127,75)
|
||||||
IMAGE_DATA(115,104,184,150,24,211,176,249,23,178,143,124,195,238,1,66,246,161,99,184,107,192,156,115,195,181,195,28,134,185,6,204)
|
IMAGE_DATA(244,191,81,170,189,10,253,183,196,12,216,40,213,62,133,254,91,163,255,130,66,255,173,49,3,10,10,253,183,72,255,133)
|
||||||
IMAGE_DATA(185,54,92,51,204,197,150,173,222,15,64,75,235,44,147,125,180,214,58,211,228,31,240,35,251,0,0,0,0,0,0,0)
|
IMAGE_DATA(132,254,91,100,6,20,18,250,111,149,254,11,8,253,183,202,12,40,32,244,223,50,253,103,22,250,111,153,25,144,89,232)
|
||||||
IMAGE_DATA(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
IMAGE_DATA(191,117,250,207,40,244,223,58,51,32,163,208,127,15,244,159,73,232,191,7,102,64,38,161,255,94,232,63,131,208,127,47)
|
||||||
IMAGE_DATA(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,240,63,118,192,5,115,0,0,0,0,0)
|
IMAGE_DATA(204,128,12,66,255,61,209,127,98,161,255,158,152,1,137,133,254,123,163,255,132,66,255,189,49,3,18,10,253,247,72,255)
|
||||||
IMAGE_END_DATA(1920, 16)
|
IMAGE_DATA(137,132,254,123,100,6,36,18,250,239,149,254,15,10,237,247,204,12,56,40,244,223,59,253,31,16,250,239,157,25,240,164)
|
||||||
|
IMAGE_DATA(208,254,40,244,255,132,208,255,40,204,128,39,132,254,71,162,255,157,66,255,35,49,3,118,8,237,143,72,255,27,133,254)
|
||||||
|
IMAGE_DATA(71,100,6,108,20,250,31,149,254,31,8,237,143,204,12,120,32,244,63,58,253,223,17,218,159,129,25,112,71,232,127,22)
|
||||||
|
IMAGE_DATA(250,95,8,237,207,196,12,88,8,253,207,70,255,31,66,251,51,50,3,62,132,254,103,165,255,119,253,79,108,250,25,16)
|
||||||
|
IMAGE_DATA(218,159,157,254,245,63,179,105,103,64,104,159,191,244,207,204,166,155,1,161,125,190,210,63,51,155,102,6,44,159,181,226)
|
||||||
|
IMAGE_DATA(158,211,150,25,251,135,139,225,103,192,242,25,43,238,53,109,26,246,29,88,62,91,197,61,166,109,195,189,3,203,103,170)
|
||||||
|
IMAGE_DATA(184,183,244,97,228,254,225,145,97,102,192,242,89,42,238,41,125,233,254,29,88,62,67,197,189,164,79,221,246,31,218,231)
|
||||||
|
IMAGE_DATA(184,110,103,64,104,159,52,186,123,7,150,247,92,113,239,24,67,55,239,192,242,94,43,238,25,99,185,213,86,235,31,72)
|
||||||
|
IMAGE_DATA(165,118,203,218,167,182,218,77,235,31,214,105,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
||||||
|
IMAGE_DATA(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,248,15,147,49,197,194,0,0,0,0,0)
|
||||||
|
IMAGE_END_DATA(1280, 2)
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,156,237,109,27,49,12,134,53,66,71,200,111,183,67,120,9,21,253,153,159,69,10,116,133,56,65,167,241,20)
|
IMAGE_DATA(120,156,237,156,237,109,27,49,12,134,53,66,71,200,111,183,67,120,9,21,253,153,159,69,10,116,133,56,65,167,241,20)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
namespace Upp;
|
namespace Upp;
|
||||||
namespace Upp;
|
|
||||||
|
|
||||||
enum_property Frame {
|
enum_property Frame {
|
||||||
"NullFrame()",
|
"NullFrame()",
|
||||||
|
|
|
||||||
|
|
@ -10,19 +10,12 @@ namespace Upp {
|
||||||
|
|
||||||
#define LTIMING(x) // RTIMING(x)
|
#define LTIMING(x) // RTIMING(x)
|
||||||
|
|
||||||
void Esc::OutOfMemory()
|
force_inline void Esc::Limit(int64 count)
|
||||||
{
|
{
|
||||||
ThrowError("Out of memory");
|
LTIMING("Limit");
|
||||||
}
|
if(count > op_limit)
|
||||||
|
ThrowError("out of operations limit");
|
||||||
void Esc::TestLimit()
|
op_limit -= count;
|
||||||
{
|
|
||||||
LTIMING("TestLimit");
|
|
||||||
if(!IsNull(op_limit))
|
|
||||||
if(op_limit < 0)
|
|
||||||
ThrowError("out of operations limit - considered frozen");
|
|
||||||
if(EscValue::GetTotalCount() >= EscValue::GetMaxTotalCount())
|
|
||||||
OutOfMemory();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue Esc::Get(const SRVal& val)
|
EscValue Esc::Get(const SRVal& val)
|
||||||
|
|
@ -31,99 +24,92 @@ EscValue Esc::Get(const SRVal& val)
|
||||||
if(skipexp)
|
if(skipexp)
|
||||||
return (int64)1;
|
return (int64)1;
|
||||||
EscValue v = val.lval ? *val.lval : val.rval;
|
EscValue v = val.lval ? *val.lval : val.rval;
|
||||||
if(val.sbs.IsArray()) {
|
for(const auto& ss : val.subscript) {
|
||||||
const Vector<EscValue>& sbs = val.sbs.GetArray();
|
if(v.IsMap() && ss.slice == 0)
|
||||||
for(int i = 0; i < sbs.GetCount(); i++) {
|
v = v.MapGet(ss.i1);
|
||||||
const EscValue& ss = sbs[i];
|
else
|
||||||
if(v.IsMap()) //!!!! (problem with a[1, 2]
|
if(v.IsArray()) {
|
||||||
v = v.MapGet(ss);
|
int count = v.GetCount();
|
||||||
else
|
if(ss.slice) {
|
||||||
if(v.IsArray()) {
|
int i = ss.i1.GetInt();
|
||||||
int count = v.GetCount();
|
int n = count - i;
|
||||||
if(ss.IsArray() && ss.GetArray().GetCount() >= 2) {
|
if(ss.slice == 1)
|
||||||
EscValue v1 = ss.ArrayGet(0);
|
n = ss.i2.IsInt() ? ss.i2.GetInt() : n;
|
||||||
EscValue v2 = ss.ArrayGet(1);
|
|
||||||
int i = v1.GetInt();
|
|
||||||
int n = count - i;
|
|
||||||
if(ss.GetCount() == 2)
|
|
||||||
n = v2.IsInt() ? v2.GetInt() : n;
|
|
||||||
else {
|
|
||||||
if(v2.IsInt()) {
|
|
||||||
n = v2.GetInt();
|
|
||||||
if(n < 0)
|
|
||||||
n += count;
|
|
||||||
n -= i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(i >= 0 && n >= 0 && i + n <= count)
|
|
||||||
v = v.ArrayGet(i, n);
|
|
||||||
else
|
|
||||||
ThrowError("slice out of range");
|
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
int64 i = Int(ss, "index");
|
if(ss.i2.IsInt()) {
|
||||||
if(i < 0)
|
n = ss.i2.GetInt();
|
||||||
i += count;
|
if(n < 0)
|
||||||
if(i >= 0 && i < count)
|
n += count;
|
||||||
v = v.ArrayGet((int)i);
|
n -= i;
|
||||||
else
|
}
|
||||||
ThrowError("index out of range");
|
|
||||||
}
|
}
|
||||||
|
if(i >= 0 && n >= 0 && i + n <= count)
|
||||||
|
v = v.ArrayGet(i, n);
|
||||||
|
else
|
||||||
|
ThrowError("slice out of range");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
int64 i = Int(ss.i1, "index");
|
||||||
|
if(i < 0)
|
||||||
|
i += count;
|
||||||
|
if(i >= 0 && i < count)
|
||||||
|
v = v.ArrayGet((int)i);
|
||||||
|
else
|
||||||
|
ThrowError("index out of range");
|
||||||
}
|
}
|
||||||
else
|
|
||||||
ThrowError("invalid indirection");
|
|
||||||
TestLimit();
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
ThrowError("invalid indirection");
|
||||||
}
|
}
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Esc::Assign(EscValue& val, const Vector<EscValue>& sbs, int si, const EscValue& src)
|
void Esc::Assign(EscValue& val, const Vector<SRVal::Subscript>& subscript, int si, const EscValue& src)
|
||||||
{
|
{
|
||||||
LTIMING("Assign");
|
LTIMING("Assign with subscript");
|
||||||
const EscValue& ss = sbs[si++];
|
const auto& ss = subscript[si++];
|
||||||
if(val.IsVoid())
|
if(val.IsVoid())
|
||||||
val.SetEmptyMap();
|
val.SetEmptyMap();
|
||||||
if(val.IsMap()) {
|
if(val.IsMap()) {
|
||||||
if(si < sbs.GetCount()) {
|
if(ss.slice)
|
||||||
EscValue x = val.MapGet(ss);
|
ThrowError("invalid indirection");
|
||||||
val.MapSet(ss, 0.0);
|
if(si < subscript.GetCount()) {
|
||||||
Assign(x, sbs, si, src);
|
EscValue x = val.MapGet(ss.i1);
|
||||||
val.MapSet(ss, x);
|
val.MapSet(ss.i1, 0.0);
|
||||||
|
Assign(x, subscript, si, src);
|
||||||
|
val.MapSet(ss.i1, x);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
val.MapSet(ss, src);
|
val.MapSet(ss.i1, src);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(val.IsArray()) {
|
if(val.IsArray()) {
|
||||||
if(si < sbs.GetCount()) {
|
if(si < subscript.GetCount()) {
|
||||||
if(ss.IsArray())
|
if(ss.slice)
|
||||||
ThrowError("slice must be last subscript");
|
ThrowError("slice must be the last subscript");
|
||||||
int64 i = Int(ss, "index");
|
int64 i = Int(ss.i1, "index");
|
||||||
if(i >= 0 && i < val.GetCount()) {
|
if(i >= 0 && i < val.GetCount()) {
|
||||||
EscValue x = val.ArrayGet((int)i);
|
EscValue x = val.ArrayGet((int)i);
|
||||||
val.ArraySet((int)i, 0.0);
|
val.ArraySet((int)i, 0.0);
|
||||||
Assign(x, sbs, si, src);
|
Assign(x, subscript, si, src);
|
||||||
if(!val.ArraySet((int)i, x))
|
val.ArraySet((int)i, x);
|
||||||
OutOfMemory();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int count = val.GetCount();
|
int count = val.GetCount();
|
||||||
if(ss.IsArray()) {
|
if(ss.slice) {
|
||||||
if(!src.IsArray() || ss.GetArray().GetCount() < 2)
|
if(!src.IsArray())
|
||||||
ThrowError("only array can be assigned to the slice");
|
ThrowError("only array can be assigned to the slice");
|
||||||
EscValue v1 = ss.ArrayGet(0);
|
Limit(src.GetCount());
|
||||||
EscValue v2 = ss.ArrayGet(1);
|
int i = ss.i1.IsInt() ? ss.i1.GetInt() : 0;
|
||||||
int i = v1.IsInt() ? v1.GetInt() : 0;
|
|
||||||
int n = count - i;
|
int n = count - i;
|
||||||
if(ss.GetCount() == 2)
|
if(ss.slice == 1)
|
||||||
n = v2.IsInt() ? v2.GetInt() : n;
|
n = ss.i2.IsInt() ? ss.i2.GetInt() : n;
|
||||||
else {
|
else {
|
||||||
if(v2.IsInt()) {
|
if(ss.i2.IsInt()) {
|
||||||
n = v2.GetInt();
|
n = ss.i2.GetInt();
|
||||||
if(n < 0)
|
if(n < 0)
|
||||||
n += count;
|
n += count;
|
||||||
n -= i;
|
n -= i;
|
||||||
|
|
@ -137,12 +123,12 @@ void Esc::Assign(EscValue& val, const Vector<EscValue>& sbs, int si, const EscVa
|
||||||
ThrowError("slice out of range");
|
ThrowError("slice out of range");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int64 i = ss.IsVoid() ? val.GetCount() : Int(ss, "index");
|
int64 i = ss.i1.IsVoid() ? val.GetCount() : Int(ss.i1, "index");
|
||||||
if(i < 0)
|
if(i < 0)
|
||||||
i = count + i;
|
i = count + i;
|
||||||
if(i >= 0 && i < INT_MAX) {
|
if(i >= 0 && i < INT_MAX) {
|
||||||
if(!val.ArraySet((int)i, src))
|
Limit(max(i - val.GetCount(), (int64)0));
|
||||||
ThrowError("out of memory");
|
val.ArraySet((int)i, src);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -157,8 +143,8 @@ void Esc::Assign(const SRVal& val, const EscValue& src)
|
||||||
return;
|
return;
|
||||||
if(!val.lval)
|
if(!val.lval)
|
||||||
ThrowError("l-value required");
|
ThrowError("l-value required");
|
||||||
if(val.sbs.IsArray() && val.sbs.GetCount())
|
if(val.subscript.GetCount())
|
||||||
Assign(*val.lval, val.sbs.GetArray(), 0, src);
|
Assign(*val.lval, val.subscript, 0, src);
|
||||||
else
|
else
|
||||||
*val.lval = src;
|
*val.lval = src;
|
||||||
}
|
}
|
||||||
|
|
@ -177,11 +163,11 @@ EscValue Esc::ExecuteLambda(const String& id, EscValue lambda, SRVal self, Vecto
|
||||||
for(int i = 0; i < l.arg.GetCount(); i++) {
|
for(int i = 0; i < l.arg.GetCount(); i++) {
|
||||||
sub.var.GetAdd(l.arg[i]) =
|
sub.var.GetAdd(l.arg[i]) =
|
||||||
i < arg.GetCount() ? Get(arg[i])
|
i < arg.GetCount() ? Get(arg[i])
|
||||||
: Evaluatex(l.def[i - (l.arg.GetCount() - l.def.GetCount())], global, op_limit);
|
: Evaluatexl(l.def[i - (l.arg.GetCount() - l.def.GetCount())], global, op_limit);
|
||||||
TestLimit();
|
Limit();
|
||||||
}
|
}
|
||||||
EscValue retval;
|
EscValue retval;
|
||||||
Array<EscValue> argvar;
|
Vector<EscValue> argvar;
|
||||||
if(l.escape) {
|
if(l.escape) {
|
||||||
argvar = sub.var.PickValues();
|
argvar = sub.var.PickValues();
|
||||||
for(int i = l.arg.GetCount(); i < arg.GetCount(); i++) {
|
for(int i = l.arg.GetCount(); i < arg.GetCount(); i++) {
|
||||||
|
|
@ -217,40 +203,28 @@ void Esc::Subscript(Esc::SRVal& r, Esc::SRVal _self, String id)
|
||||||
{
|
{
|
||||||
LTIMING("Subscript");
|
LTIMING("Subscript");
|
||||||
for(;;) {
|
for(;;) {
|
||||||
TestLimit();
|
if(Char('[')) {
|
||||||
if(Char('['))
|
auto& ss = r.subscript.Add();
|
||||||
if(Char(']'))
|
if(!IsChar(',') && !IsChar(':') && !IsChar(']'))
|
||||||
r.sbs.ArrayAdd(EscValue());
|
ss.i1 = GetExp(); // otherwise void EscValue
|
||||||
else {
|
if(Char(',')) {
|
||||||
EscValue v1, v2;
|
ss.slice = 1;
|
||||||
if(!IsChar(',') && !IsChar(':'))
|
if(!IsChar(']'))
|
||||||
v1 = GetExp();
|
ss.i2 = GetExp(); // otherwise void EscValue
|
||||||
if(Char(',')) {
|
|
||||||
if(!IsChar(']'))
|
|
||||||
v2 = GetExp();
|
|
||||||
EscValue x;
|
|
||||||
x.ArrayAdd(v1);
|
|
||||||
x.ArrayAdd(v2);
|
|
||||||
r.sbs.ArrayAdd(x);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if(Char(':')) {
|
|
||||||
if(!IsChar(']'))
|
|
||||||
v2 = GetExp();
|
|
||||||
EscValue x;
|
|
||||||
x.ArrayAdd(v1);
|
|
||||||
x.ArrayAdd(v2);
|
|
||||||
x.ArrayAdd(EscValue());
|
|
||||||
r.sbs.ArrayAdd(x);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
r.sbs.ArrayAdd(v1);
|
|
||||||
PassChar(']');
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
if(Char(':')) {
|
||||||
|
ss.slice = 2;
|
||||||
|
if(!IsChar(']'))
|
||||||
|
ss.i2 = GetExp(); // otherwise void EscValue
|
||||||
|
}
|
||||||
|
PassChar(']');
|
||||||
|
}
|
||||||
else
|
else
|
||||||
if(Char('.')) {
|
if(Char('.')) {
|
||||||
|
LTIMING("ID");
|
||||||
_self = r;
|
_self = r;
|
||||||
r.sbs.ArrayAdd(id = ReadId());
|
r.subscript.Add().i1 = id = ReadId();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(Char('(')) {
|
if(Char('(')) {
|
||||||
|
|
@ -294,10 +268,8 @@ void Esc::Subscript(Esc::SRVal& r)
|
||||||
|
|
||||||
void Esc::Term(SRVal& r)
|
void Esc::Term(SRVal& r)
|
||||||
{
|
{
|
||||||
r.sbs = EscValue();
|
r.subscript.Clear();
|
||||||
|
|
||||||
op_limit--;
|
|
||||||
TestLimit();
|
|
||||||
if(Char2('0', 'x') || Char2('0', 'X')) {
|
if(Char2('0', 'x') || Char2('0', 'X')) {
|
||||||
r = ReadNumber64(16);
|
r = ReadNumber64(16);
|
||||||
return;
|
return;
|
||||||
|
|
@ -354,7 +326,6 @@ void Esc::Term(SRVal& r)
|
||||||
if(Char('}'))
|
if(Char('}'))
|
||||||
break;
|
break;
|
||||||
PassChar(',');
|
PassChar(',');
|
||||||
TestLimit();
|
|
||||||
}
|
}
|
||||||
r = map;
|
r = map;
|
||||||
Subscript(r);
|
Subscript(r);
|
||||||
|
|
@ -369,7 +340,6 @@ void Esc::Term(SRVal& r)
|
||||||
if(Char(']'))
|
if(Char(']'))
|
||||||
break;
|
break;
|
||||||
PassChar(',');
|
PassChar(',');
|
||||||
TestLimit();
|
|
||||||
}
|
}
|
||||||
r = array;
|
r = array;
|
||||||
Subscript(r);
|
Subscript(r);
|
||||||
|
|
@ -418,7 +388,7 @@ void Esc::Term(SRVal& r)
|
||||||
else
|
else
|
||||||
if(_self.lval) {
|
if(_self.lval) {
|
||||||
r = _self;
|
r = _self;
|
||||||
r.sbs.ArrayAdd(id);
|
r.subscript.Add().i1 = id;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if(_global)
|
if(_global)
|
||||||
|
|
@ -538,13 +508,12 @@ EscValue Esc::MulArray(EscValue array, EscValue times)
|
||||||
{
|
{
|
||||||
EscValue r;
|
EscValue r;
|
||||||
r.SetEmptyArray();
|
r.SetEmptyArray();
|
||||||
for(int n = times.GetInt(); n > 0; n >>= 1) {
|
int n = times.GetInt();
|
||||||
|
Limit(n);
|
||||||
|
for(; n > 0; n >>= 1) {
|
||||||
if(n & 1)
|
if(n & 1)
|
||||||
if(!r.Append(array))
|
r.Append(array);
|
||||||
OutOfMemory();
|
array.Append(array);
|
||||||
if(!array.Append(array))
|
|
||||||
OutOfMemory();
|
|
||||||
TestLimit();
|
|
||||||
}
|
}
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
@ -603,8 +572,8 @@ void Esc::Add(Esc::SRVal& r)
|
||||||
Mul(w);
|
Mul(w);
|
||||||
EscValue b = Get(w);
|
EscValue b = Get(w);
|
||||||
if(v.IsArray() && b.IsArray()) {
|
if(v.IsArray() && b.IsArray()) {
|
||||||
if(!v.Replace(v.GetCount(), 0, b))
|
Limit(b.GetCount());
|
||||||
OutOfMemory();
|
v.Replace(v.GetCount(), 0, b);
|
||||||
r = v;
|
r = v;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -640,8 +609,8 @@ void Esc::Shift(Esc::SRVal& r)
|
||||||
Add(w);
|
Add(w);
|
||||||
EscValue b = Get(w);
|
EscValue b = Get(w);
|
||||||
if(v.IsArray() && b.IsArray()) {
|
if(v.IsArray() && b.IsArray()) {
|
||||||
if(!v.Replace(v.GetCount(), 0, b))
|
Limit(b.GetCount());
|
||||||
OutOfMemory();
|
v.Replace(v.GetCount(), 0, b);
|
||||||
Assign(r, v);
|
Assign(r, v);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -844,8 +813,8 @@ void Esc::Assign(Esc::SRVal& r)
|
||||||
Cond(w);
|
Cond(w);
|
||||||
EscValue b = Get(w);
|
EscValue b = Get(w);
|
||||||
if(v.IsArray() && b.IsArray()) {
|
if(v.IsArray() && b.IsArray()) {
|
||||||
if(!v.Replace(v.GetCount(), 0, b))
|
Limit(b.GetCount());
|
||||||
OutOfMemory();
|
v.Replace(v.GetCount(), 0, b);
|
||||||
Assign(r, v);
|
Assign(r, v);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -1043,8 +1012,7 @@ void Esc::FinishSwitch()
|
||||||
|
|
||||||
void Esc::DoStatement()
|
void Esc::DoStatement()
|
||||||
{
|
{
|
||||||
op_limit--;
|
Limit();
|
||||||
TestLimit();
|
|
||||||
if(Id("if"))
|
if(Id("if"))
|
||||||
if(PCond()) {
|
if(PCond()) {
|
||||||
DoStatement();
|
DoStatement();
|
||||||
|
|
|
||||||
101
uppsrc/Esc/Esc.h
101
uppsrc/Esc/Esc.h
|
|
@ -21,9 +21,6 @@ class EscValue : Moveable<EscValue> {
|
||||||
RefCount() { refcount = 1; }
|
RefCount() { refcount = 1; }
|
||||||
};
|
};
|
||||||
|
|
||||||
int type;
|
|
||||||
mutable hash_t hash;
|
|
||||||
|
|
||||||
struct EscMap;
|
struct EscMap;
|
||||||
struct EscArray;
|
struct EscArray;
|
||||||
|
|
||||||
|
|
@ -35,6 +32,8 @@ class EscValue : Moveable<EscValue> {
|
||||||
EscLambda *lambda;
|
EscLambda *lambda;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int type;
|
||||||
|
|
||||||
void Free();
|
void Free();
|
||||||
void Assign(const EscValue& s);
|
void Assign(const EscValue& s);
|
||||||
|
|
||||||
|
|
@ -43,16 +42,9 @@ class EscValue : Moveable<EscValue> {
|
||||||
|
|
||||||
VectorMap<EscValue, EscValue>& CloneMap();
|
VectorMap<EscValue, EscValue>& CloneMap();
|
||||||
|
|
||||||
static int total;
|
|
||||||
static int max_total;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static int GetTotalCount();
|
|
||||||
static void SetMaxTotalCount(int n);
|
|
||||||
static int GetMaxTotalCount();
|
|
||||||
|
|
||||||
bool IsVoid() const { return type == ESC_VOID; }
|
bool IsVoid() const { return type == ESC_VOID; }
|
||||||
EscValue();
|
EscValue() { type = ESC_VOID; }
|
||||||
|
|
||||||
bool IsNumber() const { return findarg(type, ESC_DOUBLE, ESC_INT64) >= 0; }
|
bool IsNumber() const { return findarg(type, ESC_DOUBLE, ESC_INT64) >= 0; }
|
||||||
double GetNumber() const;
|
double GetNumber() const;
|
||||||
|
|
@ -60,19 +52,19 @@ public:
|
||||||
int64 GetInt64() const;
|
int64 GetInt64() const;
|
||||||
bool IsInt() const;
|
bool IsInt() const;
|
||||||
int GetInt() const;
|
int GetInt() const;
|
||||||
EscValue(double n);
|
EscValue(double n) { number = n; type = ESC_DOUBLE; }
|
||||||
EscValue(int64 n);
|
EscValue(int64 n) { i64 = n; type = ESC_INT64; }
|
||||||
EscValue(int n);
|
EscValue(int n) { i64 = n; type = ESC_INT64; }
|
||||||
|
|
||||||
bool IsArray() const { return type == ESC_ARRAY; }
|
bool IsArray() const { return type == ESC_ARRAY; }
|
||||||
const Vector<EscValue>& GetArray() const;
|
const Vector<EscValue>& GetArray() const;
|
||||||
EscValue ArrayGet(int i) const;
|
EscValue ArrayGet(int i) const;
|
||||||
EscValue ArrayGet(int i, int n) const;
|
EscValue ArrayGet(int i, int n) const;
|
||||||
bool ArraySet(int i, EscValue val);
|
void ArraySet(int i, EscValue val);
|
||||||
bool Replace(int i, int n, EscValue a);
|
void Replace(int i, int n, EscValue a);
|
||||||
void SetEmptyArray();
|
void SetEmptyArray();
|
||||||
void ArrayAdd(EscValue val);
|
void ArrayAdd(EscValue val);
|
||||||
bool Append(EscValue a);
|
void Append(EscValue a);
|
||||||
|
|
||||||
operator WString() const;
|
operator WString() const;
|
||||||
operator String() const { return operator WString().ToString(); }
|
operator String() const { return operator WString().ToString(); }
|
||||||
|
|
@ -116,14 +108,29 @@ public:
|
||||||
|
|
||||||
struct EscValue::EscArray : EscValue::RefCount {
|
struct EscValue::EscArray : EscValue::RefCount {
|
||||||
Vector<EscValue> array;
|
Vector<EscValue> array;
|
||||||
|
mutable hash_t cached_hash = 0;
|
||||||
|
|
||||||
void Retain() { AtomicInc(refcount); }
|
void Retain() { AtomicInc(refcount); }
|
||||||
void Release() { if(AtomicDec(refcount) == 0) delete this; }
|
void Release() { if(AtomicDec(refcount) == 0) delete this; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline
|
||||||
|
const Vector<EscValue>& EscValue::GetArray() const
|
||||||
|
{
|
||||||
|
ASSERT(IsArray());
|
||||||
|
return array->array;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
EscValue EscValue::ArrayGet(int i) const
|
||||||
|
{
|
||||||
|
return GetArray()[i];
|
||||||
|
}
|
||||||
|
|
||||||
struct EscValue::EscMap : EscValue::RefCount {
|
struct EscValue::EscMap : EscValue::RefCount {
|
||||||
VectorMap<EscValue, EscValue> map;
|
VectorMap<EscValue, EscValue> map;
|
||||||
int count;
|
int count;
|
||||||
|
mutable hash_t cached_hash = 0;
|
||||||
|
|
||||||
void Retain() { AtomicInc(refcount); }
|
void Retain() { AtomicInc(refcount); }
|
||||||
void Release() { if(AtomicDec(refcount) == 0) delete this; }
|
void Release() { if(AtomicDec(refcount) == 0) delete this; }
|
||||||
|
|
@ -131,6 +138,19 @@ struct EscValue::EscMap : EscValue::RefCount {
|
||||||
EscMap() { count = 0; }
|
EscMap() { count = 0; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
inline
|
||||||
|
const VectorMap<EscValue, EscValue>& EscValue::GetMap() const
|
||||||
|
{
|
||||||
|
ASSERT(IsMap());
|
||||||
|
return map->map;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline
|
||||||
|
EscValue EscValue::MapGet(EscValue key) const
|
||||||
|
{
|
||||||
|
return GetMap().Get(key, EscValue());
|
||||||
|
}
|
||||||
|
|
||||||
struct EscHandle {
|
struct EscHandle {
|
||||||
Atomic refcount;
|
Atomic refcount;
|
||||||
|
|
||||||
|
|
@ -177,14 +197,20 @@ inline hash_t GetHashValue(const EscValue& v)
|
||||||
bool IsTrue(const EscValue& a);
|
bool IsTrue(const EscValue& a);
|
||||||
|
|
||||||
void SkipBlock(CParser& p);
|
void SkipBlock(CParser& p);
|
||||||
EscValue ReadLambda(CParser& p);
|
EscValue ReadLambda(CParser& p, bool args = true, const char *alt_args = nullptr);
|
||||||
EscValue ReadLambda(const char *s);
|
EscValue ReadLambda(const char *s);
|
||||||
|
|
||||||
struct Esc : public CParser {
|
struct Esc : public CParser {
|
||||||
struct SRVal : Moveable<SRVal> {
|
struct SRVal : Moveable<SRVal> {
|
||||||
EscValue *lval;
|
EscValue *lval;
|
||||||
EscValue rval;
|
EscValue rval;
|
||||||
EscValue sbs;
|
struct Subscript : Moveable<Subscript> {
|
||||||
|
EscValue i1;
|
||||||
|
EscValue i2;
|
||||||
|
int slice = 0; // 0 - simple index, 1 - ',' slice, 2 - ':' slice
|
||||||
|
};
|
||||||
|
WithDeepCopy<Vector<Subscript>> subscript;
|
||||||
|
// EscValue sbs;
|
||||||
|
|
||||||
SRVal() { lval = NULL; }
|
SRVal() { lval = NULL; }
|
||||||
SRVal(const EscValue& v) { lval = NULL; rval = v; }
|
SRVal(const EscValue& v) { lval = NULL; rval = v; }
|
||||||
|
|
@ -196,26 +222,24 @@ struct Esc : public CParser {
|
||||||
|
|
||||||
ArrayMap<String, EscValue>& global;
|
ArrayMap<String, EscValue>& global;
|
||||||
EscValue self;
|
EscValue self;
|
||||||
ArrayMap<String, EscValue> var;
|
VectorMap<String, EscValue> var;
|
||||||
|
|
||||||
int skipexp;
|
int skipexp;
|
||||||
int loop;
|
int loop;
|
||||||
bool no_break, no_return, no_continue;
|
bool no_break, no_return, no_continue;
|
||||||
int& op_limit;
|
int64& op_limit;
|
||||||
int r_stack_level;
|
int r_stack_level;
|
||||||
EscValue return_value;
|
EscValue return_value;
|
||||||
|
|
||||||
static int stack_level;
|
static int stack_level;
|
||||||
|
|
||||||
void OutOfMemory();
|
void Limit(int64 count = 1);
|
||||||
|
|
||||||
void TestLimit();
|
|
||||||
double DoCompare(const EscValue& a, const EscValue& b, const char *op);
|
double DoCompare(const EscValue& a, const EscValue& b, const char *op);
|
||||||
double DoCompare(const SRVal& a, const char *op);
|
double DoCompare(const SRVal& a, const char *op);
|
||||||
String ReadName();
|
String ReadName();
|
||||||
EscValue ExecuteLambda(const String& id, EscValue lambda, SRVal self, Vector<SRVal>& arg);
|
EscValue ExecuteLambda(const String& id, EscValue lambda, SRVal self, Vector<SRVal>& arg);
|
||||||
|
|
||||||
void Assign(EscValue& val, const Vector<EscValue>& sbs, int si, const EscValue& src);
|
void Assign(EscValue& val, const Vector<SRVal::Subscript>& sbs, int si, const EscValue& src);
|
||||||
|
|
||||||
EscValue Get(const SRVal& val);
|
EscValue Get(const SRVal& val);
|
||||||
void Assign(const SRVal& val, const EscValue& src);
|
void Assign(const SRVal& val, const EscValue& src);
|
||||||
|
|
@ -256,7 +280,7 @@ struct Esc : public CParser {
|
||||||
|
|
||||||
void Run();
|
void Run();
|
||||||
|
|
||||||
Esc(ArrayMap<String, EscValue>& global, const char *s, int& oplimit,
|
Esc(ArrayMap<String, EscValue>& global, const char *s, int64& oplimit,
|
||||||
const String& fn, int line = 1)
|
const String& fn, int line = 1)
|
||||||
: CParser(s, fn, line), global(global), op_limit(oplimit)
|
: CParser(s, fn, line), global(global), op_limit(oplimit)
|
||||||
{ r_stack_level = stack_level; skipexp = false; }
|
{ r_stack_level = stack_level; skipexp = false; }
|
||||||
|
|
@ -264,11 +288,11 @@ struct Esc : public CParser {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct EscEscape {
|
struct EscEscape {
|
||||||
Esc& esc;
|
Esc& esc;
|
||||||
EscValue self;
|
EscValue self;
|
||||||
Array<EscValue>& arg;
|
Vector<EscValue>& arg;
|
||||||
EscValue ret_val;
|
EscValue ret_val;
|
||||||
String id;
|
String id;
|
||||||
|
|
||||||
EscValue& operator[](int i) { return arg[i]; }
|
EscValue& operator[](int i) { return arg[i]; }
|
||||||
int GetCount() const { return arg.GetCount(); }
|
int GetCount() const { return arg.GetCount(); }
|
||||||
|
|
@ -286,7 +310,7 @@ struct EscEscape {
|
||||||
double Number(int i);
|
double Number(int i);
|
||||||
int Int(int i);
|
int Int(int i);
|
||||||
|
|
||||||
EscEscape(Esc& esc, EscValue self, Array<EscValue>& arg)
|
EscEscape(Esc& esc, EscValue self, Vector<EscValue>& arg)
|
||||||
: esc(esc), self(self), arg(arg) {}
|
: esc(esc), self(self), arg(arg) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -307,13 +331,14 @@ void StdLib(ArrayMap<String, EscValue>& global);
|
||||||
void LambdaArgs(CParser& p, EscLambda& l);
|
void LambdaArgs(CParser& p, EscLambda& l);
|
||||||
|
|
||||||
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
||||||
const EscValue& lambda, Vector<EscValue>& arg, int oplimit = 50000);
|
const EscValue& lambda, Vector<EscValue>& arg, int64 oplimit = 50000);
|
||||||
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
||||||
const char *name, Vector<EscValue>& arg, int oplimit = 50000);
|
const char *name, Vector<EscValue>& arg, int64 oplimit = 50000);
|
||||||
EscValue Execute(ArrayMap<String, EscValue>& global, const char *name, int oplimit = 50000);
|
EscValue Execute(ArrayMap<String, EscValue>& global, const char *name, int64 oplimit = 50000);
|
||||||
|
|
||||||
EscValue Evaluatex(const char *expression, ArrayMap<String, EscValue>& global, int oplimit = 50000);
|
EscValue Evaluatexl(const char *expression, ArrayMap<String, EscValue>& global, int64& oplimit);
|
||||||
EscValue Evaluate(const char *expression, ArrayMap<String, EscValue>& global, int oplimit = 50000);
|
EscValue Evaluatex(const char *expression, ArrayMap<String, EscValue>& global, int64 oplimit = 50000);
|
||||||
|
EscValue Evaluate(const char *expression, ArrayMap<String, EscValue>& global, int64 oplimit = 50000);
|
||||||
|
|
||||||
EscValue EscFromStdValue(const Value& v);
|
EscValue EscFromStdValue(const Value& v);
|
||||||
Value StdValueFromEsc(const EscValue& v);
|
Value StdValueFromEsc(const EscValue& v);
|
||||||
|
|
@ -323,7 +348,7 @@ bool IsDate(const EscValue& v);
|
||||||
bool IsTime(const EscValue& v);
|
bool IsTime(const EscValue& v);
|
||||||
|
|
||||||
String Expand(const String& doc, ArrayMap<String, EscValue>& global,
|
String Expand(const String& doc, ArrayMap<String, EscValue>& global,
|
||||||
int oplimit = 50000, String (*format)(const Value& v) = StdFormat);
|
int64 oplimit64 = 50000, String (*format)(const Value& v) = StdFormat);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,21 +14,10 @@ Vector<EscValue>& EscValue::CloneArray()
|
||||||
array->Release();
|
array->Release();
|
||||||
array = c;
|
array = c;
|
||||||
}
|
}
|
||||||
hash = 0;
|
array->cached_hash = 0;
|
||||||
return array->array;
|
return array->array;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Vector<EscValue>& EscValue::GetArray() const
|
|
||||||
{
|
|
||||||
ASSERT(IsArray());
|
|
||||||
return array->array;
|
|
||||||
}
|
|
||||||
|
|
||||||
EscValue EscValue::ArrayGet(int i) const
|
|
||||||
{
|
|
||||||
return GetArray()[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
EscValue EscValue::ArrayGet(int i, int n) const
|
EscValue EscValue::ArrayGet(int i, int n) const
|
||||||
{
|
{
|
||||||
LTIMING("ArrayGet");
|
LTIMING("ArrayGet");
|
||||||
|
|
@ -44,18 +33,13 @@ void EscValue::SetEmptyArray()
|
||||||
{
|
{
|
||||||
Free();
|
Free();
|
||||||
type = ESC_ARRAY;
|
type = ESC_ARRAY;
|
||||||
hash = 0;
|
|
||||||
array = new EscArray;
|
array = new EscArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EscValue::ArraySet(int i, EscValue val)
|
void EscValue::ArraySet(int i, EscValue val)
|
||||||
{
|
{
|
||||||
LTIMING("ArraySet");
|
LTIMING("ArraySet");
|
||||||
Vector<EscValue>& ta = CloneArray();
|
|
||||||
if(i > max_total || i - ta.GetCount() + total > max_total)
|
|
||||||
return false;
|
|
||||||
CloneArray().At(i) = val;
|
CloneArray().At(i) = val;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EscValue::ArrayAdd(EscValue val)
|
void EscValue::ArrayAdd(EscValue val)
|
||||||
|
|
@ -66,13 +50,11 @@ void EscValue::ArrayAdd(EscValue val)
|
||||||
CloneArray().Add(val);
|
CloneArray().Add(val);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EscValue::Replace(int i, int n, EscValue a)
|
void EscValue::Replace(int i, int n, EscValue a)
|
||||||
{
|
{
|
||||||
LTIMING("Array Replace");
|
LTIMING("Array Replace");
|
||||||
ASSERT(i >= 0);
|
ASSERT(i >= 0);
|
||||||
Vector<EscValue>& ta = CloneArray();
|
Vector<EscValue>& ta = CloneArray();
|
||||||
if(i > max_total || i + n > max_total || i + n - ta.GetCount() + total > max_total)
|
|
||||||
return false;
|
|
||||||
if(i > 0)
|
if(i > 0)
|
||||||
ta.At(i - 1);
|
ta.At(i - 1);
|
||||||
const Vector<EscValue>& sa = a.GetArray();
|
const Vector<EscValue>& sa = a.GetArray();
|
||||||
|
|
@ -83,14 +65,13 @@ bool EscValue::Replace(int i, int n, EscValue a)
|
||||||
ta.Remove(i, -q);
|
ta.Remove(i, -q);
|
||||||
for(q = 0; q < sa.GetCount(); q++)
|
for(q = 0; q < sa.GetCount(); q++)
|
||||||
ta[q + i] = sa[q];
|
ta[q + i] = sa[q];
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool EscValue::Append(EscValue a)
|
void EscValue::Append(EscValue a)
|
||||||
{
|
{
|
||||||
if(IsVoid())
|
if(IsVoid())
|
||||||
SetEmptyArray();
|
SetEmptyArray();
|
||||||
return Replace(GetCount(), 0, a);
|
Replace(GetCount(), 0, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue::operator WString() const
|
EscValue::operator WString() const
|
||||||
|
|
@ -112,57 +93,11 @@ EscValue::operator WString() const
|
||||||
void EscValue::InitString(const WString& s)
|
void EscValue::InitString(const WString& s)
|
||||||
{
|
{
|
||||||
type = ESC_ARRAY;
|
type = ESC_ARRAY;
|
||||||
array = new EscArray();
|
array = new EscArray;
|
||||||
hash = 0;
|
|
||||||
Vector<EscValue>& a = array->array;
|
Vector<EscValue>& a = array->array;
|
||||||
a.SetCount(s.GetCount());
|
a.SetCount(s.GetCount());
|
||||||
for(int i = 0; i < s.GetCount(); i++)
|
for(int i = 0; i < s.GetCount(); i++)
|
||||||
a[i] = (int64)s[i];
|
a[i] = (int64)s[i];
|
||||||
total++;
|
|
||||||
}
|
|
||||||
|
|
||||||
int EscValue::GetTotalCount()
|
|
||||||
{
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
|
|
||||||
void EscValue::SetMaxTotalCount(int n)
|
|
||||||
{
|
|
||||||
max_total = n;
|
|
||||||
}
|
|
||||||
|
|
||||||
int EscValue::GetMaxTotalCount()
|
|
||||||
{
|
|
||||||
return max_total;
|
|
||||||
}
|
|
||||||
|
|
||||||
EscValue::EscValue()
|
|
||||||
{
|
|
||||||
type = ESC_VOID; hash = 0; total++;
|
|
||||||
}
|
|
||||||
|
|
||||||
EscValue::EscValue(double n)
|
|
||||||
{
|
|
||||||
number = n;
|
|
||||||
type = ESC_DOUBLE;
|
|
||||||
hash = 0;
|
|
||||||
total++;
|
|
||||||
}
|
|
||||||
|
|
||||||
EscValue::EscValue(int64 n)
|
|
||||||
{
|
|
||||||
i64 = n;
|
|
||||||
type = ESC_INT64;
|
|
||||||
hash = 0;
|
|
||||||
total++;
|
|
||||||
}
|
|
||||||
|
|
||||||
EscValue::EscValue(int n)
|
|
||||||
{
|
|
||||||
i64 = n;
|
|
||||||
type = ESC_INT64;
|
|
||||||
hash = 0;
|
|
||||||
total++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,13 +14,7 @@ VectorMap<EscValue, EscValue>& EscValue::CloneMap()
|
||||||
map->Release();
|
map->Release();
|
||||||
map = c;
|
map = c;
|
||||||
}
|
}
|
||||||
hash = 0;
|
map->cached_hash = 0;
|
||||||
return map->map;
|
|
||||||
}
|
|
||||||
|
|
||||||
const VectorMap<EscValue, EscValue>& EscValue::GetMap() const
|
|
||||||
{
|
|
||||||
ASSERT(IsMap());
|
|
||||||
return map->map;
|
return map->map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -28,16 +22,9 @@ void EscValue::SetEmptyMap()
|
||||||
{
|
{
|
||||||
Free();
|
Free();
|
||||||
type = ESC_MAP;
|
type = ESC_MAP;
|
||||||
hash = 0;
|
|
||||||
map = new EscMap;
|
map = new EscMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue EscValue::MapGet(EscValue key) const
|
|
||||||
{
|
|
||||||
LTIMING("MapGet");
|
|
||||||
return GetMap().Get(key, EscValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
void EscValue::MapSet(EscValue key, EscValue value)
|
void EscValue::MapSet(EscValue key, EscValue value)
|
||||||
{
|
{
|
||||||
LTIMING("MapSet");
|
LTIMING("MapSet");
|
||||||
|
|
|
||||||
|
|
@ -47,11 +47,17 @@ void LambdaArgs(CParser& p, EscLambda& l)
|
||||||
l.arg.Shrink();
|
l.arg.Shrink();
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue ReadLambda(CParser& p)
|
EscValue ReadLambda(CParser& p, bool args, const char *alt_args)
|
||||||
{
|
{
|
||||||
EscValue lambda;
|
EscValue lambda;
|
||||||
EscLambda& l = lambda.CreateLambda();
|
EscLambda& l = lambda.CreateLambda();
|
||||||
LambdaArgs(p, l);
|
if(args)
|
||||||
|
LambdaArgs(p, l);
|
||||||
|
else
|
||||||
|
if(alt_args) {
|
||||||
|
CParser p(alt_args);
|
||||||
|
LambdaArgs(p, l);
|
||||||
|
}
|
||||||
const char *t = p.GetPtr();
|
const char *t = p.GetPtr();
|
||||||
l.filename = p.GetFileName();
|
l.filename = p.GetFileName();
|
||||||
l.line = p.GetLine();
|
l.line = p.GetLine();
|
||||||
|
|
@ -169,7 +175,7 @@ void Scan(ArrayMap<String, EscValue>& global, const char *file, const char *file
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
||||||
const EscValue& lambda, Vector<EscValue>& arg, int op_limit)
|
const EscValue& lambda, Vector<EscValue>& arg, int64 op_limit)
|
||||||
{
|
{
|
||||||
const EscLambda& l = lambda.GetLambda();
|
const EscLambda& l = lambda.GetLambda();
|
||||||
if(arg.GetCount() != l.arg.GetCount()) {
|
if(arg.GetCount() != l.arg.GetCount()) {
|
||||||
|
|
@ -194,7 +200,7 @@ EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
||||||
const char *name, Vector<EscValue>& arg, int op_limit)
|
const char *name, Vector<EscValue>& arg, int64 op_limit)
|
||||||
{
|
{
|
||||||
if(!self->IsMap())
|
if(!self->IsMap())
|
||||||
return EscValue();
|
return EscValue();
|
||||||
|
|
@ -205,7 +211,7 @@ EscValue Execute(ArrayMap<String, EscValue>& global, EscValue *self,
|
||||||
return EscValue();
|
return EscValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue Execute(ArrayMap<String, EscValue>& global, const char *name, int op_limit)
|
EscValue Execute(ArrayMap<String, EscValue>& global, const char *name, int64 op_limit)
|
||||||
{
|
{
|
||||||
int ii = global.Find(String(name));
|
int ii = global.Find(String(name));
|
||||||
Vector<EscValue> arg;
|
Vector<EscValue> arg;
|
||||||
|
|
@ -214,7 +220,7 @@ EscValue Execute(ArrayMap<String, EscValue>& global, const char *name, int op_li
|
||||||
return EscValue();
|
return EscValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue Evaluatex(const char *expression, ArrayMap<String, EscValue>& global, int oplimit)
|
EscValue Evaluatexl(const char *expression, ArrayMap<String, EscValue>& global, int64& oplimit)
|
||||||
{
|
{
|
||||||
Esc sub(global, expression, oplimit, "", 0);
|
Esc sub(global, expression, oplimit, "", 0);
|
||||||
for(int i = 0; i < global.GetCount(); i++)
|
for(int i = 0; i < global.GetCount(); i++)
|
||||||
|
|
@ -226,7 +232,12 @@ EscValue Evaluatex(const char *expression, ArrayMap<String, EscValue>& global, i
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue Evaluate(const char *expression, ArrayMap<String, EscValue>& global, int oplimit)
|
EscValue Evaluatex(const char *expression, ArrayMap<String, EscValue>& global, int64 oplimit)
|
||||||
|
{
|
||||||
|
return Evaluatexl(expression, global, oplimit);
|
||||||
|
}
|
||||||
|
|
||||||
|
EscValue Evaluate(const char *expression, ArrayMap<String, EscValue>& global, int64 oplimit)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
return Evaluatex(expression, global, oplimit);
|
return Evaluatex(expression, global, oplimit);
|
||||||
|
|
@ -236,7 +247,7 @@ EscValue Evaluate(const char *expression, ArrayMap<String, EscValue>& global, in
|
||||||
}
|
}
|
||||||
|
|
||||||
String Expand(const String& doc, ArrayMap<String, EscValue>& global,
|
String Expand(const String& doc, ArrayMap<String, EscValue>& global,
|
||||||
int oplimit, String (*format)(const Value& v))
|
int64 oplimit, String (*format)(const Value& v))
|
||||||
{
|
{
|
||||||
String out;
|
String out;
|
||||||
const char *term = doc;
|
const char *term = doc;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
#include <Esc/Esc.h>
|
#include <Esc/Esc.h>
|
||||||
|
|
||||||
|
|
||||||
namespace Upp {
|
namespace Upp {
|
||||||
|
|
||||||
#define LTIMING(x) // RTIMING(x)
|
#define LTIMING(x) // RTIMING(x)
|
||||||
|
|
@ -19,9 +18,6 @@ String EscTypeName(int sv_type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int EscValue::total;
|
|
||||||
int EscValue::max_total = 1000000;
|
|
||||||
|
|
||||||
void EscValue::Free()
|
void EscValue::Free()
|
||||||
{
|
{
|
||||||
LTIMING("Free");
|
LTIMING("Free");
|
||||||
|
|
@ -32,13 +28,11 @@ void EscValue::Free()
|
||||||
if(type == ESC_LAMBDA)
|
if(type == ESC_LAMBDA)
|
||||||
lambda->Release();
|
lambda->Release();
|
||||||
type = ESC_VOID;
|
type = ESC_VOID;
|
||||||
hash = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EscValue::~EscValue()
|
EscValue::~EscValue()
|
||||||
{
|
{
|
||||||
LTIMING("~EscValue");
|
LTIMING("~EscValue");
|
||||||
total--;
|
|
||||||
Free();
|
Free();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -46,7 +40,6 @@ void EscValue::Assign(const EscValue& s)
|
||||||
{
|
{
|
||||||
LTIMING("Assign");
|
LTIMING("Assign");
|
||||||
type = s.type;
|
type = s.type;
|
||||||
hash = s.hash;
|
|
||||||
switch(type) {
|
switch(type) {
|
||||||
case ESC_ARRAY:
|
case ESC_ARRAY:
|
||||||
array = s.array;
|
array = s.array;
|
||||||
|
|
@ -81,7 +74,6 @@ EscValue::EscValue(const EscValue& s)
|
||||||
{
|
{
|
||||||
LTIMING("Sval(Sval)");
|
LTIMING("Sval(Sval)");
|
||||||
Assign(s);
|
Assign(s);
|
||||||
total++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EscLambda& EscValue::CreateLambda()
|
EscLambda& EscValue::CreateLambda()
|
||||||
|
|
@ -89,7 +81,6 @@ EscLambda& EscValue::CreateLambda()
|
||||||
Free();
|
Free();
|
||||||
lambda = new EscLambda;
|
lambda = new EscLambda;
|
||||||
type = ESC_LAMBDA;
|
type = ESC_LAMBDA;
|
||||||
hash = 0;
|
|
||||||
return *lambda;
|
return *lambda;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,34 +106,33 @@ int EscValue::GetCount() const
|
||||||
hash_t EscValue::GetHashValue() const
|
hash_t EscValue::GetHashValue() const
|
||||||
{
|
{
|
||||||
LTIMING("GetHashValue");
|
LTIMING("GetHashValue");
|
||||||
if(hash == 0) {
|
switch(type) {
|
||||||
switch(type) {
|
case ESC_VOID:
|
||||||
case ESC_VOID:
|
return 1;
|
||||||
hash = 1;
|
case ESC_DOUBLE:
|
||||||
break;
|
return Upp::GetHashValue(number);
|
||||||
case ESC_DOUBLE:
|
case ESC_INT64:
|
||||||
hash = UPP::GetHashValue(number) | 0x80000;
|
return Upp::GetHashValue(i64);
|
||||||
break;
|
case ESC_ARRAY:
|
||||||
case ESC_INT64:
|
if(!array->cached_hash) {
|
||||||
hash = UPP::GetHashValue(i64) | 0x80000;
|
CombineHash h;
|
||||||
break;
|
|
||||||
case ESC_ARRAY:
|
|
||||||
for(int i = 0; i < array->array.GetCount(); i++)
|
for(int i = 0; i < array->array.GetCount(); i++)
|
||||||
hash = hash ^ array->array[i].GetHashValue();
|
h << array->array[i].GetHashValue();
|
||||||
hash |= 0x40000;
|
array->cached_hash = h | 0x4000000;
|
||||||
break;
|
|
||||||
case ESC_MAP:
|
|
||||||
for(int i = 0; i < map->map.GetCount(); i++)
|
|
||||||
if(!map->map[i].IsVoid())
|
|
||||||
hash ^= map->map.GetKey(i).GetHashValue() ^ map->map[i].GetHashValue();
|
|
||||||
hash |= 0x8000000;
|
|
||||||
break;
|
|
||||||
case ESC_LAMBDA:
|
|
||||||
hash = UPP::GetHashValue(lambda->code) | 0x4000000;
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
return array->cached_hash;
|
||||||
|
case ESC_MAP:
|
||||||
|
if(!map->cached_hash) {
|
||||||
|
CombineHash h;
|
||||||
|
for(int i = 0; i < map->map.GetCount(); i++)
|
||||||
|
h << map->map.GetKey(i).GetHashValue() << map->map[i].GetHashValue();
|
||||||
|
map->cached_hash = h | 0x4000000;
|
||||||
|
}
|
||||||
|
return map->cached_hash;
|
||||||
|
case ESC_LAMBDA:
|
||||||
|
return Upp::GetHashValue(lambda->code);
|
||||||
}
|
}
|
||||||
return hash;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
|
|
|
||||||
|
|
@ -173,7 +173,7 @@ void Ide::BTabs()
|
||||||
btabs.Add(IdeImg::errors, "Errors");
|
btabs.Add(IdeImg::errors, "Errors");
|
||||||
btabs.Add(IdeImg::calc, "Calculator");
|
btabs.Add(IdeImg::calc, "Calculator");
|
||||||
if(bottomctrl)
|
if(bottomctrl)
|
||||||
btabs.Add(IdeImg::debug, "Debug");
|
btabs.Add(IdeCommonImg::Debugger, "Debug");
|
||||||
for(int i = 0; i < __countof(ffound); i++) {
|
for(int i = 0; i < __countof(ffound); i++) {
|
||||||
if(!ffound[i])
|
if(!ffound[i])
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,9 @@ void IdeFileIcon0(bool dir, const String& filename, Image& img)
|
||||||
if(ext == ".usc")
|
if(ext == ".usc")
|
||||||
img = IdeCommonImg::Script();
|
img = IdeCommonImg::Script();
|
||||||
else
|
else
|
||||||
|
if(ext == ".dbg")
|
||||||
|
img = IdeCommonImg::Debugger();
|
||||||
|
else
|
||||||
if(ext == ".lng" || ext == ".lngj" || ext == ".t" || ext == ".jt")
|
if(ext == ".lng" || ext == ".lngj" || ext == ".t" || ext == ".jt")
|
||||||
img = IdeCommonImg::Language();
|
img = IdeCommonImg::Language();
|
||||||
else
|
else
|
||||||
|
|
@ -208,8 +211,8 @@ void SourceFs(FileSel& fs)
|
||||||
fs.Type("Python files (*.py *.pyc *.pyd *.pyo)", "*.py *.pyc *.pyd *.pyo");
|
fs.Type("Python files (*.py *.pyc *.pyd *.pyo)", "*.py *.pyc *.pyd *.pyo");
|
||||||
fs.Type("Web development files (*.html *.js *.css *.witz)", "*.html *.js *.css *.witz");
|
fs.Type("Web development files (*.html *.js *.css *.witz)", "*.html *.js *.css *.witz");
|
||||||
fs.Type("Xml files (*.xml *.xsd)", "*.xml *.xsd");
|
fs.Type("Xml files (*.xml *.xsd)", "*.xml *.xsd");
|
||||||
fs.Type("Other special files (*.sch *.usc *.rc *.brc *.upt)", "*.sch *.usc *.rc *.brc *.upt");
|
fs.Type("Other special files (*.sch *.usc *.dbg *.rc *.brc *.upt)", "*.sch *.usc *.dbg *.rc *.brc *.upt");
|
||||||
String mask = "*.cpp *.h *.hpp *.c *.C *.cc *.cxx *.icpp *.diff *.patch *.lay *.py *.pyc *.pyd *.pyo *.iml *.java *.json *.lng *.sch *.usc *.rc *.brc *.upt *.html *.js *.css *.witz *.xml *.xsd *.qtf";
|
String mask = "*.cpp *.h *.hpp *.c *.C *.cc *.cxx *.icpp *.diff *.patch *.lay *.py *.pyc *.pyd *.pyo *.iml *.java *.json *.lng *.sch *.usc *.dbg *.rc *.brc *.upt *.html *.js *.css *.witz *.xml *.xsd *.qtf";
|
||||||
fs.Type("All source files (" + mask + ")", mask);
|
fs.Type("All source files (" + mask + ")", mask);
|
||||||
IdeFs(fs);
|
IdeFs(fs);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ IMAGE_ID(Log__DARK)
|
||||||
IMAGE_ID(adsfa)
|
IMAGE_ID(adsfa)
|
||||||
IMAGE_ID(Python__UHD)
|
IMAGE_ID(Python__UHD)
|
||||||
IMAGE_ID(Python)
|
IMAGE_ID(Python)
|
||||||
|
IMAGE_ID(Debugger__UHD)
|
||||||
IMAGE_ID(Script__UHD)
|
IMAGE_ID(Script__UHD)
|
||||||
IMAGE_ID(Script)
|
IMAGE_ID(Script)
|
||||||
IMAGE_ID(Language__UHD)
|
IMAGE_ID(Language__UHD)
|
||||||
|
|
@ -83,6 +84,7 @@ IMAGE_ID(JsonString)
|
||||||
IMAGE_ID(JsonString__UHD)
|
IMAGE_ID(JsonString__UHD)
|
||||||
IMAGE_ID(JsonStruct)
|
IMAGE_ID(JsonStruct)
|
||||||
IMAGE_ID(JsonStruct__UHD)
|
IMAGE_ID(JsonStruct__UHD)
|
||||||
|
IMAGE_ID(Debugger)
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,150,59,142,226,64,16,64,45,16,100,72,67,66,140,136,54,65,226,20,136,24,105,242,185,8,23,33,134,136)
|
IMAGE_DATA(120,156,237,150,59,142,226,64,16,64,45,16,100,72,67,66,140,136,54,65,226,20,136,24,105,242,185,8,23,33,134,136)
|
||||||
|
|
@ -1847,110 +1849,192 @@ IMAGE_DATA(164,213,20,61,189,44,33,120,159,3,188,115,225,246,164,15,251,171,189,
|
||||||
IMAGE_END_DATA(1856, 1)
|
IMAGE_END_DATA(1856, 1)
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,154,61,104,20,65,20,199,135,20,54,54,86,86,65,3,105,44,180,177,10,136,228,42,9,6,84,208,69,131)
|
IMAGE_DATA(120,156,237,156,121,108,29,87,21,198,143,248,151,127,138,0,177,168,32,64,128,68,89,196,90,54,177,137,2,2,33,144)
|
||||||
IMAGE_DATA(205,33,10,166,17,82,37,160,112,1,139,32,146,64,180,16,11,57,193,15,112,209,194,82,44,78,20,67,108,195,89,216)
|
IMAGE_DATA(64,160,128,160,68,162,69,32,42,4,72,32,80,11,4,4,20,74,23,74,105,129,148,38,77,155,165,169,147,56,142,155)
|
||||||
IMAGE_DATA(94,33,8,218,88,4,162,144,113,222,236,205,222,236,236,155,157,79,207,83,247,29,127,46,217,221,247,126,111,222,188,157)
|
IMAGE_DATA(180,73,92,147,164,89,234,102,105,147,184,78,154,205,77,98,187,100,169,179,212,100,105,4,135,251,189,57,199,62,190,153)
|
||||||
IMAGE_DATA(157,220,101,108,31,217,71,170,108,188,69,169,170,74,7,197,87,152,79,140,24,254,58,217,142,65,23,203,151,43,251,211)
|
IMAGE_DATA(247,60,219,243,27,79,239,39,125,210,120,230,222,185,115,127,231,204,185,119,158,148,188,232,18,186,132,26,233,210,95,49)
|
||||||
IMAGE_DATA(93,66,65,46,190,242,181,194,95,142,225,234,103,242,55,249,85,249,219,248,85,213,192,199,87,53,151,107,109,252,93,99)
|
IMAGE_DATA(251,110,216,193,235,171,202,114,143,34,250,215,115,210,57,212,187,87,214,113,109,127,254,31,49,156,166,175,109,171,253,237)
|
||||||
IMAGE_DATA(149,252,132,13,201,95,55,6,236,186,153,9,50,97,27,179,182,209,52,88,205,207,51,173,51,61,235,43,149,126,94,99)
|
IMAGE_DATA(61,210,246,155,168,255,68,253,26,245,79,210,175,17,131,44,125,125,165,105,155,164,127,218,123,93,212,79,53,73,253,235)
|
||||||
IMAGE_DATA(154,99,58,24,153,123,128,233,49,211,15,146,144,93,70,204,212,35,208,106,148,191,139,99,112,126,156,137,144,79,76,55)
|
IMAGE_DATA(205,33,174,221,101,211,105,122,210,123,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,77,138,102,79)
|
||||||
IMAGE_DATA(35,176,103,152,190,147,133,62,203,246,213,227,57,252,100,58,18,192,62,202,180,205,199,229,194,30,240,65,135,3,248,91)
|
IMAGE_DATA(155,198,112,81,237,130,146,73,121,166,229,31,226,144,79,62,199,172,252,67,28,210,171,30,195,60,252,67,12,146,169,17)
|
||||||
IMAGE_DATA(100,213,131,13,175,148,179,183,3,216,199,200,148,39,27,94,11,156,255,58,128,191,82,57,246,148,47,114,192,248,200,180)
|
IMAGE_DATA(191,188,252,67,12,38,86,224,223,58,77,196,174,8,254,33,6,245,21,248,183,86,129,127,107,149,144,93,67,7,254,217)
|
||||||
IMAGE_DATA(201,122,110,135,247,222,70,223,39,225,231,87,3,248,143,42,231,61,235,241,21,197,231,4,211,75,94,183,44,183,243,1)
|
IMAGE_DATA(149,132,249,250,131,196,221,7,136,87,236,37,94,210,71,60,111,7,241,157,91,137,111,125,148,248,250,71,146,197,162,149)
|
||||||
IMAGE_DATA(252,167,149,252,172,190,31,152,38,17,223,9,166,227,132,24,118,127,213,118,215,216,247,11,121,143,221,14,100,97,118,206)
|
IMAGE_DATA(115,44,179,234,113,239,59,22,121,231,17,226,109,67,196,27,15,71,49,88,190,135,184,237,73,226,57,79,16,223,177,153)
|
||||||
IMAGE_DATA(170,247,123,253,53,135,144,47,76,167,35,242,247,176,57,254,234,116,191,101,61,177,28,49,135,121,62,54,219,28,122,121)
|
IMAGE_DATA(248,198,13,196,191,94,67,252,211,213,196,223,95,94,63,14,173,157,101,121,21,199,125,255,48,241,161,147,145,113,140,115)
|
||||||
IMAGE_DATA(14,23,35,230,176,206,115,232,89,230,177,193,249,159,9,212,47,158,93,98,227,250,102,189,22,78,69,175,1,24,244,247)
|
IMAGE_DATA(136,1,222,131,85,251,136,151,238,138,222,129,153,91,136,111,217,68,252,219,117,196,63,239,34,254,193,10,226,111,119,16)
|
||||||
IMAGE_DATA(13,171,60,178,126,188,23,192,186,197,244,138,192,61,128,231,241,220,98,109,76,3,248,219,82,63,191,97,154,85,206,95)
|
IMAGE_DATA(79,107,187,56,14,173,157,101,121,165,236,123,6,162,92,7,239,161,231,136,159,61,19,25,199,56,135,107,104,131,119,160)
|
||||||
IMAGE_DATA(175,236,203,108,93,120,230,201,62,90,120,238,172,230,247,247,14,129,117,30,214,251,113,222,143,166,250,63,244,228,95,113)
|
IMAGE_DATA(243,41,226,251,118,18,223,181,45,170,65,191,119,53,232,218,135,137,127,248,32,241,85,203,136,191,182,136,248,11,11,136)
|
||||||
IMAGE_DATA(186,231,176,123,48,91,251,47,121,242,31,120,237,55,138,181,135,181,112,175,39,255,173,245,189,142,247,29,232,172,39,27)
|
IMAGE_DATA(63,57,103,44,6,173,158,103,137,197,107,250,137,55,15,70,121,142,156,7,247,179,23,34,227,24,231,112,13,109,208,22)
|
||||||
IMAGE_DATA(236,30,159,115,151,28,6,207,128,31,76,87,3,216,96,80,183,37,2,123,47,232,195,85,105,111,43,120,27,253,223,225)
|
IMAGE_DATA(53,104,97,47,241,44,199,255,182,158,104,13,184,206,241,255,209,67,196,87,59,254,95,95,76,252,69,225,255,129,127,142)
|
||||||
IMAGE_DATA(220,84,206,125,65,194,246,122,152,193,62,30,214,177,59,68,191,223,191,192,180,63,50,183,182,127,220,198,76,159,12,142)
|
IMAGE_DATA(190,11,83,94,51,102,204,96,184,192,91,214,88,54,155,255,219,239,40,54,6,77,224,144,104,60,235,130,110,93,171,37)
|
||||||
IMAGE_DATA(128,37,132,228,11,138,78,122,95,248,3,160,91,177,104,84,251,23,125,221,249,234,3,137,246,199,99,107,229,133,213,45)
|
IMAGE_DATA(168,41,205,170,63,239,191,147,248,109,5,242,111,34,139,84,99,22,52,110,109,45,197,154,138,181,21,107,108,81,235,239)
|
||||||
IMAGE_DATA(70,121,236,110,49,178,250,165,74,140,174,113,220,230,24,246,254,131,24,46,243,134,201,62,127,125,191,116,173,234,103,234)
|
IMAGE_DATA(231,231,19,127,226,110,226,203,29,255,183,222,94,12,255,38,114,104,197,184,181,61,36,246,146,168,39,200,107,236,49,193)
|
||||||
IMAGE_DATA(87,151,30,24,154,157,172,63,25,28,61,107,183,155,180,211,105,68,17,196,114,229,131,31,165,36,138,32,86,205,255,187)
|
IMAGE_DATA(25,185,158,117,255,57,125,41,241,87,238,39,254,220,60,226,143,205,38,126,239,76,226,183,252,149,248,181,183,228,143,65)
|
||||||
IMAGE_DATA(249,205,229,38,109,44,55,80,117,58,29,92,173,22,237,52,26,37,181,155,230,126,84,249,192,33,203,4,149,214,90,252)
|
IMAGE_DATA(213,248,227,27,10,121,140,111,42,124,91,129,47,114,28,117,6,181,30,198,241,68,223,95,191,232,38,254,241,74,226,239)
|
||||||
IMAGE_DATA(123,166,146,32,7,19,191,197,124,101,13,155,223,104,116,10,110,53,191,200,111,54,219,250,190,115,84,187,221,46,229,99)
|
IMAGE_DATA(118,18,127,115,9,241,151,22,18,127,230,94,226,143,204,34,126,247,223,137,223,124,27,241,165,55,5,254,158,248,246,199)
|
||||||
IMAGE_DATA(226,195,249,233,105,253,208,93,12,114,240,225,195,241,24,57,132,240,99,228,16,202,15,205,1,227,67,127,1,35,151,129)
|
IMAGE_DATA(162,53,116,254,206,136,43,114,27,245,5,172,177,206,194,56,198,57,92,67,27,180,69,31,244,69,238,255,102,45,241,207)
|
||||||
IMAGE_DATA(31,146,3,198,47,213,195,130,239,155,67,76,190,79,14,209,249,164,131,159,208,200,106,61,178,173,191,35,219,150,95,122)
|
IMAGE_DATA(164,246,92,213,17,213,126,172,189,87,220,67,252,65,183,246,190,227,111,196,111,188,149,248,85,55,6,254,158,248,230,141)
|
||||||
IMAGE_DATA(254,98,253,231,193,182,229,151,234,161,222,127,158,236,24,252,16,118,40,63,148,29,194,143,193,246,229,243,231,47,178,183)
|
IMAGE_DATA(81,13,1,79,228,52,234,10,106,59,214,87,240,134,113,140,115,184,134,54,104,139,62,232,251,187,117,209,190,7,185,255)
|
||||||
IMAGE_DATA(243,145,205,126,176,182,225,152,250,201,32,181,148,206,232,187,173,132,206,46,209,252,93,109,62,147,63,248,204,46,210,236)
|
IMAGE_DATA(189,7,136,191,213,62,86,123,62,238,106,255,251,102,70,181,255,117,127,38,126,249,13,213,227,159,115,252,218,190,5,28)
|
||||||
IMAGE_DATA(125,169,252,240,248,221,124,229,58,215,90,20,242,4,254,202,147,180,144,19,252,46,198,134,250,75,124,184,118,243,227,169)
|
IMAGE_DATA(145,203,168,39,168,233,96,140,189,13,246,151,48,142,113,14,215,208,6,109,209,7,125,127,233,234,206,79,86,17,95,35)
|
||||||
IMAGE_DATA(204,103,145,22,127,215,248,203,2,222,252,90,55,231,169,249,152,106,161,228,233,92,11,49,94,17,235,221,150,126,83,128)
|
IMAGE_DATA(235,174,230,254,167,92,238,127,248,46,226,119,105,237,185,153,248,37,127,200,206,191,73,243,47,108,252,76,207,112,58,226)
|
||||||
IMAGE_DATA(249,139,92,7,181,212,199,48,213,66,140,101,126,205,218,31,173,197,252,229,46,186,168,218,248,175,156,97,227,57,148,120)
|
IMAGE_DATA(129,28,70,29,65,45,71,94,99,79,131,125,229,44,49,142,113,14,215,208,6,109,209,7,236,177,230,162,238,96,207,255)
|
||||||
IMAGE_DATA(251,235,124,109,252,173,52,162,95,19,136,175,6,124,62,78,77,146,132,208,52,37,52,113,255,88,62,247,101,21,246,137)
|
IMAGE_DATA(13,87,247,191,236,234,254,103,231,70,185,127,185,236,59,223,224,106,207,43,255,36,236,79,167,231,223,148,185,103,80,146)
|
||||||
IMAGE_DATA(145,251,10,165,169,113,162,98,242,11,49,60,124,243,24,196,191,254,181,253,165,86,255,3,177,100,115,115,115,244,79,171)
|
IMAGE_DATA(231,72,245,44,35,17,19,212,15,212,112,172,163,96,139,253,36,56,227,187,10,198,49,206,225,26,218,160,45,250,32,239)
|
||||||
IMAGE_DATA(184,148,12,79,53,191,230,215,252,154,95,56,62,57,9,255,8,149,109,102,170,252,175,93,27,92,247,254,125,118,172,106)
|
IMAGE_DATA(193,254,59,110,205,189,82,234,14,246,156,216,243,127,200,229,254,59,37,247,95,227,114,255,165,127,20,254,35,201,249,23)
|
||||||
IMAGE_DATA(7,10,113,197,117,166,241,223,191,95,140,171,10,142,139,152,234,185,153,153,93,46,245,122,49,46,41,166,150,47,198,6)
|
IMAGE_DATA(62,223,2,84,232,51,157,141,152,160,118,99,253,196,30,6,251,72,236,229,81,91,174,23,227,24,231,112,13,109,208,22)
|
||||||
IMAGE_DATA(239,24,31,226,195,57,149,35,234,167,243,131,152,146,143,150,47,226,99,227,131,218,128,176,113,10,6,156,215,229,45,197)
|
IMAGE_DATA(125,174,145,188,7,251,175,182,69,223,91,168,59,216,243,188,231,31,196,151,185,186,255,122,87,247,95,225,114,255,197,215)
|
||||||
IMAGE_DATA(172,228,139,26,99,231,228,28,177,121,209,245,140,13,31,98,136,184,112,173,60,22,56,46,230,15,227,235,106,166,233,13)
|
IMAGE_DATA(210,49,140,37,99,78,238,60,155,160,220,207,119,222,113,128,207,69,49,64,30,131,41,234,9,190,163,240,45,123,157,24)
|
||||||
IMAGE_DATA(148,175,50,196,245,114,94,88,110,186,156,212,185,145,206,163,124,121,78,197,125,32,120,106,159,169,124,236,24,22,75,199)
|
IMAGE_DATA(199,56,135,107,104,131,182,88,107,81,239,81,115,144,247,96,255,105,183,223,252,232,236,104,205,197,239,13,216,243,188,250)
|
||||||
IMAGE_DATA(135,49,170,61,37,122,214,196,18,115,175,187,103,145,190,44,241,161,54,106,253,128,131,205,169,26,79,220,179,42,31,174)
|
IMAGE_DATA(38,83,247,207,201,152,231,235,199,160,236,220,173,50,63,235,243,110,254,23,196,207,143,197,0,123,119,124,63,129,47,126)
|
||||||
IMAGE_DATA(209,212,165,192,135,49,202,107,149,28,23,227,8,137,218,232,214,61,113,47,33,53,25,201,245,191,230,215,252,33,243,255)
|
IMAGE_DATA(71,192,111,57,48,142,113,14,215,208,6,123,76,236,115,176,214,162,222,163,230,32,239,193,30,53,31,251,205,55,253,37)
|
||||||
IMAGE_DATA(232,223,94,255,185,253,2,17,199,118,97,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
IMAGE_DATA(170,59,47,187,193,176,247,199,45,106,62,45,84,210,103,30,125,238,243,50,255,255,138,47,72,62,158,29,251,189,30,121)
|
||||||
IMAGE_END_DATA(1280, 7)
|
IMAGE_DATA(141,223,112,174,22,227,24,231,240,93,139,111,43,112,71,206,99,159,131,181,22,245,30,53,7,121,15,246,168,249,230,91)
|
||||||
|
IMAGE_DATA(55,186,119,189,113,179,204,161,132,42,132,255,200,232,254,164,102,252,134,9,131,55,126,207,1,115,124,215,130,59,246,247)
|
||||||
|
IMAGE_DATA(200,121,236,115,176,214,162,222,163,230,32,239,181,127,237,94,35,141,249,79,117,238,86,19,206,225,76,157,58,128,115,103)
|
||||||
|
IMAGE_DATA(12,255,19,206,207,26,142,20,213,24,48,199,111,10,87,8,119,236,239,81,111,176,207,177,109,107,125,79,24,254,19,140)
|
||||||
|
IMAGE_DATA(91,5,246,86,117,231,241,31,201,69,187,14,158,147,115,184,246,156,243,41,195,255,152,243,191,157,135,60,190,113,30,146)
|
||||||
|
IMAGE_DATA(182,199,12,255,83,114,207,9,198,173,10,119,171,139,230,114,218,176,56,35,115,63,43,199,202,30,109,78,58,15,59,31)
|
||||||
|
IMAGE_DATA(119,62,106,248,31,118,62,232,220,239,188,95,220,47,231,14,27,254,71,165,239,176,220,43,225,184,85,98,111,85,155,203)
|
||||||
|
IMAGE_DATA(9,143,197,136,103,203,222,230,254,17,231,103,156,7,13,255,3,206,251,196,7,12,255,65,105,123,196,123,7,82,140,91)
|
||||||
|
IMAGE_DATA(37,238,227,100,89,156,146,57,91,159,138,97,111,115,127,192,249,144,243,211,49,252,159,150,107,3,222,59,224,199,32,201)
|
||||||
|
IMAGE_DATA(184,85,148,101,49,44,115,85,38,39,205,223,195,117,216,219,220,215,218,179,87,236,215,160,193,58,49,72,51,110,213,100)
|
||||||
|
IMAGE_DATA(89,28,151,185,42,147,97,243,247,113,143,189,95,119,108,238,239,17,219,119,192,175,67,89,199,173,154,52,31,143,24,30)
|
||||||
|
IMAGE_DATA(113,62,42,109,252,188,183,117,71,115,255,41,177,190,3,182,14,249,239,65,218,113,171,36,203,66,115,82,153,88,235,249)
|
||||||
|
IMAGE_DATA(103,234,176,183,117,7,220,119,137,109,12,250,235,196,32,203,184,85,145,214,132,1,195,67,153,88,15,153,249,15,208,248)
|
||||||
|
IMAGE_DATA(154,99,217,163,230,236,118,238,19,239,150,115,126,12,242,142,91,21,41,11,205,73,101,162,92,6,205,223,122,253,16,141)
|
||||||
|
IMAGE_DATA(175,247,62,123,228,253,147,226,93,49,49,176,235,65,214,113,171,162,3,94,78,42,147,56,31,164,241,57,223,136,253,78)
|
||||||
|
IMAGE_DATA(113,163,24,228,25,183,68,74,243,219,224,69,223,144,251,12,15,203,36,206,253,166,29,250,236,163,177,122,111,217,247,58)
|
||||||
|
IMAGE_DATA(239,16,247,122,49,208,245,32,231,184,185,230,92,18,246,181,103,217,99,120,40,19,203,197,206,123,191,105,167,57,175,107)
|
||||||
|
IMAGE_DATA(109,159,201,123,112,127,66,188,195,188,7,125,52,182,38,231,28,55,247,188,203,194,127,183,225,161,76,246,122,108,236,57)
|
||||||
|
IMAGE_DATA(109,103,115,190,79,242,220,178,127,92,108,99,208,107,98,144,115,220,202,240,87,30,150,73,35,239,54,237,53,231,149,253)
|
||||||
|
IMAGE_DATA(118,195,126,171,88,99,176,221,196,192,190,11,25,199,173,12,255,94,143,137,229,226,91,175,43,115,155,243,219,133,245,54)
|
||||||
|
IMAGE_DATA(225,190,89,188,85,206,61,46,109,236,187,144,99,220,178,240,207,27,131,209,117,210,50,81,46,214,246,154,50,87,238,54)
|
||||||
|
IMAGE_DATA(231,183,8,247,199,196,155,229,156,255,46,228,28,183,44,236,115,203,50,241,185,88,91,222,150,185,205,249,45,194,188,199)
|
||||||
|
IMAGE_DATA(249,81,113,143,156,211,24,108,163,241,107,67,214,113,171,162,56,38,141,236,51,247,115,30,204,55,57,111,20,111,146,115)
|
||||||
|
IMAGE_DATA(254,187,144,119,220,170,200,103,162,92,226,108,219,248,117,70,115,30,188,55,56,175,23,111,48,49,232,161,248,186,148,101)
|
||||||
|
IMAGE_DATA(220,42,201,50,81,46,113,214,235,62,115,155,243,224,141,127,107,189,78,252,136,156,179,239,66,92,44,210,140,91,53,89)
|
||||||
|
IMAGE_DATA(38,61,30,27,203,90,29,199,92,115,94,217,175,17,107,12,214,155,118,113,177,72,51,110,213,164,76,148,75,35,107,59)
|
||||||
|
IMAGE_DATA(159,185,114,95,43,220,187,197,107,228,220,58,211,206,143,69,218,113,171,38,101,98,185,212,179,182,139,99,14,255,75,184)
|
||||||
|
IMAGE_DATA(119,137,187,229,156,94,143,139,69,218,113,43,164,209,61,177,214,107,203,198,183,109,179,214,112,87,230,15,139,193,125,181)
|
||||||
|
IMAGE_DATA(184,203,156,183,177,208,254,41,199,45,229,30,62,131,98,191,75,52,71,45,31,203,217,230,184,50,87,238,150,249,42,231)
|
||||||
|
IMAGE_DATA(149,226,85,49,177,208,126,122,159,132,227,150,254,91,42,161,234,126,23,118,83,50,219,60,87,238,202,252,33,241,131,98)
|
||||||
|
IMAGE_DATA(253,219,198,66,251,217,247,34,129,167,196,247,108,3,37,250,54,239,162,198,94,77,241,121,174,204,87,56,227,255,151,121)
|
||||||
|
IMAGE_DATA(64,188,92,206,105,44,226,222,139,213,19,140,217,149,236,247,134,86,243,109,164,196,191,141,40,155,56,175,164,241,188,109)
|
||||||
|
IMAGE_DATA(158,91,238,157,206,203,196,157,49,113,240,223,11,27,147,58,227,78,201,223,118,68,169,159,221,242,241,57,91,222,126,174)
|
||||||
|
IMAGE_DATA(43,247,14,231,165,226,14,47,14,54,22,43,98,238,27,55,110,214,121,180,88,185,158,119,185,112,138,179,229,109,115,93)
|
||||||
|
IMAGE_DATA(185,183,59,47,17,183,123,113,88,102,250,217,120,212,115,209,243,154,36,21,242,140,157,134,149,207,90,121,91,230,202,125)
|
||||||
|
IMAGE_DATA(177,243,34,241,98,19,7,27,139,14,239,94,113,99,53,123,126,77,80,210,231,74,252,108,29,30,231,165,30,111,203,92)
|
||||||
|
IMAGE_DATA(185,227,255,21,187,95,220,102,226,224,199,162,221,187,167,29,171,21,115,205,169,166,61,139,173,39,75,98,120,251,204,23)
|
||||||
|
IMAGE_DATA(58,223,39,94,24,19,11,63,30,214,237,201,216,79,202,188,11,126,142,92,55,95,228,177,110,107,192,124,129,243,124,241)
|
||||||
|
IMAGE_DATA(130,6,177,80,219,123,151,117,254,57,199,47,108,16,101,237,243,182,204,231,57,207,21,207,243,98,225,199,67,99,82,144)
|
||||||
|
IMAGE_DATA(202,200,191,41,131,249,188,149,249,189,226,123,196,250,247,92,211,206,198,163,9,122,65,240,183,178,188,231,136,239,22,235)
|
||||||
|
IMAGE_DATA(223,54,30,77,214,11,142,127,201,20,248,183,86,101,226,223,236,49,203,170,178,124,3,76,198,152,101,84,224,16,20,20)
|
||||||
|
IMAGE_DATA(20,20,20,20,20,20,20,20,20,20,20,20,52,21,244,127,221,54,129,82,0,0,0,0,0,0,0,0,0,0,0,0)
|
||||||
|
IMAGE_END_DATA(2624, 2)
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,156,223,79,20,87,20,199,111,72,223,124,177,255,129,137,79,246,149,196,248,104,124,48,182,137,198,23,99,124)
|
IMAGE_DATA(120,156,237,154,65,136,20,71,20,134,31,57,228,146,139,167,156,36,89,216,75,14,201,69,47,3,33,56,167,101,200,98)
|
||||||
IMAGE_DATA(170,70,45,173,77,120,32,169,38,109,76,73,139,73,211,16,105,181,22,49,22,234,34,20,197,130,184,8,138,84,145,117)
|
IMAGE_DATA(18,72,6,179,120,25,53,139,89,15,194,94,220,133,4,118,33,135,37,132,29,209,28,86,15,113,196,77,22,109,54,72)
|
||||||
IMAGE_DATA(253,177,174,20,144,159,242,91,36,88,169,104,74,106,141,161,247,116,239,216,139,151,241,206,143,221,157,157,123,103,247,124)
|
IMAGE_DATA(244,20,115,152,160,184,152,235,48,30,130,138,48,104,32,152,120,136,176,160,129,170,212,235,158,234,233,174,126,53,93,93)
|
||||||
IMAGE_DATA(147,147,97,102,238,185,223,123,207,103,230,206,238,32,118,174,36,43,137,87,218,177,99,7,164,27,4,32,165,208,38,191)
|
IMAGE_DATA(85,153,157,77,250,13,63,227,116,247,123,223,171,87,175,171,107,102,173,77,192,4,148,182,171,109,143,208,33,161,51,66)
|
||||||
IMAGE_DATA(183,151,146,93,187,40,25,25,161,75,231,39,38,40,217,183,15,200,133,11,148,236,221,75,73,117,53,144,178,50,74,170)
|
IMAGE_DATA(87,250,10,18,255,110,10,205,8,189,238,153,251,154,208,183,66,47,160,14,76,16,35,245,132,184,120,245,18,199,240,252)
|
||||||
IMAGE_DATA(170,168,212,191,160,128,146,221,187,223,228,31,63,78,201,206,157,175,247,55,111,126,115,124,255,126,74,14,31,166,111,229)
|
IMAGE_DATA(94,33,128,95,133,190,240,192,174,9,253,5,243,125,150,233,171,23,230,240,183,208,91,14,236,125,66,219,225,184,138,176)
|
||||||
IMAGE_DATA(135,66,148,108,220,72,201,163,71,148,204,207,83,99,95,150,63,54,70,73,126,190,60,63,28,166,228,192,1,74,234,234)
|
IMAGE_DATA(7,124,212,155,14,252,14,172,90,176,241,21,132,236,109,7,246,219,80,177,100,227,107,62,228,255,228,192,95,25,58,246)
|
||||||
IMAGE_DATA(40,153,153,129,164,242,43,43,95,183,89,183,142,146,115,231,40,153,155,147,231,179,241,151,151,211,183,234,199,124,71,71)
|
IMAGE_DATA(64,40,170,239,93,161,59,162,231,158,135,189,183,213,247,169,135,231,87,29,248,235,67,231,61,234,241,21,197,103,74,232)
|
||||||
IMAGE_DATA(129,180,181,81,178,176,0,164,182,86,94,191,198,70,253,248,167,153,159,214,189,147,166,62,88,69,86,121,176,12,100,135)
|
IMAGE_DATA(135,176,110,81,110,135,28,248,27,67,249,81,125,127,17,154,36,124,39,132,222,129,104,189,176,181,175,115,251,126,62,238)
|
||||||
IMAGE_DATA(188,0,146,110,168,18,250,163,191,95,254,21,21,21,108,225,50,162,176,176,144,186,245,143,70,163,176,105,211,38,202,115)
|
IMAGE_DATA(177,175,28,89,148,125,100,212,251,189,254,154,3,240,187,208,251,30,249,47,139,57,254,163,208,253,22,245,196,178,199,28)
|
||||||
IMAGE_DATA(89,172,94,189,154,178,254,100,226,125,139,98,249,44,135,245,197,206,179,159,221,248,115,95,115,159,86,199,217,152,204,227)
|
IMAGE_DATA(230,194,177,153,230,208,139,115,56,236,49,135,51,97,14,61,195,60,182,66,254,111,128,245,243,103,71,197,184,254,52,94)
|
||||||
IMAGE_DATA(226,243,150,201,206,159,141,145,229,177,49,219,157,231,98,237,204,237,249,49,89,77,236,252,157,188,153,88,159,172,13,155)
|
IMAGE_DATA(11,43,222,107,128,134,253,253,185,81,30,81,63,174,57,176,190,20,250,17,240,30,160,243,216,52,88,27,3,7,254,118)
|
||||||
IMAGE_DATA(159,153,15,219,231,231,197,99,110,252,121,158,213,152,185,184,39,175,55,107,111,246,176,171,189,149,63,31,175,147,204,53)
|
IMAGE_DATA(162,159,127,22,154,86,206,127,54,180,47,163,117,225,138,37,123,95,234,185,179,26,223,223,207,1,215,121,92,239,247,134)
|
||||||
IMAGE_DATA(98,251,230,49,139,215,154,27,127,62,94,89,173,68,113,174,98,223,50,94,172,31,187,190,204,254,169,214,222,170,206,78)
|
IMAGE_DATA(253,152,87,255,139,150,252,217,66,247,28,117,15,70,107,255,81,75,254,55,86,251,141,116,237,113,45,124,197,146,127,211)
|
||||||
IMAGE_DATA(125,165,226,47,171,145,140,61,175,145,213,58,33,243,231,57,86,53,227,222,102,166,50,246,78,215,158,204,159,73,182,182)
|
IMAGE_DATA(248,94,167,251,14,245,161,37,27,109,45,156,243,34,57,12,158,1,47,132,62,117,96,163,97,221,22,1,247,94,216,135)
|
||||||
IMAGE_DATA(136,107,160,108,108,124,158,98,142,19,123,43,127,113,12,226,122,203,142,89,173,7,124,92,226,121,89,77,220,250,243,49)
|
IMAGE_DATA(171,137,189,173,228,109,245,63,227,185,74,204,253,30,220,246,122,148,225,62,30,215,177,179,160,223,239,127,44,244,170,103)
|
||||||
IMAGE_DATA(216,177,115,146,155,123,216,110,254,118,107,31,147,211,53,234,52,119,153,63,191,254,204,235,166,121,77,183,122,198,177,227)
|
IMAGE_DATA(110,105,255,113,123,105,143,247,253,154,119,171,3,196,11,138,78,122,95,252,2,208,29,178,104,12,247,79,251,22,231,171)
|
||||||
IMAGE_DATA(252,90,113,242,150,249,139,18,159,149,110,159,187,110,214,46,183,254,126,8,253,245,240,87,25,94,126,151,12,162,242,116)
|
IMAGE_DATA(15,36,222,31,143,169,101,23,214,98,49,178,99,47,22,35,170,95,160,196,232,230,142,59,63,134,185,255,32,70,145,121)
|
||||||
IMAGE_DATA(123,51,152,238,197,228,85,190,248,133,197,238,67,28,95,32,197,124,150,43,230,136,31,80,196,5,92,92,172,197,124,153)
|
IMAGE_DATA(163,100,158,191,190,95,186,70,245,203,235,215,34,61,48,50,123,183,252,101,112,252,172,213,106,240,118,187,234,69,24,171)
|
||||||
IMAGE_DATA(31,255,2,67,132,7,3,255,153,249,185,201,103,91,241,129,194,31,24,102,127,217,7,105,126,76,60,39,250,152,253,197)
|
IMAGE_DATA(40,31,253,184,104,124,31,194,88,37,127,119,243,27,203,13,94,93,174,146,106,183,219,180,150,150,120,187,90,205,168,213)
|
||||||
IMAGE_DATA(135,22,17,62,156,186,201,231,57,60,204,125,241,57,136,125,201,248,219,61,136,205,95,214,236,190,12,201,30,122,98,237)
|
IMAGE_DATA(200,239,71,149,143,28,88,6,82,90,19,124,1,202,8,115,200,227,47,9,223,164,70,205,175,86,219,41,183,146,159,230)
|
||||||
IMAGE_DATA(236,242,221,74,135,197,44,167,222,12,126,118,170,23,88,160,63,250,163,191,92,39,218,167,65,69,136,254,126,75,230,95)
|
IMAGE_DATA(55,26,45,125,223,21,84,171,213,202,228,147,199,199,243,7,14,232,135,94,196,48,7,27,62,30,247,145,131,11,223,71)
|
||||||
IMAGE_DATA(84,84,100,132,31,63,235,232,239,167,116,156,191,106,255,76,203,237,252,51,57,119,157,253,253,148,155,249,123,61,239,100)
|
IMAGE_DATA(14,174,124,215,28,40,62,246,23,50,98,229,240,93,114,160,248,153,122,24,240,109,115,240,201,183,201,193,59,31,218,244)
|
||||||
IMAGE_DATA(235,239,183,191,159,74,229,254,79,53,204,125,232,234,239,167,204,254,42,63,127,160,80,185,42,79,223,12,122,165,237,219)
|
IMAGE_DATA(9,141,140,214,35,211,250,23,100,155,242,51,207,95,170,255,44,216,166,252,76,61,212,251,207,146,237,131,239,194,118,229)
|
||||||
IMAGE_DATA(183,23,196,227,241,23,157,157,157,207,194,225,240,76,40,20,26,42,45,45,141,236,217,179,231,232,214,173,91,15,110,216)
|
IMAGE_DATA(187,178,93,248,62,216,182,252,240,249,75,236,237,108,100,178,31,44,109,52,166,254,50,200,13,165,51,126,171,83,231,211)
|
||||||
IMAGE_DATA(176,161,112,205,154,53,239,231,229,229,189,35,203,143,197,98,47,35,145,200,203,45,91,182,20,164,226,159,240,253,183,164)
|
IMAGE_DATA(139,60,126,87,155,47,207,31,125,166,23,120,244,190,152,125,120,252,219,124,229,186,162,181,72,229,137,252,149,239,130,84)
|
||||||
IMAGE_DATA(164,164,121,197,138,21,73,21,167,62,58,57,125,125,124,17,90,46,95,129,134,166,48,92,29,121,5,87,134,94,66,107)
|
IMAGE_DATA(78,248,89,142,141,244,79,240,241,218,59,119,223,139,124,22,120,250,179,198,63,41,228,205,53,187,49,79,205,39,175,22)
|
||||||
IMAGE_DATA(255,11,8,247,46,64,67,215,115,56,123,231,41,156,142,62,129,170,142,89,99,17,58,214,58,9,101,23,198,224,243,19)
|
IMAGE_DATA(74,158,133,107,33,199,43,99,221,234,232,55,5,148,191,204,117,80,75,125,140,188,90,200,177,204,53,141,253,201,90,204)
|
||||||
IMAGE_DATA(215,141,220,161,135,207,150,98,112,106,30,6,38,231,161,111,98,30,122,199,158,66,207,232,159,208,245,96,14,226,67,79)
|
IMAGE_DATA(125,210,37,23,85,19,255,149,15,196,120,222,168,91,251,235,124,77,252,141,52,166,127,38,144,127,26,176,249,57,181,94)
|
||||||
IMAGE_DATA(32,54,248,4,110,245,63,134,232,253,89,232,236,153,133,175,235,250,129,231,47,46,46,66,123,252,145,177,109,189,51,101)
|
IMAGE_DATA(175,3,15,2,224,245,226,63,203,199,190,162,194,54,49,98,95,169,32,200,157,40,159,252,84,12,11,223,56,6,216,215)
|
||||||
IMAGE_DATA(108,207,71,38,140,237,153,171,163,198,246,212,165,97,99,251,124,225,31,184,218,53,3,7,67,61,112,109,244,149,225,215)
|
IMAGE_DATA(191,180,93,106,181,242,207,4,3,155,153,153,225,59,173,244,82,50,58,149,252,146,95,242,75,126,234,248,228,36,254,71)
|
||||||
IMAGE_DATA(118,119,26,46,221,121,8,205,55,39,161,233,198,4,252,218,57,14,103,175,141,66,109,251,3,8,93,30,134,202,150,65)
|
IMAGE_DATA(168,104,51,51,204,255,228,201,193,117,183,111,71,199,134,237,64,49,174,188,46,111,252,231,207,167,227,170,194,227,50,166)
|
||||||
IMAGE_DATA(56,17,30,128,216,192,31,70,31,172,253,129,159,186,140,185,246,141,63,53,142,177,104,72,228,177,109,109,251,136,177,173)
|
IMAGE_DATA(122,174,86,99,161,212,235,229,184,18,49,181,124,57,54,124,167,248,24,31,207,169,28,89,63,157,31,198,76,248,104,249)
|
||||||
IMAGE_DATA(108,25,50,182,229,231,251,151,218,176,104,185,61,5,69,21,49,104,233,251,27,186,19,115,108,140,140,67,253,181,49,248)
|
IMAGE_DATA(50,62,53,62,172,13,138,26,167,100,224,121,93,222,137,152,67,249,178,198,212,185,100,142,212,188,232,122,198,132,143,49)
|
||||||
IMAGE_DATA(229,183,17,168,110,27,134,170,214,33,56,217,60,0,229,77,253,240,67,195,125,40,171,239,129,210,186,110,248,166,246,119)
|
IMAGE_DATA(100,92,188,54,57,22,60,46,231,143,226,235,106,166,233,13,146,175,50,228,245,201,188,168,220,116,57,169,115,147,56,79)
|
||||||
IMAGE_DATA(56,84,125,15,194,209,73,40,60,118,11,154,186,255,50,106,195,250,60,221,246,96,153,135,44,190,58,21,95,170,205,190)
|
IMAGE_DATA(242,147,115,42,239,3,201,83,251,76,229,83,199,168,88,58,62,142,81,237,41,217,179,121,44,57,247,186,123,150,232,203)
|
||||||
IMAGE_DATA(35,81,168,191,59,15,183,89,77,251,30,67,164,119,22,174,119,207,24,181,105,143,79,195,229,216,116,162,150,15,225,226)
|
IMAGE_DATA(12,31,107,163,214,15,57,212,156,170,241,228,61,171,242,241,26,77,93,82,124,28,99,114,173,74,198,165,56,82,178,54)
|
||||||
IMAGE_DATA(173,41,195,143,213,229,124,34,26,19,115,100,243,252,248,187,27,80,126,113,112,206,204,245,219,134,97,56,116,102,0,190)
|
IMAGE_DATA(186,117,79,222,75,68,77,198,114,253,47,249,37,127,196,252,29,253,238,245,63,183,155,62,127,25,220,201,47,195,99,227)
|
||||||
IMAGE_DATA(172,185,15,95,252,220,13,251,79,222,51,230,90,248,227,109,248,244,232,77,248,36,145,199,114,63,44,105,158,75,229,90)
|
IMAGE_DATA(223,233,48,56,114,132,193,189,123,131,135,200,195,135,12,78,156,224,112,237,26,131,217,89,6,235,235,28,78,159,102,208)
|
||||||
IMAGE_DATA(245,84,58,46,6,130,160,184,184,24,108,246,117,205,95,122,197,253,127,123,171,125,169,88,27,55,145,193,241,167,155,159)
|
IMAGE_DATA(106,209,155,129,227,199,25,28,59,54,240,63,119,142,65,163,17,125,62,120,112,112,252,212,41,6,205,38,203,248,95,186)
|
||||||
IMAGE_DATA(235,243,247,42,223,87,229,189,171,247,98,224,165,182,57,252,190,101,155,83,238,250,245,235,161,166,166,6,58,58,58,222)
|
IMAGE_DATA(196,96,106,138,193,163,71,12,158,62,101,225,103,202,255,193,3,6,251,247,211,254,215,175,51,88,88,96,112,249,50,131)
|
||||||
IMAGE_DATA(10,118,156,157,183,232,107,155,93,174,85,95,66,63,70,62,187,144,204,109,19,183,142,229,62,107,207,251,97,227,146,249)
|
IMAGE_DATA(199,143,121,33,255,11,23,162,107,42,21,6,155,155,12,158,60,161,253,49,255,181,53,150,169,31,114,239,223,231,112,227)
|
||||||
IMAGE_DATA(215,212,180,194,218,181,71,44,247,249,120,120,157,204,249,197,197,103,33,63,255,123,99,43,219,23,131,247,97,30,7,243)
|
IMAGE_DATA(6,131,103,207,56,108,108,208,245,187,122,117,252,230,127,7,23,67,215,251,247,31,131,116,68,22,0,0,0,0,0,0)
|
||||||
IMAGE_DATA(99,190,86,251,230,113,200,234,97,87,7,89,61,60,226,226,213,245,225,213,117,170,84,239,125,68,118,170,30,3,10,133)
|
IMAGE_END_DATA(1376, 7)
|
||||||
IMAGE_DATA(66,161,80,40,20,10,133,66,161,80,40,20,10,133,66,161,80,40,20,10,133,66,5,70,248,215,242,106,133,255,187,129)
|
|
||||||
IMAGE_DATA(30,82,197,1,57,45,151,234,122,35,167,55,82,93,83,100,180,92,170,235,135,124,150,43,19,53,112,243,15,7,221,68)
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(46,242,209,169,254,42,120,169,174,191,89,65,228,144,73,78,65,229,161,186,230,126,49,10,2,19,213,181,85,197,8,121)
|
IMAGE_DATA(120,156,237,156,219,79,28,85,28,199,55,196,55,94,234,127,208,132,39,124,109,210,103,194,83,237,3,225,133,16,158,244)
|
||||||
IMAGE_DATA(228,46,31,228,145,30,31,149,76,84,215,73,119,62,126,51,81,93,23,93,194,47,54,200,68,63,54,200,35,179,124,178)
|
IMAGE_DATA(129,88,47,201,62,144,168,137,166,145,40,77,140,33,169,182,86,2,169,173,208,46,182,16,41,184,20,10,69,110,219,45)
|
||||||
IMAGE_DATA(145,9,251,3,80,115,120,217,94,71,54,186,51,9,18,23,175,216,32,19,61,217,232,206,36,168,92,156,216,4,157,73)
|
IMAGE_DATA(176,221,34,119,150,251,77,66,5,161,141,141,149,52,200,207,61,163,7,15,199,51,183,221,217,57,103,118,126,223,228,151)
|
||||||
IMAGE_DATA(144,185,164,202,6,185,232,199,37,200,76,236,234,156,108,123,221,216,4,129,137,85,157,189,108,175,154,77,16,239,149,92)
|
IMAGE_DATA(97,102,207,239,124,207,249,125,102,206,236,12,165,103,79,6,78,6,80,255,168,172,172,12,100,135,44,161,63,250,187,229)
|
||||||
IMAGE_DATA(224,34,178,9,10,147,108,226,98,199,6,185,232,203,5,215,48,253,184,4,137,73,54,114,73,133,141,234,241,34,23,228)
|
IMAGE_DATA(95,91,91,11,201,203,77,139,96,48,120,104,213,63,26,141,194,153,51,103,14,105,46,137,188,188,188,67,210,159,72,180)
|
||||||
IMAGE_DATA(130,92,188,101,18,180,239,147,185,194,197,203,246,200,5,185,32,23,228,130,92,252,225,162,19,155,92,100,18,132,247,48)
|
IMAGE_DATA(111,86,36,159,228,144,190,200,231,228,103,43,254,212,151,239,83,239,56,25,19,63,46,58,111,145,140,252,201,24,73,30)
|
||||||
IMAGE_DATA(185,198,37,40,239,199,144,139,158,108,178,145,139,211,26,166,251,61,147,141,76,236,184,4,229,247,200,217,200,197,237,189)
|
IMAGE_DATA(25,179,209,231,84,164,29,223,158,30,19,213,196,200,223,204,155,136,244,73,218,144,249,241,124,200,62,253,156,61,102,197)
|
||||||
IMAGE_DATA(162,51,155,108,227,146,44,19,228,162,47,23,221,216,36,251,238,49,217,246,65,97,226,196,197,111,54,217,116,175,56,213)
|
IMAGE_DATA(159,230,233,141,153,138,122,210,122,147,246,188,135,81,237,245,252,233,120,205,196,215,136,236,243,99,102,207,53,43,254,116)
|
||||||
IMAGE_DATA(213,137,139,78,108,178,133,139,23,76,116,99,19,244,240,146,9,178,209,151,137,91,54,200,39,121,30,233,50,65,54,250)
|
IMAGE_DATA(188,162,90,177,162,92,217,190,69,188,72,63,70,125,241,254,169,214,94,175,206,102,125,165,226,47,170,145,136,61,173,145)
|
||||||
IMAGE_DATA(50,73,134,77,46,243,113,91,31,47,153,36,203,38,151,248,36,83,147,76,48,73,133,77,54,243,73,182,14,153,100,130)
|
IMAGE_DATA(222,58,33,242,167,57,122,53,163,222,60,83,17,123,179,115,79,228,79,36,90,91,216,53,80,52,54,58,79,54,199,140)
|
||||||
IMAGE_DATA(124,244,229,145,14,155,160,50,74,117,158,42,152,120,193,71,103,70,233,204,73,53,15,179,210,153,139,106,78,94,140,93)
|
IMAGE_DATA(189,158,63,59,6,118,189,37,199,244,214,3,58,46,246,115,81,77,172,250,211,49,24,177,51,147,149,107,216,104,254,70)
|
||||||
IMAGE_DATA(117,253,157,228,197,28,51,197,43,19,99,83,93,239,100,149,137,26,232,20,170,235,155,174,84,215,15,121,56,75,117,77)
|
IMAGE_DATA(107,31,145,217,57,106,54,119,145,63,61,255,248,117,147,95,211,245,238,113,228,56,61,87,204,188,69,254,172,216,123,165)
|
||||||
IMAGE_DATA(145,133,59,169,174,55,114,112,39,228,16,44,97,253,81,40,20,10,133,66,161,80,40,20,10,133,66,161,80,168,220,209)
|
IMAGE_DATA(213,251,174,149,181,203,170,191,27,66,127,53,252,101,134,147,207,146,94,84,206,137,192,9,199,58,147,249,48,236,116,62)
|
||||||
IMAGE_DATA(127,183,7,174,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
IMAGE_DATA(251,192,98,244,37,142,46,144,108,62,201,101,115,216,47,40,236,2,206,46,214,108,190,200,143,62,192,4,152,27,3,253)
|
||||||
IMAGE_END_DATA(1920, 8)
|
IMAGE_DATA(153,248,89,201,39,91,246,134,66,111,24,188,191,232,139,52,61,198,126,198,250,240,254,236,77,43,192,124,57,181,146,79)
|
||||||
|
IMAGE_DATA(115,104,240,125,209,57,176,125,137,248,27,221,136,249,135,53,163,135,33,209,77,143,173,157,81,190,85,169,176,152,157,245)
|
||||||
|
IMAGE_DATA(211,155,193,247,235,39,128,4,250,163,63,250,139,85,215,179,1,50,130,245,119,91,34,255,138,138,10,45,220,248,89,69)
|
||||||
|
IMAGE_DATA(127,55,165,226,252,101,251,103,90,86,231,159,201,185,171,236,239,166,172,204,223,233,121,219,173,191,219,254,110,42,149,235)
|
||||||
|
IMAGE_DATA(63,213,224,251,80,213,223,77,241,254,50,191,127,160,80,126,149,163,111,6,157,82,105,105,233,185,120,60,254,98,112,112)
|
||||||
|
IMAGE_DATA(240,105,56,28,222,108,104,104,72,84,87,87,71,202,203,203,47,23,23,23,159,47,44,44,12,230,231,231,191,158,147,147)
|
||||||
|
IMAGE_DATA(243,138,40,63,22,139,237,71,34,145,253,162,162,162,115,169,248,39,125,255,170,170,170,106,207,205,205,181,85,156,230,232)
|
||||||
|
IMAGE_DATA(234,198,192,242,1,116,116,221,135,150,182,48,244,46,188,132,251,137,125,232,156,126,1,225,137,231,208,50,250,12,154,70)
|
||||||
|
IMAGE_DATA(118,225,102,116,27,174,247,111,105,139,208,149,206,85,184,248,227,18,124,84,55,160,229,38,214,159,30,197,236,218,30,204)
|
||||||
|
IMAGE_DATA(172,238,193,212,202,30,76,44,237,194,248,226,111,48,58,191,3,241,196,54,196,102,183,97,104,250,9,68,39,183,96,112)
|
||||||
|
IMAGE_DATA(124,11,62,187,53,13,52,255,224,224,0,122,226,191,104,219,206,145,53,109,219,26,89,209,182,183,123,23,181,109,253,189)
|
||||||
|
IMAGE_DATA(57,109,251,236,249,159,208,59,186,9,231,27,198,161,111,241,165,230,215,253,104,3,238,141,172,67,251,195,85,104,123,176)
|
||||||
|
IMAGE_DATA(2,63,12,46,67,83,223,34,52,246,204,67,67,215,28,92,235,152,133,186,240,12,196,102,126,213,250,32,237,63,252,118)
|
||||||
|
IMAGE_DATA(84,155,235,212,242,174,118,140,68,75,50,143,108,27,123,22,180,237,181,142,132,182,173,105,157,62,106,67,162,99,120,13)
|
||||||
|
IMAGE_DATA(42,106,99,208,49,245,7,140,37,231,120,39,178,12,205,125,75,240,253,79,11,112,163,123,14,174,119,38,224,106,251,12)
|
||||||
|
IMAGE_DATA(212,180,77,195,215,45,147,112,177,121,28,170,111,141,193,231,141,63,195,133,27,143,33,28,93,133,224,149,33,104,27,251)
|
||||||
|
IMAGE_DATA(93,171,13,233,243,102,247,252,49,15,81,124,90,31,63,170,205,187,151,162,208,252,104,15,134,73,77,167,158,64,100,98)
|
||||||
|
IMAGE_DATA(11,6,198,54,181,218,244,196,55,160,43,182,145,172,229,58,220,29,90,211,252,72,93,90,147,113,39,57,71,50,207,183)
|
||||||
|
IMAGE_DATA(191,124,0,53,119,103,119,120,174,95,180,204,193,133,219,51,240,73,104,18,62,254,110,12,62,184,250,88,155,107,240,155)
|
||||||
|
IMAGE_DATA(97,120,239,242,67,120,39,153,71,114,223,168,106,223,73,229,92,117,84,42,46,6,140,160,178,178,18,12,246,85,205,63)
|
||||||
|
IMAGE_DATA(122,197,253,111,123,189,125,161,72,27,43,145,193,241,167,155,239,247,249,59,149,239,170,114,94,85,123,49,112,82,37,38)
|
||||||
|
IMAGE_DATA(191,111,41,49,203,45,40,40,128,80,40,4,253,253,253,255,11,114,156,124,174,211,87,137,81,174,94,95,76,63,90,62)
|
||||||
|
IMAGE_DATA(57,145,248,182,201,75,71,119,159,180,167,253,144,113,137,252,67,161,78,56,125,250,146,238,62,29,15,173,19,159,95,89)
|
||||||
|
IMAGE_DATA(217,4,167,78,125,165,109,69,251,108,208,62,248,113,16,63,226,171,183,207,143,67,84,15,163,58,136,234,225,16,23,167)
|
||||||
|
IMAGE_DATA(206,15,167,206,83,169,122,237,173,192,155,178,199,128,66,161,80,40,20,10,133,66,161,80,40,20,10,133,66,161,80,40)
|
||||||
|
IMAGE_DATA(20,10,133,66,161,80,158,17,254,181,188,92,225,255,110,160,134,100,113,64,78,199,37,187,222,200,233,63,201,174,41,50)
|
||||||
|
IMAGE_DATA(58,46,217,245,67,62,199,149,137,26,88,249,135,131,86,194,143,124,84,170,191,12,94,178,235,207,203,139,28,50,201,201)
|
||||||
|
IMAGE_DATA(171,60,100,215,220,45,70,94,96,34,187,182,178,24,33,15,255,242,65,30,233,241,145,201,68,118,157,84,231,227,54,19)
|
||||||
|
IMAGE_DATA(217,117,81,37,220,98,131,76,212,99,131,60,50,203,39,27,153,144,63,0,229,195,201,246,42,178,81,157,137,151,184,56)
|
||||||
|
IMAGE_DATA(197,6,153,168,201,70,117,38,94,229,98,198,198,235,76,188,204,37,85,54,200,69,61,46,94,102,98,84,103,187,237,85)
|
||||||
|
IMAGE_DATA(99,227,5,38,122,117,118,178,189,108,54,94,188,86,252,192,133,101,227,21,38,217,196,197,136,13,114,81,151,11,174,97)
|
||||||
|
IMAGE_DATA(234,113,241,18,147,108,228,146,10,27,217,227,69,46,200,5,185,56,203,196,107,207,147,126,225,226,100,123,228,130,92,144)
|
||||||
|
IMAGE_DATA(11,114,65,46,238,112,81,137,141,31,153,120,225,61,140,223,184,120,229,253,24,114,81,147,77,54,114,49,91,195,84,191)
|
||||||
|
IMAGE_DATA(102,178,145,137,17,23,175,252,30,57,27,185,88,189,86,84,102,147,109,92,236,50,65,46,234,114,81,141,141,221,119,143)
|
||||||
|
IMAGE_DATA(118,219,123,133,137,25,23,183,217,100,211,181,98,86,87,51,46,42,177,201,22,46,78,48,81,141,141,215,195,73,38,200)
|
||||||
|
IMAGE_DATA(70,93,38,86,217,32,31,251,60,210,101,130,108,212,101,98,135,141,159,249,88,173,143,147,76,236,178,241,19,31,59,53)
|
||||||
|
IMAGE_DATA(201,4,147,84,216,100,51,31,187,117,200,36,19,228,163,46,143,116,216,120,149,81,170,243,148,193,196,9,62,42,51,74)
|
||||||
|
IMAGE_DATA(103,78,178,121,240,74,103,46,178,57,57,49,118,217,245,55,147,19,115,204,20,175,76,140,77,118,189,237,42,19,53,80)
|
||||||
|
IMAGE_DATA(41,100,215,55,93,201,174,31,242,48,151,236,154,34,11,107,146,93,111,228,96,77,200,193,91,194,250,163,80,40,20,10)
|
||||||
|
IMAGE_DATA(133,66,161,80,40,20,10,133,66,161,80,254,209,223,58,209,116,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
||||||
|
IMAGE_END_DATA(1728, 7)
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,219,49,78,195,48,24,134,97,139,169,35,92,131,169,87,97,200,144,141,137,27,176,115,171,30,166,119,33,200)
|
IMAGE_DATA(120,156,237,219,49,78,195,48,24,134,97,139,169,35,92,131,169,87,97,200,144,141,137,27,176,115,171,30,166,119,33,200)
|
||||||
|
|
|
||||||
|
|
@ -240,6 +240,51 @@ void Pdb::CopyMenu(ArrayCtrl& array, Bar& bar)
|
||||||
bar.Separator();
|
bar.Separator();
|
||||||
bar.Add("Show type", [=] { show_type = !show_type; Data(); }).Check(show_type);
|
bar.Add("Show type", [=] { show_type = !show_type; Data(); }).Check(show_type);
|
||||||
bar.Add("No pretty-printing", [=] { raw = !raw; Data(); }).Check(raw);
|
bar.Add("No pretty-printing", [=] { raw = !raw; Data(); }).Check(raw);
|
||||||
|
bar.Add("Copy type script (for .dbg file)", [&] { CopyTypeScript(array); });
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pdb::CopyTypeScriptType(String& text, int type, const String& tabs, const String& id)
|
||||||
|
{
|
||||||
|
if(type <= 0)
|
||||||
|
return;
|
||||||
|
const Type& t = GetType(type);
|
||||||
|
for(int i = 0; i < t.member.GetCount(); i++) {
|
||||||
|
String nid = t.member.GetKey(i);
|
||||||
|
text << tabs << nid << " = ";
|
||||||
|
int ref = clamp(t.member[i].ref, 0, 8);
|
||||||
|
for(int j = 0; j < ref; j++)
|
||||||
|
text << "DeRef(";
|
||||||
|
text << "Field(" << id << ", " << AsCString(nid) << ")";
|
||||||
|
for(int j = 0; j < ref; j++)
|
||||||
|
text << ")";
|
||||||
|
text << ";\n";
|
||||||
|
CopyTypeScriptType(text, t.member[i].type, tabs + '\t', nid);
|
||||||
|
}
|
||||||
|
for(int i = 0; i < t.base.GetCount(); i++)
|
||||||
|
CopyTypeScriptType(text, t.base[i].type, tabs, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pdb::CopyTypeScript(ArrayCtrl& array)
|
||||||
|
{
|
||||||
|
if(array.IsCursor()) {
|
||||||
|
Value q = array.Get(1);
|
||||||
|
if(IsType<Visual>(q))
|
||||||
|
try {
|
||||||
|
int type = ValueTo<Visual>(q).type;
|
||||||
|
const Type& t = GetType(type);
|
||||||
|
String tname = t.name;
|
||||||
|
tname.Replace("::__1", ""); // CLANG has some weird stuff in names...
|
||||||
|
int q = tname.Find('<');
|
||||||
|
if(q >= 0)
|
||||||
|
tname.Trim(q);
|
||||||
|
String text;
|
||||||
|
text << "typename " << tname << " {\n";
|
||||||
|
CopyTypeScriptType(text, type, "\t", "value");
|
||||||
|
text << "}\n";
|
||||||
|
WriteClipboardText(text);
|
||||||
|
}
|
||||||
|
catch(CParser::Error) {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pdb::MemMenu(ArrayCtrl& array, Bar& bar, const String& exp)
|
void Pdb::MemMenu(ArrayCtrl& array, Bar& bar, const String& exp)
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ file
|
||||||
Exp.cpp,
|
Exp.cpp,
|
||||||
PrettyUpp.cpp,
|
PrettyUpp.cpp,
|
||||||
PrettyStd.cpp,
|
PrettyStd.cpp,
|
||||||
|
Scripts.cpp,
|
||||||
Pretty.cpp,
|
Pretty.cpp,
|
||||||
Visualise.cpp,
|
Visualise.cpp,
|
||||||
Data.cpp,
|
Data.cpp,
|
||||||
|
|
|
||||||
|
|
@ -106,6 +106,14 @@ dword Pdb::PeekDword(adr_t address)
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dword Pdb::Peek64(adr_t address)
|
||||||
|
{
|
||||||
|
dword w;
|
||||||
|
if(!Copy(address, &w, 8))
|
||||||
|
ThrowError("??");
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
|
||||||
Pdb::Val Pdb::GetRVal(Pdb::Val v)
|
Pdb::Val Pdb::GetRVal(Pdb::Val v)
|
||||||
{ // read data from debugee
|
{ // read data from debugee
|
||||||
if(v.rvalue)
|
if(v.rvalue)
|
||||||
|
|
|
||||||
|
|
@ -370,6 +370,8 @@ Pdb::Pdb()
|
||||||
}
|
}
|
||||||
StringStream ss(WorkspaceConfigData("pdb-debugger"));
|
StringStream ss(WorkspaceConfigData("pdb-debugger"));
|
||||||
Load(callback(this, &Pdb::SerializeSession), ss);
|
Load(callback(this, &Pdb::SerializeSession), ss);
|
||||||
|
|
||||||
|
LoadPrettyScripts();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Pdb::CopyStack()
|
void Pdb::CopyStack()
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,7 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
Val val;
|
Val val;
|
||||||
Val key;
|
Val key;
|
||||||
int64 from = 0;
|
int64 from = 0;
|
||||||
|
int64 chunk = 10000;
|
||||||
bool exp = false;
|
bool exp = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -154,6 +155,7 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
struct Visual {
|
struct Visual {
|
||||||
int length;
|
int length;
|
||||||
Vector<VisualPart> part;
|
Vector<VisualPart> part;
|
||||||
|
int type = 0; // only need for Copy type for .dbg
|
||||||
|
|
||||||
void Cat(const String& text, Color ink = SColorText);
|
void Cat(const String& text, Color ink = SColorText);
|
||||||
void Cat(const char *text, Color ink = SColorText);
|
void Cat(const char *text, Color ink = SColorText);
|
||||||
|
|
@ -269,12 +271,14 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
struct LengthLimit {};
|
struct LengthLimit {};
|
||||||
|
|
||||||
struct Pretty {
|
struct Pretty {
|
||||||
int kind; // VARIABLE, TEXT or CONTAINER
|
int kind; // SINGLE_VALUE, TEXT or CONTAINER
|
||||||
int64 data_count = 0; // number of entries
|
int64 data_count = 0; // number of entries
|
||||||
Vector<String> data_type; // type of data items (usually type_param)
|
Vector<String> data_type; // type of data items (usually type_param), >1 - display as tuples, usually key : value
|
||||||
Vector<adr_t> data_ptr; // pointer to items (data_count.GetCount() * data_type.GetCount() items)
|
Vector<adr_t> data_ptr; // pointer to items (data_count.GetCount() * data_type.GetCount() items)
|
||||||
Visual text;
|
Visual text;
|
||||||
bool has_data = true; // do display the data for SINGLE_VALUE (false for e.g. void Value)
|
bool has_data = true; // do display the data for SINGLE_VALUE (false for e.g. void Value)
|
||||||
|
bool separated_types = false; // item tuples are in consequent arrays
|
||||||
|
int chunk = 10000; // maximum number of items to be displayed in treeview in single node
|
||||||
|
|
||||||
void Text(const char *s, Color color = SRed) { text.Cat(s, color); has_data = false; }
|
void Text(const char *s, Color color = SRed) { text.Cat(s, color); has_data = false; }
|
||||||
void Text(const String& s, Color color = SRed) { text.Cat(s, color); has_data = false; }
|
void Text(const String& s, Color color = SRed) { text.Cat(s, color); has_data = false; }
|
||||||
|
|
@ -289,6 +293,9 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
bool raw = false;
|
bool raw = false;
|
||||||
|
|
||||||
int bc_lvl = 0; // For coloring { } in pretty container display
|
int bc_lvl = 0; // For coloring { } in pretty container display
|
||||||
|
|
||||||
|
ArrayMap<String, EscValue> pretty_globals;
|
||||||
|
ArrayMap<String, EscValue> pretty_scripts;
|
||||||
|
|
||||||
void Error(const char *s = NULL);
|
void Error(const char *s = NULL);
|
||||||
|
|
||||||
|
|
@ -372,6 +379,7 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
byte PeekByte(adr_t address);
|
byte PeekByte(adr_t address);
|
||||||
word PeekWord(adr_t address);
|
word PeekWord(adr_t address);
|
||||||
dword PeekDword(adr_t address);
|
dword PeekDword(adr_t address);
|
||||||
|
dword Peek64(adr_t address);
|
||||||
Val GetRVal(Val v);
|
Val GetRVal(Val v);
|
||||||
Val DeRef(Val v);
|
Val DeRef(Val v);
|
||||||
Val Ref(Val v);
|
Val Ref(Val v);
|
||||||
|
|
@ -416,6 +424,7 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
bool VisualisePretty(Visual& result, Pdb::Val val, dword flags);
|
bool VisualisePretty(Visual& result, Pdb::Val val, dword flags);
|
||||||
|
|
||||||
bool PrettyVal(Pdb::Val val, int64 from, int count, Pretty& p);
|
bool PrettyVal(Pdb::Val val, int64 from, int count, Pretty& p);
|
||||||
|
|
||||||
void PrettyString(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
void PrettyString(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||||
void PrettyWString(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
void PrettyWString(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||||
void PrettyVector(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
void PrettyVector(Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||||
|
|
@ -450,6 +459,10 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
void PrettyStdDeque(Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p);
|
void PrettyStdDeque(Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p);
|
||||||
void PrettyStdUnordered(Pdb::Val val, bool set, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p);
|
void PrettyStdUnordered(Pdb::Val val, bool set, const Vector<String>& tparam, int64 from, int count, Pdb::Pretty& p);
|
||||||
|
|
||||||
|
void LoadPrettyScripts();
|
||||||
|
void SetVal(EscValue& v, Pdb::Val val);
|
||||||
|
bool PrettyScript(const String& type, Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p);
|
||||||
|
|
||||||
// code
|
// code
|
||||||
Thread& Current();
|
Thread& Current();
|
||||||
Array<Frame> Backtrace(Thread& ctx, bool single_frame = false, bool thread_info = false);
|
Array<Frame> Backtrace(Thread& ctx, bool single_frame = false, bool thread_info = false);
|
||||||
|
|
@ -523,6 +536,9 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
void WatchMenu(Bar& bar, const String& exp);
|
void WatchMenu(Bar& bar, const String& exp);
|
||||||
void WatchesMenu(Bar& bar);
|
void WatchesMenu(Bar& bar);
|
||||||
|
|
||||||
|
void CopyTypeScript(ArrayCtrl& array);
|
||||||
|
void CopyTypeScriptType(String& text, int type, const String& tabs, const String& id);
|
||||||
|
|
||||||
void SyncTreeDisas();
|
void SyncTreeDisas();
|
||||||
|
|
||||||
void Tab();
|
void Tab();
|
||||||
|
|
@ -530,7 +546,7 @@ struct Pdb : Debugger, ParentCtrl {
|
||||||
bool Create(Host& local, const String& exefile, const String& cmdline, bool clang_);
|
bool Create(Host& local, const String& exefile, const String& cmdline, bool clang_);
|
||||||
|
|
||||||
void SerializeSession(Stream& s);
|
void SerializeSession(Stream& s);
|
||||||
|
|
||||||
typedef Pdb CLASSNAME;
|
typedef Pdb CLASSNAME;
|
||||||
|
|
||||||
Pdb();
|
Pdb();
|
||||||
|
|
|
||||||
|
|
@ -94,6 +94,8 @@ bool Pdb::PrettyVal(Pdb::Val val, int64 from, int count, Pretty& p)
|
||||||
|
|
||||||
type = Filter(type, [](int c) { return c != ' ' ? c : 0; });
|
type = Filter(type, [](int c) { return c != ' ' ? c : 0; });
|
||||||
type.Replace("::__1", ""); // CLANG has some weird stuff in names...
|
type.Replace("::__1", ""); // CLANG has some weird stuff in names...
|
||||||
|
if(PrettyScript(type, val, type_param, from, count, p))
|
||||||
|
return true;
|
||||||
|
|
||||||
int ii = pretty.Find(type);
|
int ii = pretty.Find(type);
|
||||||
if(ii >= 0) {
|
if(ii >= 0) {
|
||||||
|
|
@ -122,6 +124,10 @@ bool Pdb::VisualisePretty(Visual& result, Pdb::Val val, dword flags)
|
||||||
int count = (int)min(p.data_count, (int64)200);
|
int count = (int)min(p.data_count, (int64)200);
|
||||||
Pretty p;
|
Pretty p;
|
||||||
PrettyVal(val, 0, count, p);
|
PrettyVal(val, 0, count, p);
|
||||||
|
if(p.kind == SINGLE_VALUE) // support script errors
|
||||||
|
for(const VisualPart& vp : p.text.part)
|
||||||
|
result.Cat(vp.text, vp.ink);
|
||||||
|
else
|
||||||
if(p.data_type.GetCount()) {
|
if(p.data_type.GetCount()) {
|
||||||
String s;
|
String s;
|
||||||
WString ws;
|
WString ws;
|
||||||
|
|
@ -159,31 +165,36 @@ bool Pdb::VisualisePretty(Visual& result, Pdb::Val val, dword flags)
|
||||||
int count = (int)min(p.data_count, (int64)40);
|
int count = (int)min(p.data_count, (int64)40);
|
||||||
Pretty p;
|
Pretty p;
|
||||||
PrettyVal(val, 0, count, p);
|
PrettyVal(val, 0, count, p);
|
||||||
|
|
||||||
ResultCount(p.data_count);
|
if(p.kind == SINGLE_VALUE) // support script errors
|
||||||
if(p.data_type.GetCount()) {
|
for(const VisualPart& vp : p.text.part)
|
||||||
Buffer<Val> item(p.data_type.GetCount());
|
result.Cat(vp.text, vp.ink);
|
||||||
for(int i = 0; i < p.data_type.GetCount(); i++) {
|
else {
|
||||||
(TypeInfo &)item[i] = GetTypeInfo(p.data_type[i]);
|
ResultCount(p.data_count);
|
||||||
item[i].context = val.context;
|
if(p.data_type.GetCount()) {
|
||||||
}
|
Buffer<Val> item(p.data_type.GetCount());
|
||||||
int ii = 0;
|
for(int i = 0; i < p.data_type.GetCount(); i++) {
|
||||||
int n = p.data_ptr.GetCount() / p.data_type.GetCount();
|
(TypeInfo &)item[i] = GetTypeInfo(p.data_type[i]);
|
||||||
Color bc = decode(bc_lvl++ & 3, 0, SGray(), 1, SCyan(), 2, SBrown(), SGreen());
|
item[i].context = val.context;
|
||||||
result.Cat("{", bc);
|
|
||||||
for(int i = 0; i < n; i++) {
|
|
||||||
if(i)
|
|
||||||
result.Cat(", ", SGray);
|
|
||||||
for(int j = 0; j < p.data_type.GetCount(); j++) {
|
|
||||||
if(j)
|
|
||||||
result.Cat(": ", SBlue);
|
|
||||||
item[j].address = p.data_ptr[ii++];
|
|
||||||
if(item[j].type != UNKNOWN)
|
|
||||||
Visualise(result, item[j], flags | MEMBER);
|
|
||||||
}
|
}
|
||||||
|
int ii = 0;
|
||||||
|
int n = p.data_ptr.GetCount() / p.data_type.GetCount();
|
||||||
|
Color bc = decode(bc_lvl++ & 3, 0, SGray(), 1, SCyan(), 2, SBrown(), SGreen());
|
||||||
|
result.Cat("{", bc);
|
||||||
|
for(int i = 0; i < n; i++) {
|
||||||
|
if(i)
|
||||||
|
result.Cat(", ", SGray);
|
||||||
|
for(int j = 0; j < p.data_type.GetCount(); j++) {
|
||||||
|
if(j)
|
||||||
|
result.Cat(": ", SBlue);
|
||||||
|
item[j].address = p.data_ptr[p.separated_types ? n * j + i : ii++];
|
||||||
|
if(item[j].type != UNKNOWN)
|
||||||
|
Visualise(result, item[j], flags | MEMBER);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.Cat("}", bc);
|
||||||
|
bc_lvl--;
|
||||||
}
|
}
|
||||||
result.Cat("}", bc);
|
|
||||||
bc_lvl--;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(p.data_count > count)
|
if(p.data_count > count)
|
||||||
|
|
|
||||||
222
uppsrc/ide/Debuggers/Scripts.cpp
Normal file
222
uppsrc/ide/Debuggers/Scripts.cpp
Normal file
|
|
@ -0,0 +1,222 @@
|
||||||
|
#include "Debuggers.h"
|
||||||
|
|
||||||
|
#ifdef PLATFORM_WIN32
|
||||||
|
|
||||||
|
#define LTIMESTOP(x)
|
||||||
|
#define LLOG(x)
|
||||||
|
|
||||||
|
void Pdb::LoadPrettyScripts()
|
||||||
|
{
|
||||||
|
const Workspace& wspc = GetIdeWorkspace();
|
||||||
|
for(int i = 0; i < wspc.GetCount(); i++) {
|
||||||
|
const Package& pk = wspc.GetPackage(i);
|
||||||
|
String n = wspc[i];
|
||||||
|
for(int i = 0; i < pk.file.GetCount(); i++) {
|
||||||
|
String filename = SourcePath(n, pk.file[i]);
|
||||||
|
if(ToLower(GetFileExt(filename)) == ".dbg") {
|
||||||
|
try {
|
||||||
|
String d = LoadFile(filename);
|
||||||
|
CParser p(d, filename);
|
||||||
|
while(!p.IsEof()) {
|
||||||
|
if(p.Id("fn")) {
|
||||||
|
String id = p.ReadId();
|
||||||
|
pretty_globals.GetAdd(id) = ReadLambda(p);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(p.Id("typename")) {
|
||||||
|
String type;
|
||||||
|
for(;;) {
|
||||||
|
if(p.Char2(':', ':'))
|
||||||
|
type << "::";
|
||||||
|
else
|
||||||
|
if(p.IsId())
|
||||||
|
type << p.ReadId();
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
pretty_scripts.GetAdd(type) = ReadLambda(p, false, "(value, template_param, from, items)");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if(!p.Char(';'))
|
||||||
|
p.ThrowError();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(CParser::Error) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StdLib(pretty_globals);
|
||||||
|
|
||||||
|
auto ValGet = [](EscEscape& e, const char *what) -> int64 {
|
||||||
|
if(e[0].IsMap())
|
||||||
|
return e[0].MapGet(what).GetInt64();
|
||||||
|
else
|
||||||
|
if(e[0].IsInt64())
|
||||||
|
return e[0].GetInt64();
|
||||||
|
else
|
||||||
|
e.ThrowError("parameter can be either :value structure or integer");
|
||||||
|
return 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto Type = [=](EscEscape& e) { return ValGet(e, "type"); };
|
||||||
|
auto Adr = [=](EscEscape& e) { return ValGet(e, "address"); };
|
||||||
|
|
||||||
|
Escape(pretty_globals, "SizeOf(x)", [=](EscEscape& e) {
|
||||||
|
if(e[0].IsArray())
|
||||||
|
e = SizeOfType((String)e[0]);
|
||||||
|
else
|
||||||
|
e = SizeOfType(Type(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "TypeName(x)", [=](EscEscape& e) {
|
||||||
|
e = GetType(Type(e)).name;
|
||||||
|
});
|
||||||
|
|
||||||
|
Escape(pretty_globals, "PeekPtr(x)", [=](EscEscape& e) {
|
||||||
|
e = (int64)PeekPtr(Adr(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "Peek8(x)", [=](EscEscape& e) {
|
||||||
|
e = (int64)PeekByte(Adr(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "Peek16(x)", [=](EscEscape& e) {
|
||||||
|
e = (int64)PeekWord(Adr(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "Peek32(x)", [=](EscEscape& e) {
|
||||||
|
e = (int64)PeekDword(Adr(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "Peek64(x)", [=](EscEscape& e) {
|
||||||
|
e = (int64)Peek64(Adr(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "Peek32f(x)", [=](EscEscape& e) {
|
||||||
|
e = (float)PeekDword(Adr(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "Peek64f(x)", [=](EscEscape& e) {
|
||||||
|
e = (double)Peek64(Adr(e));
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "SizeOfPtr()", [=](EscEscape& e) {
|
||||||
|
e = win64 ? 8 : 4;
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "LOG(x)", [=](EscEscape& e) {
|
||||||
|
String txt;
|
||||||
|
if(e[0].IsArray())
|
||||||
|
txt = (String)e[0];
|
||||||
|
else
|
||||||
|
txt = e[0].ToString();
|
||||||
|
PutConsole("dbg! " + txt);
|
||||||
|
});
|
||||||
|
|
||||||
|
Escape(pretty_globals, "DeRef(x)", [=](EscEscape& e) {
|
||||||
|
EscValue v = e[0];
|
||||||
|
if(!v.IsMap())
|
||||||
|
e.ThrowError("paramater must be :value structure");
|
||||||
|
v.MapSet("address", (int64)PeekPtr(v.MapGet("address").GetInt64()));
|
||||||
|
e = v;
|
||||||
|
});
|
||||||
|
Escape(pretty_globals, "Field(x, id)", [=](EscEscape& e) {
|
||||||
|
EscValue v = e[0];
|
||||||
|
if(!v.IsMap())
|
||||||
|
e.ThrowError("paramater must be :value structure");
|
||||||
|
Pdb::Val val;
|
||||||
|
val.type = v.MapGet("type").GetInt();
|
||||||
|
val.address = v.MapGet("address").GetInt64();
|
||||||
|
val = GetAttr(val, e[1]);
|
||||||
|
SetVal(v, val);
|
||||||
|
e = v;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Pdb::SetVal(EscValue& v, Pdb::Val val)
|
||||||
|
{
|
||||||
|
v.MapSet("address", (int64)val.address);
|
||||||
|
v.MapSet("type", val.type);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Pdb::PrettyScript(const String& type, Pdb::Val val, const Vector<String>& tparam, int64 from, int count, Pretty& p)
|
||||||
|
{
|
||||||
|
int ii = pretty_scripts.Find(type);
|
||||||
|
if(ii < 0)
|
||||||
|
return false;
|
||||||
|
LTIMESTOP("PrettyScript duration");
|
||||||
|
LLOG("PrettyScript " << type << ", from: " << from << ", count: " << count);
|
||||||
|
ArrayMap<String, EscValue> g = clone(pretty_globals);
|
||||||
|
Vector<EscValue> args;
|
||||||
|
SetVal(args.Add(), val);
|
||||||
|
EscValue& v = args.Add();
|
||||||
|
v.SetEmptyArray();
|
||||||
|
for(int i = 0; i < tparam.GetCount(); i++)
|
||||||
|
v.ArrayAdd(tparam[i]);
|
||||||
|
args.Add(from);
|
||||||
|
args.Add(count);
|
||||||
|
bool ret = false;
|
||||||
|
p.kind = CONTAINER;
|
||||||
|
p.separated_types = true;
|
||||||
|
Escape(g, "TEXT(x)", [&](EscEscape& e) {
|
||||||
|
ret = true;
|
||||||
|
p.kind = SINGLE_VALUE;
|
||||||
|
if(e[0].IsArray())
|
||||||
|
p.Text((String) e[0]);
|
||||||
|
else
|
||||||
|
if(e[0].IsNumber())
|
||||||
|
p.Text(AsString(e[0].GetNumber()));
|
||||||
|
else
|
||||||
|
e.ThrowError("invalid argument to 'Text'");
|
||||||
|
});
|
||||||
|
Escape(g, "ITEM_PTR(adr)", [&](EscEscape& e) {
|
||||||
|
ret = true;
|
||||||
|
p.data_ptr << e[0].GetInt64();
|
||||||
|
});
|
||||||
|
Escape(g, "ITEM_PTRS(adr, sz, from, items)", [&](EscEscape& e) {
|
||||||
|
ret = true;
|
||||||
|
adr_t adr = e[0].GetInt64();
|
||||||
|
int64 sz = e[1].GetInt();
|
||||||
|
int64 from = e[2].GetInt();
|
||||||
|
int64 items = e[3].GetInt();
|
||||||
|
|
||||||
|
for(int64 i = 0; i < items; i++)
|
||||||
|
p.data_ptr << adr + (i + from) * sz;
|
||||||
|
});
|
||||||
|
Escape(g, "ITEM_DEREF_PTRS(adr, from, items)", [&](EscEscape& e) {
|
||||||
|
ret = true;
|
||||||
|
adr_t adr = e[0].GetInt64();
|
||||||
|
int64 sz = win64 ? 8 : 4;
|
||||||
|
int64 from = e[1].GetInt();
|
||||||
|
int64 items = e[2].GetInt();
|
||||||
|
|
||||||
|
for(int64 i = 0; i < items; i++)
|
||||||
|
p.data_ptr << PeekPtr(adr + (i + from) * sz);
|
||||||
|
});
|
||||||
|
Escape(g, "ITEM_COUNT(x)", [&](EscEscape& e) {
|
||||||
|
ret = true;
|
||||||
|
p.data_count = e[0].GetInt64();
|
||||||
|
});
|
||||||
|
Escape(g, "ITEM_TYPE(x)", [&](EscEscape& e) {
|
||||||
|
ret = true;
|
||||||
|
p.data_type << (String)e[0];
|
||||||
|
});
|
||||||
|
Escape(g, "STRING()", [&](EscEscape& e) {
|
||||||
|
p.kind = TEXT;
|
||||||
|
ret = true;
|
||||||
|
});
|
||||||
|
Escape(g, "HAS_DATA()", [&](EscEscape& e) {
|
||||||
|
p.has_data = true;
|
||||||
|
ret = true;
|
||||||
|
});
|
||||||
|
Escape(g, "CHUNK(x)", [&](EscEscape& e) {
|
||||||
|
p.chunk = clamp(e[0].GetInt(), 1, 10000);
|
||||||
|
ret = true;
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
Execute(g, NULL, pretty_scripts[ii], args, 2000);
|
||||||
|
}
|
||||||
|
catch(CParser::Error e) {
|
||||||
|
p.kind = SINGLE_VALUE;
|
||||||
|
p.text.Clear();
|
||||||
|
p.Text("ERR: ");
|
||||||
|
p.Text(e);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -26,7 +26,8 @@ void Pdb::PrettyTreeNode(int parent, Pdb::Val val, int64 from)
|
||||||
PrettyTreeNode(parent, MakeVal(p.data_type[0], p.data_ptr[0]), from);
|
PrettyTreeNode(parent, MakeVal(p.data_type[0], p.data_ptr[0]), from);
|
||||||
}
|
}
|
||||||
if(pp.kind == CONTAINER) {
|
if(pp.kind == CONTAINER) {
|
||||||
int n = int(min(pp.data_count, from + 10000) - from);
|
int chunk = pp.chunk;
|
||||||
|
int n = int(min(pp.data_count, from + chunk) - from);
|
||||||
Pretty p;
|
Pretty p;
|
||||||
PrettyVal(val, from, n, p);
|
PrettyVal(val, from, n, p);
|
||||||
|
|
||||||
|
|
@ -49,7 +50,7 @@ void Pdb::PrettyTreeNode(int parent, Pdb::Val val, int64 from)
|
||||||
for(int j = 0; j < p.data_type.GetCount(); j++) {
|
for(int j = 0; j < p.data_type.GetCount(); j++) {
|
||||||
if(j)
|
if(j)
|
||||||
result.Cat(": ");
|
result.Cat(": ");
|
||||||
item[j].address = p.data_ptr[ii++];
|
item[j].address = p.data_ptr[p.separated_types ? j * n + i : ii++];
|
||||||
nv.val = item[j];
|
nv.val = item[j];
|
||||||
if(p.data_type.GetCount() > 1 && j == 0)
|
if(p.data_type.GetCount() > 1 && j == 0)
|
||||||
nv.key = item[0];
|
nv.key = item[0];
|
||||||
|
|
@ -70,10 +71,11 @@ void Pdb::PrettyTreeNode(int parent, Pdb::Val val, int64 from)
|
||||||
int64 ii = n;
|
int64 ii = n;
|
||||||
while(ii < pp.data_count) {
|
while(ii < pp.data_count) {
|
||||||
nv.from = ii;
|
nv.from = ii;
|
||||||
|
nv.chunk = chunk;
|
||||||
Visual v;
|
Visual v;
|
||||||
v.Cat(String() << "[" << ii << ".." << min(pp.data_count - 1, ii + 9999) << "]", SGray);
|
v.Cat(String() << "[" << ii << ".." << min(pp.data_count - 1, ii + chunk - 1) << "]", SGray);
|
||||||
tree.Add(parent, Null, RawToValue(nv), RawPickToValue(pick(v)), true);
|
tree.Add(parent, Null, RawToValue(nv), RawPickToValue(pick(v)), true);
|
||||||
ii += 10000;
|
ii += chunk;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -136,14 +138,14 @@ void Pdb::TreeExpand(int node)
|
||||||
if(val.type < 0 || val.ref > 0) {
|
if(val.type < 0 || val.ref > 0) {
|
||||||
int sz = SizeOfType(val.type);
|
int sz = SizeOfType(val.type);
|
||||||
val.address += sz * nv.from;
|
val.address += sz * nv.from;
|
||||||
for(int i = 0; i < (nv.from ? 10000 : 40); i++) {
|
for(int i = 0; i < (nv.from ? nv.chunk : 40); i++) {
|
||||||
if(!TreeNodeExp(node, String() << "[" << i + nv.from << "]" , val, 0, SLtMagenta())) {
|
if(!TreeNodeExp(node, String() << "[" << i + nv.from << "]" , val, 0, SLtMagenta())) {
|
||||||
SaveTree();
|
SaveTree();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
val.address += sz;
|
val.address += sz;
|
||||||
}
|
}
|
||||||
TreeNode(node, "[more]", val0, nv.from ? nv.from + 10000 : 40);
|
TreeNode(node, "[more]", val0, nv.from ? nv.from + nv.chunk : 40);
|
||||||
SaveTree();
|
SaveTree();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -117,6 +117,8 @@ void Pdb::CatInt(Visual& result, int64 val, dword flags)
|
||||||
void Pdb::Visualise(Visual& result, Pdb::Val val, dword flags)
|
void Pdb::Visualise(Visual& result, Pdb::Val val, dword flags)
|
||||||
{
|
{
|
||||||
DR_LOG("Visualise");
|
DR_LOG("Visualise");
|
||||||
|
if(!result.type)
|
||||||
|
result.type = val.type;
|
||||||
const int maxlen = 300;
|
const int maxlen = 300;
|
||||||
if(result.length > maxlen)
|
if(result.length > maxlen)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -153,8 +153,8 @@ String SelectInsertFile()
|
||||||
return SelectFileOpen(
|
return SelectFileOpen(
|
||||||
"All files (*.*)\t*.*\n"
|
"All files (*.*)\t*.*\n"
|
||||||
"Graphics files (*.png *.bmp *.jpg *.jpeg *.gif *.ico *.svg)\t*.png *.bmp *.jpg *.jpeg *.gif *.ico *.svg\n"
|
"Graphics files (*.png *.bmp *.jpg *.jpeg *.gif *.ico *.svg)\t*.png *.bmp *.jpg *.jpeg *.gif *.ico *.svg\n"
|
||||||
"Source files (*.cpp *.h *.hpp *.c *.C *.cc *.cxx *.icpp *.diff *.patch *.lay *.py *.pyc *.pyd *.pyo *.iml *.java *.lng *.sch *.usc *.rc *.brc *.upt *.witz *.js)\t"
|
"Source files (*.cpp *.h *.hpp *.c *.C *.cc *.cxx *.icpp *.diff *.patch *.lay *.py *.pyc *.pyd *.pyo *.iml *.java *.lng *.sch *.usc *.dbg *.rc *.brc *.upt *.witz *.js)\t"
|
||||||
"*.cpp *.h *.hpp *.c *.C *.cc *.cxx *.icpp *.diff *.patch *.lay *.py *.pyc *.pyd *.pyo *.iml *.java *.lng *.sch *.usc *.rc *.brc *.upt *.witz *.js\n"
|
"*.cpp *.h *.hpp *.c *.C *.cc *.cxx *.icpp *.diff *.patch *.lay *.py *.pyc *.pyd *.pyo *.iml *.java *.lng *.sch *.usc *.dbg *.rc *.brc *.upt *.witz *.js\n"
|
||||||
"Web files (*.js *.css *.html *.htm *.htmls)\t*.js *.css *.html *.htm *.htmls\n"
|
"Web files (*.js *.css *.html *.htm *.htmls)\t*.js *.css *.html *.htm *.htmls\n"
|
||||||
"Data files (*.csv *.xml *.json)\t*.csv *.xml *.json\n"
|
"Data files (*.csv *.xml *.json)\t*.csv *.xml *.json\n"
|
||||||
"Text files (*.txt *.log *.info)\t*.txt *.log *.info\n"
|
"Text files (*.txt *.log *.info)\t*.txt *.log *.info\n"
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ NewPackageFileWindow::NewPackageFileWindow()
|
||||||
Type("iml", "Image file (icons)");
|
Type("iml", "Image file (icons)");
|
||||||
Type("icpp", "Initialization C++ source file");
|
Type("icpp", "Initialization C++ source file");
|
||||||
Type("usc", "Escape script file (scripting TheIDE)");
|
Type("usc", "Escape script file (scripting TheIDE)");
|
||||||
|
Type("dbg", "Debugger pretty printing script file");
|
||||||
Type("witz", "Skylark template file (web framework files)");
|
Type("witz", "Skylark template file (web framework files)");
|
||||||
Type("qtf", "U++ rich text file");
|
Type("qtf", "U++ rich text file");
|
||||||
Type("t", "Translation file");
|
Type("t", "Translation file");
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,6 @@ IMAGE_ID(console__DARK)
|
||||||
IMAGE_ID(browser)
|
IMAGE_ID(browser)
|
||||||
IMAGE_ID(errors__UHD)
|
IMAGE_ID(errors__UHD)
|
||||||
IMAGE_ID(errors)
|
IMAGE_ID(errors)
|
||||||
IMAGE_ID(debug)
|
|
||||||
IMAGE_ID(miniclose)
|
IMAGE_ID(miniclose)
|
||||||
IMAGE_ID(miniclose1)
|
IMAGE_ID(miniclose1)
|
||||||
IMAGE_ID(GUI)
|
IMAGE_ID(GUI)
|
||||||
|
|
@ -3899,123 +3898,103 @@ IMAGE_DATA(81,212,200,5,0,0,0,0,0,0,0,0,15,204,31,139,70,252,87,0,0,0,0,0,0,0,0,
|
||||||
IMAGE_END_DATA(864, 5)
|
IMAGE_END_DATA(864, 5)
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,90,11,124,76,87,26,191,9,214,99,73,226,81,143,54,36,36,13,34,82,33,37,73,181,136,118,187,75,19)
|
IMAGE_DATA(120,156,237,90,11,80,21,215,25,62,160,54,209,170,224,179,117,138,202,68,163,17,173,141,19,91,193,166,19,171,237,116)
|
||||||
IMAGE_DATA(149,205,8,54,132,40,245,106,9,37,165,69,164,82,180,9,219,54,4,75,144,138,199,160,20,89,213,118,189,242,107,66)
|
IMAGE_DATA(170,149,68,135,43,212,18,241,81,77,212,76,19,116,212,154,70,69,27,170,49,98,38,9,226,163,209,88,27,163,94,51)
|
||||||
IMAGE_DATA(169,118,9,9,65,73,74,74,101,37,49,121,200,99,190,189,223,185,185,147,155,201,60,238,204,220,153,9,115,254,243,251)
|
IMAGE_DATA(198,168,52,49,182,17,101,2,26,31,73,5,5,68,124,128,138,47,42,194,229,13,247,239,254,255,178,151,189,239,189,123)
|
||||||
IMAGE_DATA(255,230,220,115,207,119,191,115,254,223,249,206,61,51,247,58,57,49,78,140,84,136,143,143,7,83,105,44,132,246,39,79)
|
IMAGE_DATA(247,62,116,207,183,243,205,61,247,236,249,247,63,231,251,207,127,246,236,221,27,30,206,194,153,86,88,183,110,29,120,75)
|
||||||
IMAGE_DATA(158,36,20,150,133,212,103,47,149,127,125,253,16,246,197,18,227,215,214,55,169,253,203,100,50,144,203,229,58,251,34,172)
|
IMAGE_DATA(181,144,219,103,101,101,17,229,101,57,221,217,107,229,223,93,63,228,125,241,199,248,157,245,77,107,255,6,131,1,140,70)
|
||||||
IMAGE_DATA(83,183,71,219,224,224,96,73,253,171,247,65,189,44,213,248,77,161,100,137,104,44,112,49,128,101,245,170,100,44,65,64)
|
IMAGE_DATA(163,203,190,200,235,108,237,209,54,54,54,86,83,255,182,125,176,45,107,53,126,111,168,89,34,170,5,46,6,176,194,170)
|
||||||
IMAGE_DATA(153,154,9,232,160,12,3,145,149,149,69,4,194,111,60,86,187,6,123,166,33,249,107,240,182,60,240,184,246,156,40,123)
|
IMAGE_DATA(202,32,16,100,52,216,152,128,11,26,48,16,249,249,249,36,16,126,226,119,155,107,8,103,236,41,93,67,178,149,128,223)
|
||||||
IMAGE_DATA(77,48,196,222,68,255,166,142,95,155,254,50,65,89,151,254,218,0,49,49,49,218,226,169,15,178,161,67,135,146,164,193)
|
IMAGE_DATA(91,207,41,178,119,4,79,236,189,244,239,237,248,157,233,111,144,149,93,233,239,12,144,146,146,226,44,158,238,96,24,51)
|
||||||
IMAGE_DATA(111,35,236,97,219,182,109,196,30,191,245,244,83,171,111,158,6,246,65,229,155,167,1,125,104,224,219,192,62,16,205,53)
|
IMAGE_DATA(102,12,37,13,126,170,176,135,237,219,183,147,61,126,186,233,167,83,223,18,61,236,131,197,183,68,15,250,96,231,219,195)
|
||||||
IMAGE_DATA(217,11,98,161,211,94,4,37,197,8,87,198,85,234,107,218,36,22,4,59,38,120,118,98,252,172,225,187,115,187,102,206)
|
IMAGE_DATA(62,144,230,142,236,101,177,112,105,175,128,154,98,124,36,139,212,250,154,186,196,162,216,176,180,168,31,176,232,64,248,254)
|
||||||
IMAGE_DATA(183,118,245,133,245,111,218,103,88,195,255,186,57,221,228,249,7,3,225,220,50,23,24,218,195,206,208,197,194,36,248,60)
|
IMAGE_DATA(97,247,14,17,87,119,253,24,50,94,8,205,9,132,255,13,175,246,51,150,237,31,11,167,86,244,135,49,79,132,120,186)
|
||||||
IMAGE_DATA(223,202,15,199,94,148,149,4,119,142,77,133,189,225,246,121,150,244,255,213,114,183,12,28,123,77,101,49,84,62,188,12)
|
IMAGE_DATA(88,120,133,17,79,118,138,198,177,87,230,111,132,27,135,103,195,222,196,208,82,127,250,223,183,114,64,14,142,189,165,241)
|
||||||
IMAGE_DATA(89,235,254,6,179,252,237,18,44,225,123,196,32,71,25,142,189,172,224,7,149,255,71,183,254,3,167,166,55,129,103,254)
|
IMAGE_DATA(1,52,222,63,15,249,27,126,11,243,99,66,210,252,225,123,252,168,48,3,142,189,182,252,107,139,255,234,171,255,129,99)
|
||||||
IMAGE_DATA(204,56,155,219,127,102,98,175,188,187,199,194,64,89,253,136,99,101,1,97,222,55,113,16,243,154,189,220,156,190,167,140)
|
IMAGE_DATA(47,183,131,94,223,103,17,190,246,159,155,254,84,233,205,195,241,96,110,174,22,217,88,78,44,253,34,21,82,126,29,106)
|
||||||
IMAGE_DATA(232,16,69,198,126,247,52,241,93,83,145,15,53,229,57,196,127,205,227,66,200,124,191,43,152,43,31,249,124,43,252,105)
|
IMAGE_DATA(244,165,239,89,227,123,38,211,216,111,30,39,223,45,245,101,208,82,87,72,254,91,26,42,32,247,207,125,193,87,249,40)
|
||||||
IMAGE_DATA(37,176,206,136,191,199,247,183,65,197,221,85,164,172,172,124,0,247,206,38,155,45,31,63,12,239,146,128,254,171,30,229)
|
IMAGE_DATA(229,91,197,153,213,32,56,35,127,13,119,182,67,253,205,53,84,54,55,222,131,219,39,183,249,44,31,223,72,236,147,134)
|
||||||
IMAGE_DATA(17,255,213,101,55,160,60,127,17,84,20,124,2,149,69,39,136,127,100,230,194,214,74,153,183,93,148,148,190,249,124,123)
|
IMAGE_DATA(254,155,170,75,201,127,115,109,9,212,149,45,133,250,242,181,208,88,121,148,252,35,115,23,119,54,27,134,135,36,107,233)
|
||||||
IMAGE_DATA(112,46,150,140,21,89,246,235,91,245,88,85,242,19,87,255,251,37,146,143,82,206,69,85,190,213,250,126,92,120,16,114)
|
IMAGE_DATA(91,202,183,123,167,86,209,88,145,181,87,254,104,197,166,170,51,98,253,173,60,202,71,45,231,162,37,223,90,125,55,84)
|
||||||
IMAGE_DATA(15,142,82,94,72,12,4,228,47,91,95,87,150,231,199,168,206,231,238,158,37,89,62,242,249,86,156,157,12,202,154,114)
|
IMAGE_DATA(236,135,226,253,207,155,207,166,143,5,228,119,31,254,198,92,87,150,98,57,95,188,123,190,102,249,40,229,219,131,130,109)
|
||||||
IMAGE_DATA(162,123,217,173,40,216,21,234,161,140,193,155,63,203,143,93,29,148,138,220,8,54,54,23,64,89,85,8,229,247,47,193)
|
IMAGE_DATA(96,110,169,35,221,107,175,38,195,174,184,65,230,20,188,249,11,252,91,100,87,179,169,56,73,136,205,89,48,55,85,64)
|
||||||
IMAGE_DATA(15,81,14,146,228,35,230,219,109,185,47,128,242,49,33,206,57,197,245,137,13,253,95,13,39,253,66,255,200,203,235,95)
|
IMAGE_DATA(221,157,60,248,58,185,171,38,249,136,249,118,205,56,18,192,220,64,196,57,103,186,52,205,222,127,81,34,245,11,253,35)
|
||||||
IMAGE_DATA(50,121,46,242,249,86,156,155,202,174,53,119,161,74,113,150,245,61,9,20,215,38,128,60,194,83,229,63,193,171,131,178)
|
IMAGE_DATA(207,103,252,220,235,185,40,229,219,131,226,157,194,90,115,19,154,76,39,5,223,211,193,116,241,69,48,38,69,89,252,167)
|
||||||
IMAGE_DATA(36,59,12,74,114,198,145,216,240,113,48,37,31,49,223,112,236,119,210,70,177,122,158,33,254,203,110,205,37,190,145,223)
|
IMAGE_DATA(13,235,105,174,42,136,135,170,194,223,83,108,164,56,120,147,143,152,111,56,246,27,153,207,11,122,158,32,255,181,87,95)
|
||||||
IMAGE_DATA(46,243,7,222,255,174,209,238,156,127,150,165,55,38,145,24,161,255,135,57,199,140,190,55,240,249,86,254,251,73,86,207)
|
IMAGE_DATA(35,223,200,47,87,196,128,228,127,215,164,129,162,127,129,53,37,211,41,70,232,255,126,225,97,213,247,6,41,223,234,110)
|
||||||
IMAGE_DATA(251,100,92,138,220,137,172,239,112,194,159,217,57,199,251,255,106,230,11,172,255,49,128,44,205,13,103,251,48,89,165,193)
|
IMAGE_DATA(101,9,122,222,161,113,153,138,167,9,190,19,137,223,10,115,78,242,191,111,222,79,4,255,83,0,89,83,156,40,244,97)
|
||||||
IMAGE_DATA(229,13,163,193,208,124,228,215,154,130,111,195,136,239,154,242,92,40,173,213,157,247,159,253,77,136,202,127,250,234,151,161)
|
IMAGE_DATA(134,69,131,243,155,38,129,167,249,40,173,53,229,95,198,147,239,150,186,98,168,105,213,93,242,95,240,197,100,139,255,236)
|
||||||
IMAGE_DATA(158,127,118,126,224,154,96,108,62,98,190,161,255,202,98,78,199,242,223,150,67,217,245,112,66,222,127,209,213,201,16,211)
|
IMAGE_DATA(183,126,1,86,254,133,249,129,107,130,218,124,196,124,67,255,141,15,68,29,235,174,175,132,218,75,137,68,201,127,101,209)
|
||||||
IMAGE_DATA(196,142,244,225,236,166,64,101,201,21,25,32,75,175,134,18,98,172,48,14,85,138,124,184,182,115,154,232,124,228,215,154)
|
IMAGE_DATA(12,72,105,23,66,125,56,185,101,172,185,234,130,1,144,53,69,113,68,140,21,198,161,201,84,6,23,63,158,163,56,31)
|
||||||
IMAGE_DATA(194,243,113,236,216,31,145,113,96,110,169,251,191,245,125,40,201,253,204,149,1,240,211,134,97,160,238,31,181,194,92,65)
|
IMAGE_DATA(165,181,166,226,116,170,48,246,106,26,7,230,150,173,255,171,255,142,163,220,207,93,61,26,206,108,250,37,216,250,71,173)
|
||||||
IMAGE_DATA(255,200,211,179,154,41,197,204,69,156,115,220,90,83,64,88,122,115,26,185,86,89,238,120,66,197,181,127,16,30,137,126)
|
IMAGE_DATA(48,87,208,63,242,248,252,14,102,37,115,17,231,156,184,214,148,19,107,46,207,161,107,213,22,79,37,154,46,254,129,120)
|
||||||
IMAGE_DATA(81,53,255,214,251,119,97,125,135,18,150,230,132,16,42,174,188,201,182,27,203,246,255,56,171,67,14,220,59,179,85,111)
|
IMAGE_DATA(104,201,79,45,243,47,35,166,143,224,59,142,88,83,56,153,104,186,240,130,208,46,65,232,255,87,130,14,133,112,251,196)
|
||||||
IMAGE_DATA(62,242,249,134,251,26,244,253,248,126,178,106,190,27,229,255,74,8,27,135,57,196,63,198,241,194,170,65,90,247,106,124)
|
IMAGE_DATA(135,110,243,81,202,55,220,215,160,239,134,59,219,44,243,93,149,255,11,147,133,56,188,74,254,49,142,103,215,140,114,186)
|
||||||
IMAGE_DATA(190,229,31,28,206,222,91,21,100,45,195,92,47,101,199,32,228,163,156,48,194,67,243,188,85,254,215,13,234,8,138,171)
|
IMAGE_DATA(87,147,242,173,108,255,56,225,222,106,162,181,12,115,189,70,24,131,156,213,133,241,196,3,11,134,91,252,111,24,213,27)
|
||||||
IMAGE_DATA(97,132,165,57,163,9,21,217,193,132,101,185,145,36,119,112,30,23,93,251,183,214,124,84,229,219,189,76,226,191,236,246)
|
IMAGE_DATA(76,69,241,196,154,194,73,68,83,65,44,177,182,120,38,229,14,206,227,202,139,255,114,154,143,150,124,187,157,75,254,107)
|
||||||
IMAGE_DATA(124,146,71,152,207,245,120,61,130,144,172,67,2,150,222,136,224,120,125,66,45,195,9,203,110,76,129,178,155,83,160,90)
|
IMAGE_DATA(175,45,164,60,194,124,182,226,165,36,34,173,67,50,214,148,36,137,188,244,98,43,19,137,181,37,179,160,246,242,44,104)
|
||||||
IMAGE_DATA(113,158,244,225,204,7,46,13,242,145,207,183,223,142,4,17,223,132,85,15,107,249,191,250,172,126,88,159,13,218,21,170)
|
IMAGE_DATA(54,157,166,62,156,248,75,127,187,124,148,242,237,250,161,137,228,155,216,116,191,149,255,179,102,243,125,107,218,181,171,176)
|
||||||
IMAGE_DATA(241,1,199,234,18,66,204,71,92,23,133,249,136,123,105,18,247,203,91,204,238,31,231,129,112,175,198,231,27,207,95,119)
|
IMAGE_DATA(225,61,145,205,85,68,204,71,92,23,229,249,136,123,105,138,251,249,173,62,247,143,243,64,190,87,147,242,77,226,149,143)
|
||||||
IMAGE_DATA(244,33,188,177,189,55,225,245,228,158,132,215,254,245,60,225,213,13,110,132,87,190,112,37,188,20,255,28,225,207,113,29)
|
IMAGE_DATA(134,18,75,254,49,132,120,105,219,96,226,197,191,63,73,44,218,52,128,120,225,253,72,98,222,186,31,17,191,77,237,77)
|
||||||
IMAGE_DATA(9,207,47,109,75,120,54,186,13,97,70,84,75,194,244,217,127,34,196,125,42,79,204,71,126,173,177,134,127,107,253,118)
|
IMAGE_DATA(60,189,188,27,241,228,146,46,196,156,228,142,196,236,87,190,71,196,125,170,68,204,71,105,173,9,132,255,64,61,59,5)
|
||||||
IMAGE_DATA(106,76,176,151,242,49,129,86,39,246,76,147,244,205,62,89,135,215,120,165,99,217,80,251,213,239,186,173,43,206,138,131)
|
IMAGE_DATA(19,66,181,124,77,224,212,73,40,107,151,253,193,136,252,131,235,135,101,99,217,83,251,183,254,52,96,195,131,252,84,168)
|
||||||
IMAGE_DATA(162,255,198,194,196,17,29,103,24,98,235,212,166,105,187,27,7,7,149,240,63,150,46,167,250,20,58,181,110,210,78,172)
|
IMAGE_DATA(252,239,42,152,54,190,247,92,79,108,195,187,180,239,94,178,127,84,149,244,176,116,126,231,136,138,240,206,237,186,43,181)
|
||||||
IMAGE_DATA(253,142,216,222,71,74,114,18,85,63,118,138,46,173,133,184,169,206,235,197,216,246,233,209,170,223,221,180,65,53,184,97)
|
IMAGE_DATA(255,104,213,144,67,85,133,233,150,135,157,202,188,119,32,117,118,68,134,18,219,161,79,116,122,250,102,230,168,22,220,176)
|
||||||
IMAGE_DATA(127,124,47,17,42,255,72,38,155,244,155,187,188,171,61,93,90,244,211,103,127,106,131,119,150,226,215,61,36,105,115,54)
|
IMAGE_DATA(55,220,78,135,198,187,219,104,147,126,121,215,240,230,168,254,143,63,237,206,254,216,166,225,249,166,43,123,40,105,11,63)
|
||||||
IMAGE_DATA(119,35,172,46,205,98,55,163,41,176,231,67,215,116,93,182,163,135,180,31,95,120,38,138,108,26,113,195,200,219,227,70)
|
IMAGE_DATA(232,71,108,174,201,23,54,163,59,96,207,27,145,217,174,108,39,61,215,99,106,197,137,100,218,52,226,134,81,178,199,141)
|
||||||
IMAGE_DATA(17,23,134,59,223,77,135,55,6,182,25,175,201,182,85,11,251,214,89,59,125,30,240,27,47,188,1,241,246,184,201,170)
|
IMAGE_DATA(34,46,12,55,142,188,12,191,251,89,151,169,142,108,59,61,30,218,57,255,227,17,247,164,141,23,222,128,36,123,220,100)
|
||||||
IMAGE_DATA(126,148,9,138,252,147,112,122,149,235,111,173,154,219,181,86,183,223,24,237,46,47,186,24,79,22,220,138,187,137,228,134)
|
IMAGE_DATA(53,87,231,130,169,44,11,142,175,137,188,222,233,177,144,206,182,246,155,151,12,52,86,158,91,71,11,110,253,205,116,186)
|
||||||
IMAGE_DATA(93,103,207,109,82,106,42,110,66,193,201,37,48,119,164,227,74,161,173,107,151,230,238,183,191,26,80,133,55,255,170,146)
|
IMAGE_DATA(97,183,217,139,155,148,150,250,203,80,158,181,12,94,155,16,182,90,110,27,217,231,177,129,215,246,61,211,132,55,255,166)
|
||||||
IMAGE_DATA(116,213,77,31,127,100,252,113,46,76,117,147,175,40,72,36,55,246,115,31,117,124,236,220,206,222,157,183,79,251,180,247)
|
IMAGE_DATA(170,108,203,77,31,31,50,238,158,138,183,220,228,235,203,211,233,198,126,234,175,189,27,34,186,135,14,148,236,51,223,30)
|
||||||
IMAGE_DATA(143,197,217,91,200,13,180,226,206,167,170,155,166,202,127,237,77,18,111,144,120,99,188,115,98,21,172,145,181,60,130,182)
|
IMAGE_DATA(242,205,131,130,173,116,3,173,191,241,182,229,166,105,241,223,122,147,196,27,36,222,24,111,28,93,3,235,13,29,15,161)
|
||||||
IMAGE_DATA(195,7,56,142,252,253,68,36,89,128,43,31,166,213,187,233,149,100,143,101,109,199,170,110,114,228,230,118,45,146,140,241)
|
IMAGE_DATA(237,184,103,194,38,220,58,58,147,22,224,198,251,153,86,55,189,170,130,4,193,54,193,114,147,163,155,219,197,153,52,198)
|
||||||
IMAGE_DATA(226,23,175,130,191,139,221,200,31,55,245,201,47,205,63,46,88,192,213,22,109,85,157,96,113,102,23,229,63,46,236,133)
|
IMAGE_DATA(115,239,255,10,98,250,135,76,248,102,203,208,178,154,178,175,100,11,184,205,162,109,169,147,45,206,194,162,124,247,236,94)
|
||||||
IMAGE_DATA(47,199,218,231,172,157,221,53,133,95,4,249,197,143,95,244,248,197,142,95,228,248,197,141,95,212,22,13,97,82,244,205)
|
IMAGE_DATA(248,103,66,104,225,59,175,244,221,33,45,130,210,226,39,45,122,210,98,39,45,114,210,226,38,45,106,75,159,99,59,220)
|
||||||
IMAGE_DATA(39,125,16,189,24,12,57,26,0,142,125,29,134,97,185,253,160,182,33,1,59,125,203,117,181,111,209,165,133,155,240,248)
|
IMAGE_DATA(205,39,183,232,40,28,32,251,193,113,227,198,141,128,148,183,145,215,201,207,57,171,115,100,239,232,187,109,189,187,246,74)
|
||||||
IMAGE_DATA(149,67,126,224,185,216,227,144,67,187,86,61,58,5,118,152,58,104,139,79,137,46,251,161,172,63,231,144,46,239,241,199)
|
IMAGE_DATA(191,187,243,227,106,124,174,198,229,106,124,150,58,91,65,153,227,223,116,229,117,150,223,143,93,212,89,253,206,236,232,187)
|
||||||
IMAGE_DATA(1,187,95,172,24,152,220,191,48,48,164,111,106,208,114,191,114,255,205,253,149,47,12,118,89,173,205,62,96,183,111,209)
|
IMAGE_DATA(173,157,147,243,204,81,59,119,231,221,249,113,114,61,37,227,114,175,79,103,225,144,189,200,82,242,227,185,13,83,20,82)
|
||||||
IMAGE_DATA(75,251,6,86,96,217,63,197,183,152,181,7,255,84,95,240,223,238,11,75,79,207,131,211,249,7,224,253,248,8,112,243)
|
IMAGE_DATA(93,123,165,144,183,119,247,6,217,182,125,176,93,31,129,47,59,36,58,250,238,109,123,165,253,241,136,222,79,38,207,136)
|
||||||
IMAGE_DATA(238,184,64,147,189,163,87,155,97,131,247,14,132,128,173,190,69,35,247,189,6,251,179,146,225,155,236,29,176,38,61,14)
|
IMAGE_DATA(175,174,101,111,11,221,82,122,203,232,15,27,4,246,79,203,235,123,218,23,71,250,120,26,108,205,38,135,151,147,73,45)
|
||||||
IMAGE_DATA(250,174,237,5,17,71,71,129,252,76,18,248,36,120,65,191,213,125,192,59,206,19,2,118,249,22,183,232,212,92,53,110)
|
IMAGE_DATA(128,127,15,216,119,121,64,149,124,87,227,79,25,20,63,149,117,232,96,96,33,33,234,95,121,244,234,149,198,134,13,83)
|
||||||
IMAGE_DATA(255,212,1,202,33,169,254,176,251,194,63,97,197,177,72,248,224,208,88,88,120,104,18,188,146,228,7,125,87,247,134,200)
|
IMAGE_DATA(246,218,38,44,44,217,206,215,196,137,165,44,54,214,246,39,157,8,234,151,45,208,118,213,42,96,35,71,230,80,185,125)
|
||||||
IMAGE_DATA(29,97,16,240,170,107,174,170,207,123,94,172,124,73,62,16,220,103,118,79,241,75,26,112,127,204,254,55,33,245,124,2)
|
IMAGE_DATA(123,3,91,180,8,216,194,133,64,101,180,235,219,215,72,109,156,141,41,38,38,135,101,100,0,75,76,4,54,99,6,48)
|
||||||
IMAGE_DATA(196,164,77,132,249,251,71,193,132,47,3,97,156,124,52,236,57,183,9,214,157,88,3,222,31,245,134,94,47,119,57,32)
|
IMAGE_DATA(124,199,142,156,51,71,172,195,115,163,71,59,127,172,199,235,38,37,1,59,120,80,180,193,63,231,32,177,140,117,211,166)
|
||||||
IMAGE_DATA(236,183,87,76,175,76,191,237,3,192,47,121,0,236,251,57,17,150,30,9,135,121,251,130,97,194,246,97,16,182,51,24)
|
IMAGE_DATA(57,247,141,192,126,38,36,0,155,59,23,216,241,227,192,118,239,22,137,101,172,155,58,21,88,215,174,214,63,247,226,245)
|
||||||
IMAGE_DATA(54,156,138,131,249,187,195,96,227,241,143,161,239,82,79,232,53,223,93,209,182,191,227,59,194,107,12,76,242,169,24,183)
|
IMAGE_DATA(122,244,72,99,175,191,14,108,201,18,96,169,169,192,222,123,79,180,43,40,16,137,101,172,195,115,139,23,3,181,141,138)
|
||||||
IMAGE_DATA(39,4,226,191,127,7,230,202,131,32,124,107,32,132,166,188,1,235,79,124,4,239,124,57,26,166,108,121,157,181,95,13)
|
IMAGE_DATA(50,146,45,106,57,120,176,145,77,153,82,202,150,46,5,246,230,155,192,222,125,23,216,158,61,109,246,88,198,58,60,135)
|
||||||
IMAGE_DATA(158,209,30,208,115,158,155,178,231,92,55,240,152,221,67,245,183,181,239,218,126,165,211,247,71,194,103,199,163,97,194,182)
|
IMAGE_DATA(109,176,45,218,216,198,1,251,143,186,225,120,143,28,1,182,115,167,72,44,99,221,232,209,24,75,231,227,199,254,196,197)
|
||||||
IMAGE_DATA(87,225,239,91,71,66,252,145,247,97,102,74,48,68,110,126,29,226,190,142,130,57,219,102,66,207,40,119,176,111,110,79)
|
IMAGE_DATA(1,251,252,115,113,188,105,105,34,177,140,117,120,206,149,126,24,191,45,91,128,52,156,53,11,216,202,149,34,177,140,117)
|
||||||
IMAGE_DATA(22,102,39,31,199,15,121,251,110,65,206,43,251,199,247,133,216,180,104,8,77,14,130,248,195,139,96,230,246,32,152,180)
|
IMAGE_DATA(120,174,95,63,199,243,17,175,139,177,198,107,72,243,103,193,2,32,98,25,235,240,28,182,113,220,135,136,86,182,97,217)
|
||||||
IMAGE_DATA(233,47,176,226,96,20,248,47,25,8,30,239,186,129,67,239,54,111,105,139,191,199,52,183,83,110,239,185,194,150,147,137)
|
IMAGE_DATA(50,32,218,250,81,154,83,61,123,166,17,213,66,244,227,242,167,249,239,20,47,6,161,161,24,108,245,139,65,183,110,202)
|
||||||
IMAGE_DATA(16,123,96,54,188,205,94,103,197,193,185,176,120,231,2,120,126,86,15,112,159,222,29,122,68,186,84,56,122,57,188,167)
|
IMAGE_DATA(23,131,142,29,147,237,124,205,158,93,202,94,122,201,126,49,16,251,101,139,104,150,157,13,236,217,103,115,168,28,18,98)
|
||||||
IMAGE_DATA(237,26,61,38,184,156,242,94,228,9,115,182,79,135,249,41,179,192,59,202,147,216,57,244,108,253,86,139,206,205,135,185)
|
IMAGE_DATA(96,159,126,10,236,147,79,128,202,104,23,17,97,164,54,206,198,52,118,108,14,187,118,13,216,218,181,226,228,199,7,9)
|
||||||
IMAGE_DATA(140,115,46,114,13,239,10,77,91,55,113,211,118,141,231,254,218,121,187,199,172,238,213,238,51,186,131,219,52,87,120,246)
|
IMAGE_DATA(228,230,205,98,29,158,27,55,206,213,111,124,209,108,253,122,241,175,89,104,115,238,156,72,44,99,29,78,108,215,201,96)
|
||||||
IMAGE_DATA(141,78,63,104,107,171,15,207,142,236,156,217,125,98,55,157,254,244,161,91,216,115,149,206,33,207,22,107,60,217,146,253)
|
IMAGE_DATA(160,132,219,186,85,108,223,220,44,18,203,88,183,122,53,180,234,100,237,51,44,44,141,146,229,192,1,96,185,185,192,138)
|
||||||
IMAGE_DATA(128,224,233,67,82,82,18,32,133,109,132,117,194,115,218,234,52,217,107,58,86,175,215,215,94,236,177,62,63,186,198,167)
|
IMAGE_DATA(139,219,236,164,235,96,29,158,251,236,51,49,177,112,49,64,91,212,114,208,32,163,48,233,75,89,102,38,176,156,28,96)
|
||||||
IMAGE_DATA(107,92,186,198,167,170,83,23,148,209,252,128,71,88,167,122,152,164,163,174,222,67,39,77,199,234,118,90,206,51,154,218)
|
IMAGE_DATA(69,69,192,90,90,218,236,177,140,117,120,14,219,96,91,180,177,141,3,246,31,117,147,198,91,87,39,82,210,3,23,119)
|
||||||
IMAGE_DATA(233,59,175,207,143,150,235,137,25,151,126,125,90,179,31,193,83,109,49,79,210,212,24,35,146,198,181,23,11,97,123,125)
|
IMAGE_DATA(215,243,41,154,45,95,222,54,222,188,60,145,146,30,120,206,149,61,198,175,188,92,92,180,210,211,129,29,59,38,18,203)
|
||||||
IMAGE_DATA(175,147,168,183,111,108,215,71,224,147,79,158,154,142,77,109,47,182,63,6,209,244,201,100,24,241,61,22,193,171,3,122)
|
IMAGE_DATA(88,135,231,156,45,6,120,93,140,53,94,67,154,63,123,247,2,81,156,63,209,116,78,124,184,84,182,24,224,34,136,180)
|
||||||
IMAGE_DATA(201,191,114,96,9,27,4,246,79,202,235,27,218,23,77,250,24,26,108,201,38,135,137,147,201,88,0,61,182,218,177,48)
|
IMAGE_DATA(245,163,52,167,194,195,211,136,234,225,118,49,112,244,79,78,95,194,221,191,68,221,65,110,99,251,239,70,111,251,163,166)
|
||||||
IMAGE_DATA(160,98,142,141,241,39,14,162,255,162,105,214,76,198,216,217,25,255,252,243,153,103,18,24,47,47,113,207,112,29,29,163)
|
IMAGE_DATA(127,246,91,186,124,6,116,224,167,193,229,30,223,241,245,148,28,254,178,55,186,29,131,253,248,229,182,207,9,156,39,112)
|
||||||
IMAGE_DATA(26,248,10,10,202,99,130,131,213,255,223,117,38,253,82,7,218,198,198,2,227,235,155,65,202,77,155,202,152,5,11,128)
|
IMAGE_DATA(133,11,26,28,216,59,179,77,145,81,178,141,178,138,83,155,173,161,181,141,212,63,247,182,109,241,52,56,240,41,239,199)
|
||||||
IMAGE_DATA(153,63,31,72,25,237,186,118,149,147,54,218,198,228,239,159,193,172,95,15,76,120,56,48,147,39,3,131,47,220,32,167)
|
IMAGE_DATA(60,135,182,109,246,202,232,215,63,185,41,193,83,211,25,30,28,28,28,28,28,28,186,132,187,77,26,135,182,240,100,211)
|
||||||
IMAGE_DATA(77,227,234,240,92,64,128,246,255,248,240,186,17,17,192,28,62,204,217,224,155,122,72,44,99,221,196,137,218,125,35,176)
|
IMAGE_DATA(196,161,13,188,127,65,193,161,22,158,232,202,227,160,45,188,213,143,199,64,61,180,212,203,219,56,232,45,118,190,26,175)
|
||||||
IMAGE_DATA(159,99,199,2,51,99,6,48,167,79,3,179,123,55,71,44,99,221,248,241,192,56,56,212,127,246,131,215,107,223,62,129)
|
IMAGE_DATA(218,24,232,73,127,95,143,85,77,46,232,69,127,127,142,83,105,12,244,114,239,8,196,24,213,236,167,30,69,4,122,124)
|
||||||
IMAGE_DATA(89,188,24,152,232,104,96,226,226,128,249,252,115,206,46,59,155,35,150,177,14,207,45,92,8,164,173,167,167,156,216,162)
|
IMAGE_DATA(142,252,235,101,239,20,12,99,211,251,115,92,48,140,75,207,250,7,3,184,254,129,131,222,215,159,64,194,19,237,185,254)
|
||||||
IMAGE_DATA(150,61,123,202,153,49,99,242,152,69,139,128,89,177,2,152,207,62,3,102,207,158,58,123,44,99,29,158,195,54,216,22)
|
IMAGE_DATA(218,194,83,237,185,254,218,65,141,246,92,127,109,160,86,123,174,191,247,240,70,123,53,250,123,235,239,81,137,191,191,199)
|
||||||
IMAGE_DATA(109,212,227,128,253,71,221,112,188,223,125,7,76,106,42,71,44,99,93,64,0,198,82,251,248,177,63,161,161,192,28,61)
|
IMAGE_DATA(175,181,238,15,123,44,252,57,102,127,104,255,176,197,192,95,227,181,110,175,245,241,112,199,192,215,240,173,246,206,227,192)
|
||||||
IMAGE_DATA(202,141,55,33,129,35,150,177,14,207,233,210,15,227,183,105,19,16,13,167,76,1,102,249,114,142,88,198,58,60,215,173)
|
IMAGE_DATA(33,194,63,218,59,206,3,189,195,127,218,59,143,65,48,48,80,224,250,235,77,255,224,140,65,160,16,24,253,131,225,224)
|
||||||
IMAGE_DATA(155,230,249,136,215,197,88,227,53,248,249,51,111,30,16,98,25,235,240,28,182,209,220,7,231,90,214,97,201,18,32,84)
|
IMAGE_DATA(250,115,253,185,254,92,127,174,63,215,159,235,207,245,215,219,193,245,231,250,115,253,185,254,92,127,174,63,215,159,235,175)
|
||||||
IMAGE_DATA(247,35,54,167,58,116,72,32,52,22,156,31,157,207,233,126,17,189,24,216,219,99,176,141,95,12,218,182,21,191,24,180)
|
IMAGE_DATA(183,131,235,207,245,231,250,115,253,93,235,242,176,51,248,245,15,188,70,129,140,65,224,244,15,188,46,250,213,95,238,55)
|
||||||
IMAGE_DATA(108,25,213,192,215,212,169,121,204,219,111,55,92,12,184,126,169,195,143,73,79,7,102,240,224,12,82,182,179,147,49,7)
|
IMAGE_DATA(229,17,164,242,24,248,95,255,71,93,251,96,214,95,15,218,59,142,65,224,245,215,147,246,193,166,191,222,180,15,38,253)
|
||||||
IMAGE_DATA(14,0,179,111,31,144,50,218,57,59,203,73,27,109,99,10,12,204,96,110,223,6,230,147,79,184,201,143,63,36,144,27)
|
IMAGE_DATA(245,168,125,176,232,207,181,15,220,254,147,107,239,78,123,223,233,207,181,87,162,189,111,244,231,218,43,213,94,123,253,185)
|
||||||
IMAGE_DATA(55,114,117,120,110,248,112,93,127,248,251,49,107,214,112,239,105,162,205,197,139,28,177,140,117,56,177,117,39,131,140,36)
|
IMAGE_DATA(246,158,104,175,173,254,92,123,79,181,215,78,127,174,189,26,237,181,209,159,107,175,86,123,239,245,231,218,123,163,189,119)
|
||||||
IMAGE_DATA(220,150,45,92,251,234,106,142,88,198,186,149,43,161,86,167,250,62,29,29,19,72,178,28,58,4,76,102,38,48,185,185)
|
IMAGE_DATA(250,115,237,189,213,94,189,254,92,123,45,180,87,167,191,30,181,103,118,212,10,158,233,207,181,215,82,123,207,244,231,218)
|
||||||
IMAGE_DATA(117,118,252,117,176,14,207,125,253,53,151,88,184,24,160,45,106,233,225,33,103,39,125,30,147,150,6,76,70,6,48,87)
|
IMAGE_DATA(251,2,202,244,231,218,251,10,238,245,231,218,251,18,174,245,231,218,251,26,206,245,231,218,251,3,142,245,231,218,251,11)
|
||||||
IMAGE_DATA(175,2,83,83,83,103,143,101,172,195,115,216,6,219,162,141,122,28,176,255,168,27,63,222,242,114,142,188,30,184,184,235)
|
IMAGE_DATA(246,250,115,237,253,9,107,253,185,246,254,134,163,231,139,192,107,162,15,237,29,235,31,104,77,244,163,189,189,254,129,214)
|
||||||
IMAGE_DATA(158,79,126,204,210,165,117,227,189,116,137,35,175,7,158,211,101,143,241,43,40,224,22,173,196,68,96,78,157,226,136,101)
|
IMAGE_DATA(68,95,218,51,155,126,232,145,129,70,160,199,175,103,237,17,129,214,64,175,186,115,112,112,112,112,112,112,112,112,112,112)
|
||||||
IMAGE_DATA(172,195,115,218,22,3,188,46,198,26,175,193,207,159,189,123,129,144,155,63,126,228,28,247,227,82,220,98,128,139,32,82)
|
IMAGE_DATA(112,112,112,112,112,112,232,0,255,7,184,11,129,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
|
||||||
IMAGE_DATA(221,143,216,156,114,114,74,32,52,30,122,23,3,77,175,117,155,19,250,94,25,215,7,161,141,250,171,206,166,246,199,152)
|
IMAGE_END_DATA(3072, 13)
|
||||||
IMAGE_DATA(254,53,220,210,101,49,64,62,248,45,211,185,199,215,124,61,49,31,75,217,203,245,142,161,225,248,133,182,67,88,206,100)
|
|
||||||
IMAGE_DATA(185,76,7,101,26,236,181,217,198,8,200,219,122,214,139,83,157,173,172,182,13,223,63,253,182,117,241,148,105,240,41,236)
|
|
||||||
IMAGE_DATA(199,76,141,182,117,246,226,104,209,55,94,197,160,215,36,6,63,20,20,20,20,20,20,54,9,125,155,52,10,105,97,200)
|
|
||||||
IMAGE_DATA(166,137,66,26,152,254,128,130,194,88,24,162,43,141,131,180,48,85,63,26,3,227,33,165,94,166,198,193,214,98,103,174)
|
|
||||||
IMAGE_DATA(241,26,27,3,91,210,223,220,99,53,38,23,108,69,127,75,142,83,108,12,108,229,222,97,141,49,26,179,159,122,26,97)
|
|
||||||
IMAGE_DATA(237,241,105,242,111,43,123,167,198,48,54,91,255,29,215,24,198,101,203,250,55,6,80,253,173,7,91,95,127,172,9,67)
|
|
||||||
IMAGE_DATA(180,167,250,75,11,67,181,167,250,75,7,99,180,167,250,75,3,99,181,167,250,155,14,83,180,55,70,127,83,253,61,45)
|
|
||||||
IMAGE_DATA(241,183,244,248,165,214,253,73,143,133,37,199,108,9,237,159,180,24,88,106,188,245,219,75,253,121,178,99,96,110,152,87)
|
|
||||||
IMAGE_DATA(123,237,113,160,224,96,25,237,53,231,129,173,195,114,218,107,143,65,99,160,181,64,245,183,53,253,27,103,12,172,5,235)
|
|
||||||
IMAGE_DATA(232,223,24,62,84,127,170,63,213,159,234,79,245,167,250,83,253,169,254,182,246,161,250,83,253,169,254,84,127,170,63,213)
|
|
||||||
IMAGE_DATA(159,234,79,245,183,181,15,213,159,234,79,245,167,250,235,214,229,73,103,227,215,223,250,26,89,51,6,214,211,223,250,186)
|
|
||||||
IMAGE_DATA(216,174,254,66,191,49,79,33,197,199,192,242,250,63,237,218,55,102,253,109,65,123,205,49,176,190,254,182,164,125,99,211)
|
|
||||||
IMAGE_DATA(223,214,180,111,76,250,219,162,246,141,69,127,170,189,245,246,159,84,123,125,218,155,79,127,170,189,24,237,205,163,63,213)
|
|
||||||
IMAGE_DATA(94,172,246,210,235,79,181,55,68,123,105,245,167,218,27,170,189,116,250,83,237,141,209,94,26,253,169,246,198,106,111,186)
|
|
||||||
IMAGE_DATA(254,84,123,83,180,55,77,127,170,189,169,218,27,175,63,213,94,10,237,141,211,223,22,181,103,26,80,42,24,166,63,213)
|
|
||||||
IMAGE_DATA(94,74,237,13,211,159,106,111,14,136,211,159,106,111,46,232,215,159,106,111,78,232,214,159,106,111,110,104,215,159,106,111)
|
|
||||||
IMAGE_DATA(9,104,214,159,106,111,41,52,212,159,106,111,73,212,215,159,106,111,105,104,250,125,97,125,77,108,67,123,205,250,91,91)
|
|
||||||
IMAGE_DATA(19,219,209,190,161,254,214,214,196,182,180,103,212,250,97,139,180,54,172,61,126,91,214,30,97,109,13,108,85,119,10,10)
|
|
||||||
IMAGE_DATA(10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,27,192,255,1,87,220,168,34,0,0,0,0,0,0,0,0,0)
|
|
||||||
IMAGE_END_DATA(3712, 14)
|
|
||||||
|
|
||||||
IMAGE_BEGIN_DATA
|
IMAGE_BEGIN_DATA
|
||||||
IMAGE_DATA(120,156,237,90,79,104,84,71,28,254,220,144,118,99,106,217,53,116,161,69,237,122,81,186,149,20,154,28,162,82,119,173)
|
IMAGE_DATA(120,156,237,90,79,104,84,71,28,254,220,144,118,99,106,217,53,116,161,69,237,122,81,186,149,20,154,28,162,82,119,173)
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ void Ide::SetupEditor(int f, String hl, String path)
|
||||||
editor.Highlight(hl);
|
editor.Highlight(hl);
|
||||||
|
|
||||||
editor.WarnWhiteSpace(warnwhitespace &&
|
editor.WarnWhiteSpace(warnwhitespace &&
|
||||||
findarg(hl, "cpp", "java", "js", "cs", "json", "css", "lay", "sch", "t", "usc") >= 0);
|
findarg(hl, "cpp", "java", "js", "cs", "json", "css", "lay", "sch", "t", "usc", "dbg") >= 0);
|
||||||
|
|
||||||
editor.WordwrapComments(wordwrap_comments);
|
editor.WordwrapComments(wordwrap_comments);
|
||||||
editor.WordWrap(wordwrap);
|
editor.WordWrap(wordwrap);
|
||||||
|
|
|
||||||
39
upptst/ScriptDbgPretty/ScriptDbgPretty.cpp
Normal file
39
upptst/ScriptDbgPretty/ScriptDbgPretty.cpp
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
#include <Core/Core.h>
|
||||||
|
|
||||||
|
using namespace Upp;
|
||||||
|
|
||||||
|
struct MyStruct {
|
||||||
|
int first[10];
|
||||||
|
int second = 123456;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct MyVector : Vector<T> {};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct MyArray : Array<T> {};
|
||||||
|
|
||||||
|
template <class K, class V>
|
||||||
|
struct MyVectorMap : VectorMap<K, V> {};
|
||||||
|
|
||||||
|
struct MyWString : WString {};
|
||||||
|
|
||||||
|
CONSOLE_APP_MAIN
|
||||||
|
{
|
||||||
|
MyWString ws;
|
||||||
|
ws.Cat("Hello world!");
|
||||||
|
DLOG("BREAKPOINT HERE");
|
||||||
|
|
||||||
|
MyVector<String> hv;
|
||||||
|
MyArray<String> ha;
|
||||||
|
MyVectorMap<int, String> vm;
|
||||||
|
MyStruct ms;
|
||||||
|
|
||||||
|
for(int i = 0; i < 10000; i++) {
|
||||||
|
hv << FormatIntRoman(i, true);
|
||||||
|
ha << FormatIntRoman(i, false);
|
||||||
|
vm.Add(i, FormatIntRoman(i, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
DLOG("BREAKPOINT HERE");
|
||||||
|
}
|
||||||
10
upptst/ScriptDbgPretty/ScriptDbgPretty.upp
Normal file
10
upptst/ScriptDbgPretty/ScriptDbgPretty.upp
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
uses
|
||||||
|
Core;
|
||||||
|
|
||||||
|
file
|
||||||
|
pretty.dbg,
|
||||||
|
ScriptDbgPretty.cpp;
|
||||||
|
|
||||||
|
mainconfig
|
||||||
|
"" = "";
|
||||||
|
|
||||||
59
upptst/ScriptDbgPretty/pretty.dbg
Normal file
59
upptst/ScriptDbgPretty/pretty.dbg
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
typename MyStruct {
|
||||||
|
TEXT("My struct: ");
|
||||||
|
TEXT(Peek32(Field(value, "second").address));
|
||||||
|
}
|
||||||
|
|
||||||
|
typename MyWString {
|
||||||
|
STRING();
|
||||||
|
|
||||||
|
ITEM_COUNT(Peek32(Field(value, "length")));
|
||||||
|
ITEM_TYPE("int");
|
||||||
|
ITEM_PTRS(DeRef(Field(value, "ptr")).address, 4, from, items);
|
||||||
|
}
|
||||||
|
|
||||||
|
typename MyVector {
|
||||||
|
ITEM_COUNT(Peek32(Field(value, "items")));
|
||||||
|
ITEM_TYPE(template_param[0]);
|
||||||
|
|
||||||
|
adr = DeRef(Field(value, "vector")).address;
|
||||||
|
|
||||||
|
sz = SizeOf(template_param[0]);
|
||||||
|
|
||||||
|
LOG(SizeOfPtr());
|
||||||
|
LOG("Just a test");
|
||||||
|
|
||||||
|
ITEM_PTRS(adr, sz, from, items);
|
||||||
|
// for(i = 0; i < items; i++)
|
||||||
|
// ITEM_PTR(adr + (i + from) * sz);
|
||||||
|
}
|
||||||
|
|
||||||
|
typename MyArray {
|
||||||
|
value = Field(value, "vector");
|
||||||
|
|
||||||
|
ITEM_COUNT(Peek32(Field(value, "items")));
|
||||||
|
ITEM_TYPE(template_param[0]);
|
||||||
|
|
||||||
|
adr = DeRef(Field(value, "vector")).address;
|
||||||
|
|
||||||
|
sz = SizeOf(template_param[0]);
|
||||||
|
|
||||||
|
ITEM_DEREF_PTRS(adr, from, items);
|
||||||
|
// for(i = 0; i < items; i++)
|
||||||
|
// ITEM_PTR(PeekPtr(adr + (i + from) * SizeOfPtr()));
|
||||||
|
|
||||||
|
CHUNK(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
typename MyVectorMap {
|
||||||
|
key = Field(value, "key");
|
||||||
|
key = Field(key, "key");
|
||||||
|
|
||||||
|
ITEM_COUNT(Peek32(Field(key, "items")));
|
||||||
|
|
||||||
|
ITEM_TYPE(template_param[0]);
|
||||||
|
ITEM_PTRS(DeRef(Field(key, "vector")).address, SizeOf(template_param[0]), from, items);
|
||||||
|
|
||||||
|
value = Field(value, "value");
|
||||||
|
ITEM_TYPE(template_param[1]);
|
||||||
|
ITEM_PTRS(DeRef(Field(value, "vector")).address, SizeOf(template_param[1]), from, items);
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue