macros.patch

Jan DolinĂ¡r, 03/13/2013 08:42 PM

Download (127 KB)

View differences:

uppsrc/Esc/EscStdLib.cpp (working copy)
43 43

  
44 44
void ESC_to_number(EscEscape& e)
45 45
{
46
	if(e[0].IsArray())
47
		e = ScanDouble((String)e[0]);
46
	if(e[0].IsArray()) {
47
		double d = ScanDouble((String)e[0]);
48
		if(!IsNull(d))
49
			e = d;
50
	}
48 51
}
49 52

  
50 53
void ESC_rand(EscEscape& e)
......
240 243
	e = v;
241 244
}
242 245

  
246
void ESC_ToLower(EscEscape& e)
247
{
248
	String s = e[0];
249
	e = ToLower(s);
250
}
251

  
252
void ESC_ToUpper(EscEscape& e)
253
{
254
	String s = e[0];
255
	e = ToUpper(s);
256
}
257

  
243 258
void StdLib(ArrayMap<String, EscValue>& global)
244 259
{
245 260
	Escape(global, "is_number(value)", ESC_is_number);
......
257 272
	Escape(global, "sort(array)", ESC_sort);
258 273
	Escape(global, "order(array)", ESC_order);
259 274

  
275
	Escape(global, "ToUpper(value)", ESC_ToUpper);
276
	Escape(global, "ToLower(value)", ESC_ToLower);
277

  
260 278
	Escape(global, "len(x)", ESC_count);
261 279
	Escape(global, "mid(array, pos, count)", ESC_mid);
262 280
	Escape(global, "exists(map, key)", ESC_exists);
uppsrc/ide/Macro.cpp (working copy)
34 34
	out.Escape("MovePageDown(...)", THISBACK(MacroMovePageDown));
35 35
	out.Escape("MoveTextBegin(...)", THISBACK(MacroMoveTextBegin));
36 36
	out.Escape("MoveTextEnd(...)", THISBACK(MacroMoveTextEnd));
37

  
38
	out.Escape("EditFile(...)", THISBACK(MacroEditFile));
39
	out.Escape("SaveCurrentFile()", THISBACK(MacroSaveCurrentFile));
40
	out.Escape("CloseFile()",THISBACK(MacroCloseFile));
41
	out.Escape("FileName()", THISBACK(MacroFileName));
42

  
37 43
	out.Escape("Input(...)", THISBACK(MacroInput));
44
	out.Escape("ClearConsole()", THISBACK(MacroClearConsole));
45
	out.Escape("Echo(...)", THISBACK(MacroEcho));
46

  
38 47
	out.Escape("Build(...)", THISBACK(MacroBuild));
39 48
	out.Escape("BuildProject(...)", THISBACK(MacroBuildProject));
40 49
	out.Escape("Execute(cmdline)", THISBACK(MacroExecute));
41 50
	out.Escape("Launch(cmdline)", THISBACK(MacroLaunch));
42
	out.Escape("ClearConsole()", THISBACK(MacroClearConsole));
43
	out.Escape("EditFile(...)", THISBACK(MacroEditFile));
44
	out.Escape("SaveCurrentFile()", THISBACK(MacroSaveCurrentFile));
45
	out.Escape("ProjectDir()", THISBACK(MacroProjectDir));
46
	out.Escape("FileName()", THISBACK(MacroFileName));
51

  
52
	out.Escape("MainPackage()",THISBACK(MacroMainPackage));
53
	out.Escape("ActivePackage()",THISBACK(MacroActivePackage));
54
	out.Escape("PackageDir(...)",THISBACK(MacroPackageDir));
55
	out.Escape("ProjectDir()", THISBACK(MacroPackageDir)); // BW compatibility
56
	out.Escape("Assembly()",THISBACK(MacroAssembly));
57
	out.Escape("BuildMethod()",THISBACK(MacroBuildMethod));
58
	out.Escape("BuildMode()",THISBACK(MacroBuildMode));
59
	out.Escape("Flags()",THISBACK(MacroFlags));
60
	out.Escape("PackageFiles(...)",THISBACK(MacroPackageFiles));
61
	out.Escape("AllPackages()",THISBACK(MacroAllPackages));
62

  
47 63
	return out;
48 64
}
49 65

  
......
419 435
	SaveFile();
420 436
}
421 437

  
422
void Ide::MacroProjectDir(EscEscape& e)
438
void Ide::MacroFileName(EscEscape& e)
423 439
{
424
	e = GetFileFolder(PackagePathA(GetActivePackage()));
440
	e = editfile;
425 441
}
426 442

  
427
void Ide::MacroFileName(EscEscape& e)
443
void Ide::MacroMainPackage(EscEscape& e)
428 444
{
429
	e = editfile;
445
	e = GetMain();
430 446
}
447

  
448
void Ide::MacroActivePackage(EscEscape& e)
449
{
450
	e = GetActivePackage();
451
}
452

  
453
void Ide::MacroPackageDir(EscEscape& e)
454
{
455
	String pkg;
456
	if(e.GetCount() == 0)
457
		pkg = GetActivePackage();
458
	else
459
		pkg = e[0];
460
	String pp = PackagePathA(pkg);
461
	if(!FileExists(pp))
462
		e.ThrowError("PackageDir: Package not found.");
463
	e = GetFileFolder(pp);
464
}
465

  
466
void Ide::MacroAssembly(EscEscape& e)
467
{
468
	e = GetVarsName();
469
}
470

  
471
void Ide::MacroBuildMethod(EscEscape& e)
472
{
473
	e = method;
474
}
475

  
476
void Ide::MacroBuildMode(EscEscape& e)
477
{
478
	e = double(targetmode);
479
}
480

  
481
void Ide::MacroFlags(EscEscape& e)
482
{
483
	Vector<String> v = Split(mainconfigparam," ");
484
	EscValue ret;
485
	for(int i = 0; i < v.GetCount(); i++){
486
		ret.ArrayAdd(v[i]);
487
	}
488
	e = ret;
489
}
490

  
491
void Ide::MacroEcho(EscEscape& e)
492
{
493
	ShowConsole();
494
	for(int i = 0; i < e.GetCount(); i++){
495
		PutConsole(String(e[i]));
496
	}
497
}
498

  
499
void Ide::MacroCloseFile(EscEscape& e)
500
{
501
	int n = tabs.GetCursor();
502
	if(n>=0)
503
		tabs.Close(n,true);
504
}
505

  
506
void Ide::MacroPackageFiles(EscEscape& e)
507
{
508
	String pp;
509
	Package pkg;
510
	if(e.GetCount()==0)
511
		pp = GetActivePackagePath();
512
	else
513
		pp = PackagePathA(String(e[0]));
514
	if(!FileExists(pp))
515
		e.ThrowError("PackageFiles: Package not found.");
516
	pkg.Load(pp);
517
	EscValue ret;
518
	for(int i = 0; i < pkg.file.GetCount(); i++){
519
		ret.ArrayAdd(pkg.file[i]);
520
	}
521
	e = ret;
522
}
523

  
524
void Ide::MacroAllPackages(EscEscape& e)
525
{
526
	EscValue ret;
527
	for(int i = 0; i < package.GetCount(); i++){
528
		String p = package.Get(i).name;
529
		if(!IsAux(p))
530
			ret.ArrayAdd(p);
531
	}
532
	e = ret;
533
}
uppsrc/ide/ide.h (working copy)
1108 1108
		void  MacroClearConsole(EscEscape& e);
1109 1109
		void  MacroEditFile(EscEscape& e);
1110 1110
		void  MacroSaveCurrentFile(EscEscape& e);
1111
		void  MacroProjectDir(EscEscape& e);
1112 1111
		void  MacroFileName(EscEscape& e);
1112
		void  MacroMainPackage(EscEscape& e);
1113
		void  MacroActivePackage(EscEscape& e);
1114
		void  MacroPackageDir(EscEscape& e);
1115
		void  MacroAssembly(EscEscape& e);
1116
		void  MacroBuildMethod(EscEscape& e);
1117
		void  MacroBuildMode(EscEscape& e);
1118
		void  MacroFlags(EscEscape& e);
1119
		void  MacroEcho(EscEscape& e);
1120
		void  MacroCloseFile(EscEscape& e);
1121
		void  MacroPackageFiles(EscEscape& e);
1122
		void  MacroAllPackages(EscEscape& e);
1113 1123

  
1114 1124
	typedef   Ide CLASSNAME;
1115 1125

  
uppsrc/ide/app.tpp/esc$en-us.tpp (working copy)
1
TITLE("Esc scripting language")
2
COMPRESSED
3
120,156,173,59,139,146,218,70,182,191,210,153,108,98,176,129,65,192,188,192,201,58,59,113,238,78,85,226,164,226,36,187,85,148,54,18,162,1,173,133,68,212,210,12,115,237,220,111,191,231,209,221,106,73,48,158,241,174,147,170,209,163,207,163,207,251,156,22,115,241,151,191,12,123,195,207,135,31,249,55,253,86,174,194,50,41,252,249,226,114,60,123,254,194,59,27,2,164,135,144,23,151,231,19,111,114,49,153,156,141,198,23,103,147,201,104,56,153,120,30,92,123,103,23,231,23,23,211,34,46,18,9,112,222,120,60,11,25,216,187,0,224,17,0,143,189,177,55,244,206,71,0,62,26,142,135,163,137,55,58,243,46,47,39,222,197,217,229,248,234,252,124,170,202,133,134,79,198,35,111,86,140,38,231,179,235,87,103,51,15,16,140,123,227,207,71,195,171,225,232,252,226,106,50,242,38,231,240,159,55,190,186,242,198,151,151,195,179,9,176,232,141,167,81,182,4,224,247,191,255,249,197,235,55,253,95,223,138,185,26,206,158,255,124,41,94,171,72,168,40,143,119,69,156,174,69,
4
18,166,235,50,92,203,47,125,124,47,244,31,92,19,43,161,226,237,46,145,7,86,139,56,45,100,186,148,75,177,202,114,33,183,11,185,92,226,251,56,21,191,38,69,188,13,11,25,188,8,94,136,112,183,75,226,40,44,226,44,85,131,58,137,155,2,41,20,247,59,153,72,165,122,226,54,76,74,41,178,60,150,128,122,89,81,186,139,139,141,97,4,169,230,171,48,66,82,244,252,26,169,156,254,74,180,112,191,3,141,246,86,230,247,6,232,94,22,226,143,50,46,36,172,192,7,112,97,144,187,44,121,51,241,27,177,128,44,41,124,50,154,137,219,44,94,42,189,232,155,36,1,38,243,56,92,0,195,98,19,222,74,122,173,25,95,72,144,132,20,161,82,241,58,5,254,195,244,94,100,197,70,230,252,126,32,126,195,181,136,27,64,81,178,233,26,120,163,119,14,19,99,38,89,151,84,152,46,133,220,239,114,16,19,200,81,68,97,10,212,68,33,85,161,229,143,32,41,188,21,37,162,21,243,87,29,111,116,57,24,14,70,103,103,93,144,70,240,59,46,240,197,170,76,35,212,
5
196,64,111,46,45,65,111,185,217,222,27,186,67,225,173,146,44,36,109,239,50,16,184,94,38,58,81,150,3,11,187,44,37,77,23,153,184,230,237,44,179,18,36,210,29,136,215,251,16,229,171,68,182,50,64,9,136,61,15,19,53,173,239,209,51,127,7,224,45,238,181,12,250,87,231,252,224,213,4,54,114,38,134,123,120,220,255,208,255,224,159,158,138,141,220,135,75,25,129,125,37,245,69,176,70,152,69,89,84,52,95,47,192,213,134,248,191,89,179,136,211,48,191,175,45,10,158,237,131,103,248,158,87,68,155,48,15,35,224,158,236,170,237,29,170,220,237,178,188,80,104,84,91,208,202,117,208,79,226,119,96,192,59,216,48,217,59,169,70,203,129,244,172,140,224,195,60,15,239,173,89,209,13,60,67,227,95,202,28,116,154,131,198,179,173,8,163,8,149,170,228,31,165,76,35,150,43,155,20,50,192,40,69,39,101,59,96,156,224,33,81,82,130,95,130,58,8,177,89,134,232,213,14,68,183,138,97,241,33,59,9,230,129,239,139,5,108,250,157,44,26,10,51,34,130,37,
6
44,33,150,145,220,238,138,123,166,172,149,24,204,133,215,19,163,158,24,247,196,164,39,0,196,111,96,192,247,193,28,87,4,62,172,17,140,17,177,17,30,16,103,90,132,49,72,207,221,87,29,199,201,223,101,146,100,193,137,195,8,248,55,108,20,34,7,218,37,176,249,236,239,193,51,160,243,76,242,159,164,246,39,11,158,29,100,11,153,18,193,115,17,38,171,144,248,34,212,214,241,148,241,188,82,33,95,74,220,1,27,117,195,208,62,4,122,130,160,182,5,118,80,33,2,84,102,54,199,8,114,89,64,152,187,5,44,11,136,82,5,104,59,204,151,214,61,65,4,101,90,52,162,229,55,100,11,168,53,139,25,168,24,165,43,177,203,179,219,120,169,49,150,11,142,216,45,13,11,84,49,91,104,150,55,124,50,12,230,67,35,22,188,241,2,95,4,95,137,113,157,143,239,226,92,21,134,7,203,130,168,98,131,66,13,196,144,26,246,45,234,128,222,111,108,235,141,92,131,179,220,74,134,208,118,26,130,118,239,40,132,46,197,82,98,60,133,116,82,237,123,149,131,111,160,76,
7
33,1,89,14,166,109,107,238,123,184,91,144,77,18,30,96,185,119,0,96,132,0,180,122,81,194,202,20,72,20,209,160,37,38,194,92,223,7,80,169,217,96,11,134,116,218,9,129,78,95,180,160,255,177,145,169,150,89,172,216,188,48,118,224,30,243,160,207,249,165,67,118,130,6,144,177,69,229,241,122,83,64,30,89,74,220,83,99,51,95,249,221,94,133,17,226,9,36,210,104,35,193,181,151,3,241,29,224,78,52,94,88,5,193,58,75,131,126,90,83,69,37,120,101,69,183,67,201,32,105,160,103,109,186,167,45,0,37,176,223,133,84,19,80,106,174,114,35,153,68,148,75,212,98,177,137,45,194,134,45,4,39,175,49,158,4,39,71,204,7,149,115,140,43,82,26,218,139,235,162,64,53,92,46,43,195,129,123,203,118,195,248,247,136,30,205,29,242,213,246,41,170,221,27,213,238,187,199,16,252,76,210,175,98,2,134,132,90,56,200,22,24,241,128,97,208,11,164,29,88,109,34,180,130,226,73,54,147,39,193,6,243,93,6,69,19,209,110,154,147,35,36,166,67,104,200,
8
74,78,25,194,175,132,2,102,149,23,182,158,130,5,128,215,63,164,33,222,44,45,159,130,231,61,137,40,122,42,24,62,1,63,68,91,47,104,24,198,79,97,206,225,142,197,97,197,182,221,130,176,151,71,133,99,57,204,242,214,203,233,19,29,216,2,138,169,208,174,140,143,186,77,52,96,130,7,33,123,117,69,53,57,154,30,212,227,163,120,26,30,49,2,138,41,90,96,24,84,77,210,170,28,191,94,207,237,64,200,53,199,166,192,33,119,73,24,201,101,195,2,21,26,122,112,2,69,215,36,56,153,213,50,169,130,196,49,21,20,33,121,209,254,159,123,88,195,185,148,50,85,154,221,33,44,60,7,224,58,207,111,33,39,66,181,104,51,148,85,53,181,17,218,163,221,218,201,21,133,39,176,223,192,171,81,29,43,84,20,208,129,72,182,205,226,206,160,232,29,192,129,217,159,43,54,253,84,151,111,88,20,152,58,164,66,12,210,129,152,102,236,93,47,133,230,71,170,102,206,96,220,47,64,32,204,234,147,245,44,12,168,221,100,3,7,212,216,7,225,94,190,52,210,49,87,
9
35,123,53,254,111,176,81,73,221,94,53,240,98,177,74,41,93,161,139,115,43,162,155,189,67,153,204,150,129,90,105,88,17,57,221,15,132,17,136,159,170,140,54,96,28,74,66,12,52,214,66,125,85,154,9,185,90,201,168,48,181,246,54,220,25,107,249,1,46,77,125,41,222,201,123,147,90,119,33,20,53,232,27,176,111,168,203,212,64,188,201,114,104,49,170,66,74,29,76,70,214,173,208,44,185,86,7,106,6,75,195,103,224,77,48,71,162,228,23,205,190,79,183,151,26,20,119,136,152,138,77,88,16,149,52,43,170,206,18,61,53,142,202,36,204,57,113,59,77,104,163,41,29,136,95,48,221,222,129,60,25,26,29,157,94,235,84,136,68,128,39,227,102,32,27,212,66,206,145,34,151,91,168,41,177,226,4,174,238,171,178,11,128,30,220,90,171,127,165,196,140,237,170,131,12,212,181,144,150,157,131,244,17,2,13,2,25,68,245,99,15,164,37,163,101,123,109,56,136,87,29,211,230,118,42,110,186,160,168,247,98,48,24,136,224,207,134,172,21,237,132,26,34,208,179,220,
10
71,114,135,134,214,19,119,24,54,67,183,177,135,216,35,67,176,15,211,224,167,54,132,30,50,10,168,167,104,0,97,242,184,22,52,119,74,21,231,54,163,26,137,205,4,196,71,42,214,140,252,56,223,214,45,166,90,133,81,180,174,8,99,224,92,65,171,204,154,166,174,188,112,248,1,137,2,74,234,176,8,33,211,230,101,84,148,57,90,251,47,25,160,122,167,107,179,127,103,11,33,67,21,203,188,103,229,3,110,59,128,190,49,1,199,85,247,224,62,196,129,110,128,91,201,97,207,75,43,158,159,88,78,5,39,4,31,156,184,251,110,237,211,84,150,104,57,180,219,69,187,191,13,222,7,127,82,67,219,114,70,122,99,27,88,45,71,122,14,169,9,219,191,224,100,234,65,102,13,78,22,178,192,155,17,220,140,134,211,224,100,50,132,250,148,205,137,215,143,40,57,64,89,0,57,109,200,47,17,243,182,206,162,137,58,78,55,169,227,83,18,110,23,203,208,132,168,239,249,14,83,11,89,60,244,45,123,25,149,5,206,156,40,144,242,144,139,151,185,189,125,12,110,149,45,203,
11
232,88,115,255,202,175,38,26,77,97,188,130,226,21,183,2,109,105,153,167,188,163,253,236,128,211,152,16,146,56,228,209,194,204,84,172,165,92,168,10,87,49,129,132,182,189,61,56,89,152,174,178,140,234,133,163,188,232,18,130,16,194,158,215,73,182,0,203,180,61,51,192,215,185,189,89,25,54,195,124,93,114,221,141,109,178,4,17,153,22,165,33,163,47,29,25,145,31,59,53,109,156,238,202,34,232,103,101,1,127,43,148,29,158,199,152,123,163,139,29,181,143,201,125,183,81,201,206,159,215,40,98,104,242,195,194,109,102,185,252,210,216,147,24,187,26,78,157,86,198,169,157,49,84,84,11,178,127,109,50,3,113,147,114,234,192,4,217,195,30,40,70,25,129,184,32,117,132,91,9,219,99,70,161,117,194,24,1,118,57,199,241,203,250,214,175,200,32,47,56,221,163,116,220,168,103,166,170,220,106,109,193,22,72,95,84,18,194,10,136,145,157,152,59,156,245,109,23,31,115,213,179,190,13,230,113,224,183,173,234,167,138,37,116,20,202,96,75,158,184,27,251,86,18,249,46,
12
120,184,209,106,116,27,214,60,93,64,94,212,150,68,60,29,77,2,38,236,37,241,74,218,144,23,38,192,74,202,141,48,236,101,139,114,176,70,198,214,76,151,96,75,225,109,24,39,40,171,6,7,159,163,49,63,228,82,222,44,246,206,134,179,31,175,112,226,108,230,201,212,188,66,148,144,251,66,213,249,252,205,106,30,4,69,181,1,6,130,85,134,118,33,174,65,235,113,26,197,52,119,237,160,82,81,233,32,50,200,164,184,137,30,247,84,108,239,97,178,219,132,16,209,226,200,25,111,66,38,110,200,244,119,223,182,210,38,110,29,130,84,173,17,138,6,212,115,229,166,241,35,215,203,152,170,128,50,86,27,44,198,55,185,212,243,118,148,115,53,92,55,130,48,177,172,225,54,76,166,241,116,234,120,239,225,241,37,224,55,3,195,36,139,26,51,226,129,243,54,78,113,216,18,201,122,136,114,22,112,244,169,111,239,123,68,233,236,193,153,184,70,232,160,198,138,122,38,118,53,150,2,239,88,247,108,51,140,150,73,21,218,20,250,51,243,227,128,84,45,136,206,19,78,194,233,
13
64,209,160,156,201,217,109,205,128,186,40,106,92,125,183,201,148,172,199,242,24,205,235,54,123,39,151,61,26,70,112,89,6,126,80,229,21,158,156,55,52,255,153,143,207,151,199,70,139,192,192,128,157,113,230,60,121,3,26,214,158,202,62,186,199,99,28,138,245,77,181,209,218,78,119,86,77,124,25,165,46,132,60,135,144,87,167,212,194,241,25,45,154,57,120,60,7,209,225,8,177,203,179,53,68,169,173,204,131,103,170,30,47,104,72,104,202,71,221,167,146,253,70,16,70,80,94,218,148,177,111,185,227,49,31,200,215,73,162,84,86,39,53,219,33,235,214,175,137,177,194,132,118,116,254,184,232,89,3,165,149,218,156,172,207,116,104,228,12,128,116,156,208,37,235,194,182,194,206,172,27,218,193,18,7,194,149,190,51,91,167,62,4,204,118,45,11,203,42,198,67,102,21,242,5,130,57,249,98,133,131,225,30,230,175,20,56,192,153,98,5,6,85,103,151,55,106,25,215,8,132,95,219,52,132,87,48,253,123,66,0,129,2,188,192,162,209,8,244,102,13,253,129,248,113,133,
14
243,143,28,19,221,163,195,4,152,53,99,119,38,133,149,187,104,65,30,174,83,180,176,220,83,16,144,71,98,11,18,218,148,188,69,69,175,180,172,192,145,236,182,233,53,215,33,168,79,135,132,7,1,178,94,28,90,59,60,197,237,210,60,199,61,140,168,13,117,178,117,204,22,132,1,160,71,61,68,79,252,175,204,51,83,46,160,36,208,233,179,92,55,216,148,16,104,133,29,199,85,193,196,95,65,77,45,129,106,207,61,195,100,154,62,116,14,230,224,244,212,86,91,169,78,72,116,52,136,250,68,83,136,163,119,224,45,88,174,45,227,91,106,239,237,96,135,200,83,15,6,49,9,115,88,150,199,197,125,79,63,207,118,219,12,74,31,156,165,210,73,43,97,133,197,155,120,189,193,174,208,172,119,116,36,222,191,159,76,206,47,167,103,103,227,209,198,155,189,234,140,188,243,46,157,121,139,31,53,85,127,58,229,7,215,217,150,118,12,15,254,245,106,196,7,227,215,96,40,84,182,251,193,28,175,32,134,250,208,207,25,16,219,114,8,168,171,230,252,122,96,222,158,94,35,32,
15
66,13,124,238,147,12,216,91,220,93,72,131,15,70,29,156,192,37,175,193,14,199,162,208,244,73,55,154,3,154,130,187,60,240,129,158,153,34,3,31,187,76,113,53,50,55,171,31,194,199,195,213,30,61,231,41,112,11,55,207,108,237,88,150,183,170,135,178,7,199,199,31,167,55,197,75,40,110,143,17,115,207,202,12,49,40,215,8,132,14,75,142,80,232,185,219,96,51,104,172,152,30,220,168,163,17,179,16,122,187,121,181,210,84,45,31,223,217,17,186,142,172,31,166,91,201,182,57,84,30,52,169,115,12,244,59,76,103,173,252,174,69,124,67,9,155,16,235,85,142,115,201,66,235,141,128,6,78,87,68,29,188,57,39,212,141,7,152,104,143,162,196,66,70,25,215,154,58,110,225,188,198,33,192,77,41,90,94,135,7,95,49,70,240,219,56,4,102,193,7,96,37,150,26,62,213,150,207,129,139,100,229,119,93,111,97,60,184,153,142,143,156,225,21,84,17,194,55,4,31,216,93,143,11,17,120,96,217,243,81,176,53,94,245,38,255,35,62,65,244,244,164,98,133,9,224,
16
130,98,60,62,245,206,204,118,144,125,172,93,252,36,232,87,227,227,234,85,63,232,87,175,28,124,81,206,134,127,186,148,230,210,126,56,161,103,76,68,108,216,164,213,247,27,184,126,165,162,108,27,167,165,114,229,76,139,255,175,185,248,111,49,116,178,119,177,50,31,196,208,73,79,3,234,51,159,200,91,152,239,117,134,129,98,100,0,245,22,149,50,28,15,109,214,80,130,178,70,79,12,57,105,32,133,102,124,168,164,128,66,169,185,143,243,10,69,105,8,255,4,137,32,232,199,70,86,130,14,168,224,137,21,153,251,181,137,43,180,154,134,200,177,144,10,54,98,126,67,71,124,107,223,178,123,26,250,63,83,7,231,248,45,173,243,121,246,15,217,23,109,136,217,214,163,255,166,194,26,216,27,186,248,1,250,220,216,126,35,229,106,193,129,59,109,129,125,11,249,84,29,7,248,162,77,39,91,150,73,246,160,96,94,52,183,126,237,30,156,216,253,63,188,195,23,45,202,223,232,241,195,17,86,33,196,55,33,222,150,139,2,251,56,13,84,103,24,116,92,241,252,242,229,163,120,
17
134,154,37,163,8,162,97,33,134,220,99,10,166,222,178,122,12,184,170,243,49,176,107,5,186,121,104,179,72,189,201,250,38,94,65,189,44,87,197,145,237,126,253,245,17,24,58,4,105,111,215,37,247,144,225,126,253,208,203,151,208,16,61,4,91,189,118,75,164,29,84,230,10,66,39,39,16,253,190,173,125,71,27,90,25,150,70,245,234,235,227,175,136,185,163,112,246,229,113,206,92,179,172,201,142,244,200,70,246,21,226,169,71,180,215,127,148,97,2,53,100,107,67,21,216,103,109,168,155,84,186,112,199,116,21,124,217,146,232,223,184,113,134,66,252,152,39,252,235,24,204,62,203,143,193,124,56,6,83,7,113,68,241,37,242,118,56,184,35,111,88,34,80,47,87,141,4,116,88,87,80,20,164,203,234,49,246,165,18,239,48,14,246,196,191,75,128,81,239,226,221,78,46,143,144,254,128,236,30,38,13,236,30,160,140,173,198,127,70,152,82,203,95,125,231,102,170,111,220,144,97,7,164,85,131,5,157,101,10,157,104,42,177,108,64,129,54,123,47,203,65,173,176,209,209,67,
18
91,93,115,183,60,66,55,249,182,102,117,181,184,70,67,211,134,221,219,2,178,90,139,20,170,107,125,250,234,55,248,169,69,231,3,158,94,199,107,14,188,191,114,111,94,24,239,127,0,117,255,211,80,247,31,129,250,249,167,161,126,254,113,212,167,159,132,249,244,227,136,191,248,36,196,95,84,136,255,108,12,171,245,136,224,109,1,22,71,133,98,189,243,61,27,66,231,59,185,106,118,190,118,249,71,90,223,89,21,21,233,68,76,25,184,102,253,86,57,129,239,192,56,78,115,83,224,196,72,29,240,14,192,16,188,23,186,57,210,92,205,244,96,190,22,220,233,144,178,205,129,46,76,227,85,199,143,140,199,114,223,224,171,3,219,172,124,250,211,80,213,42,120,9,1,240,209,100,184,253,106,208,186,219,196,137,124,12,231,223,103,217,110,80,41,142,134,69,50,199,209,155,25,245,96,99,206,231,215,212,181,106,132,190,137,151,205,93,46,179,214,174,64,21,204,15,119,200,6,67,247,113,76,100,102,240,72,179,62,254,74,136,107,225,39,177,7,76,224,97,17,79,58,226,106,48,
19
97,0,248,222,22,254,126,183,166,145,254,135,3,178,211,30,102,62,14,152,107,204,51,243,64,111,186,182,103,48,74,243,186,255,97,94,51,206,218,243,138,17,251,188,178,91,103,47,38,3,248,116,172,102,199,2,79,231,158,16,186,248,248,128,173,246,232,165,158,27,216,42,168,107,153,195,127,238,90,108,170,28,38,234,60,180,71,30,71,183,131,99,172,71,108,230,6,191,251,47,248,140,39,43,215,27,51,1,235,57,95,162,208,49,133,59,255,33,199,105,126,211,162,191,160,112,247,226,218,208,34,151,225,187,42,22,93,135,165,194,143,67,247,113,97,38,206,169,204,105,154,152,128,81,99,167,175,128,76,180,57,30,22,248,125,199,183,137,252,160,159,254,16,194,34,238,49,180,128,240,43,160,36,209,231,111,54,78,227,92,2,71,159,122,15,21,162,30,13,154,161,99,199,185,42,159,1,19,104,125,50,170,191,213,3,182,233,185,57,25,229,1,187,253,10,10,247,171,10,165,191,152,214,75,148,115,32,12,203,101,76,147,220,45,242,77,7,19,8,231,2,48,142,30,4,12,
20
73,53,22,174,114,37,77,0,40,15,93,211,84,134,203,2,197,247,238,122,141,183,90,167,127,72,101,20,208,92,255,57,226,166,121,140,51,230,170,14,111,205,74,80,210,55,54,151,86,35,28,62,72,154,183,225,102,46,137,193,167,208,24,60,145,200,244,83,136,76,31,67,164,86,21,120,179,49,134,104,254,241,64,18,47,114,253,139,22,91,21,140,38,23,87,211,139,179,145,215,168,10,190,211,39,139,31,41,10,240,139,42,174,71,104,27,123,39,63,152,161,136,135,134,56,199,119,116,32,174,203,151,163,19,32,196,72,113,234,209,8,245,39,230,15,224,131,160,242,104,108,52,223,124,0,23,125,63,246,56,100,124,194,114,12,23,134,228,231,182,76,108,227,210,193,192,12,142,114,44,121,232,24,234,14,116,169,232,88,198,197,87,100,193,239,170,200,193,31,143,112,167,249,10,205,183,168,118,38,71,31,145,19,100,245,172,62,105,210,232,143,40,26,10,156,91,153,83,100,209,168,59,140,174,107,226,50,3,214,226,4,167,164,6,166,27,22,158,240,173,240,114,45,140,161,153,
21
184,195,146,125,221,142,204,18,175,181,36,53,166,97,150,84,159,197,184,63,144,161,115,208,218,39,44,14,6,50,135,3,240,213,71,152,4,78,103,229,7,50,83,237,240,3,115,89,199,230,199,150,194,89,118,252,49,163,50,7,240,29,58,160,165,159,77,170,42,226,135,252,195,177,249,115,77,197,119,190,28,176,214,70,191,19,73,237,7,111,181,161,53,131,61,134,25,125,170,247,72,118,144,245,39,51,131,63,101,235,180,89,208,191,112,211,66,7,73,243,79,84,134,131,193,120,116,113,126,81,195,128,31,133,43,217,113,106,169,54,58,94,179,172,198,65,181,41,126,150,23,15,130,43,250,142,241,48,48,9,229,163,208,188,236,208,15,191,14,34,189,81,223,66,25,240,128,138,40,216,160,82,236,207,225,130,147,101,120,31,156,224,55,137,91,120,182,9,78,40,121,7,39,247,50,204,225,6,181,115,52,32,221,168,95,226,237,83,233,241,216,69,147,132,58,165,144,124,189,201,202,156,175,30,230,104,43,233,51,160,163,76,253,143,44,222,222,51,99,109,134,162,50,207,233,27,
22
194,152,109,208,58,225,127,141,175,118,143,237,255,63,157,39,25,44,
23

  
1
topic "Esc scripting language";
2
[ $$0,0#00000000000000000000000000000000:Default]
3
[b83;*+150 $$1,0#07864147445237544204411237157677:title]
4
[b133;a83;*+117 $$2,0#31310162474203024125188417583966:subtitle]
5
[l321;t246;C@5;1 $$3,3#20902679421464641399138805415013:code]
6
[{_}%EN-US 
7
[s0; [*R8 Esc scripting language]&]
8
[s0; &]
9
[s0; Esc is simple scripting language intended for embedding in Ultimate`+`+ 
10
applications.&]
11
[s0; &]
12
[s0; It is typeless, value oriented language with simple interfacing 
13
with C`+`+/U`+`+ code. It is very simple yet quite complete language.&]
14
[s0; &]
15
[s1; Value types&]
16
[s2; voids&]
17
[s0; All variables have void value before assigned any other value. 
18
Void type has single value&]
19
[s0; &]
20
[s3; void&]
21
[s0; &]
22
[s0; and expression can be tested for voidness using [@(128.0.255) is`_void] 
23
function.&]
24
[s2; numbers&]
25
[s0; Number is floating point number (corresponding to C type double). 
26
Examples of number literals:&]
27
[s0; &]
28
[s3; 1&]
29
[s3; 1.123&]
30
[s3; 1.123e`-96&]
31
[s3; 0x123-|-|[@4 // hexadecimal]&]
32
[s3; 0123 -|-|[@4 // octal]&]
33
[s3; 0b10100100-|-|[@4 // binary]&]
34
[s3; `'x`'-|-|-|[@4 // character code]&]
35
[s0; &]
36
[s0; Esc supports common C`-like operations for number values.&]
37
[s2; arrays&]
38
[s0; Arrays are ordered random access sequences of other Esc values 
39
(nested arrays included). Array values are specified using [@(128.0.255) `[`]] 
40
brackets:&]
41
[s0; &]
42
[s3; `[`]-|-|-|-|[@4 // empty array]&]
43
[s3; `[ 1, 2, 3, 4, 5 `]&]
44
[s3; `[ 1, `[2, 3`], 4 `]-|-|[@4 // array contains nested array]&]
45
[s3; `"Hello`"-|-|-|[@4 // equivalent to `[`'H`', `'e`', `'l`', `'l`', 
46
`'o`'`]]&]
47
[s3; `[ 1, 2, 3 `* alfa `]-|[@4 // expressions can be used as well]&]
48
[s0; &]
49
[s0; Number of elements in the array can be retrieved by standard 
50
function count.&]
51
[s0; &]
52
[s0; Accessing elements of arrays is provided by subscript [@(128.0.255) `[ 
53
`]] operator:&]
54
[s0; &]
55
[s3; a`[0`]&]
56
[s3; a`[1`] `= 3&]
57
[s0; &]
58
[s0; First element of array corresponds to index [@(128.0.255) `[0`]].&]
59
[s0; &]
60
[s0; Negative indexes are allowed and designate elements from the 
61
end of array: [@(128.0.255) `[`-1`]] is last element of array, [@(128.0.255) `[`-2`]] 
62
last but one etc.&]
63
[s0; &]
64
[s3; a`[`-1`]&]
65
[s0; &]
66
[s0; is equivalent to&]
67
[s0; &]
68
[s3; a`[count(a) `- 1`]&]
69
[s0; &]
70
[s0; When index is used for the r`-value (standing on the right side 
71
of [@(128.0.255) `=]), index is range checked. For l`-value, if 
72
non`-negative index designates element past the of the array, 
73
array is expanded with void values to create this element.&]
74
[s0; &]
75
[s0; `"Empty`" index [@(128.0.255) `[`]] designates element past last 
76
and can be used to add elements to the array:&]
77
[s0; &]
78
[s3; x`[`] `= item&]
79
[s0; &]
80
[s0; is equivalent to&]
81
[s0; &]
82
[s3; x`[count(x)`] `= item&]
83
[s0; &]
84
[s0; Range of element in array can be obtained or changed using slices:&]
85
[s0; &]
86
[s3; array`[pos, count`]&]
87
[s0; &]
88
[s0; designates array slice of [/ count] elements starting with [/ pos] 
89
element.&]
90
[s0; &]
91
[s3; x`[start:end`]&]
92
[s0; &]
93
[s0; designates array slice of [/ end `- start] elements starting with 
94
[/ start] .&]
95
[s0; &]
96
[s0; Parts of slices can be ommited&]
97
[s0; &]
98
[s3; array`[pos,`]&]
99
[s0; or&]
100
[s3; array`[pos:`]&]
101
[s0; &]
102
[s0; is equivalent to&]
103
[s0; &]
104
[s3; array`[pos : count(array)`]&]
105
[s0; &]
106
[s0; and&]
107
[s0; &]
108
[s3; array`[,count`]&]
109
[s0; or&]
110
[s3; array`[:count`]&]
111
[s0; &]
112
[s0; is equivalent to&]
113
[s0; &]
114
[s3; array`[0, count`]&]
115
[s0; &]
116
[s0; When slices are used as l`-value, corresponding part of the 
117
array is replaced:&]
118
[s0; &]
119
[s3; s `= `"1234`";&]
120
[s3; s`[1: `-1`] `= `"xXx`";-|[@4 // s is now `"1xXx4`"]&]
121
[s0; &]
122
[s0; Several operators can be applied to arrays&]
123
[s0; &]
124
[s3; array1 `+ array2&]
125
[s0; &]
126
[s0; concatenates two arrays,&]
127
[s0; &]
128
[s3; array `* number&]
129
[s3; number `* array&]
130
[s0; &]
131
[s0; repeats array number times.&]
132
[s0; &]
133
[s3; array `+`= array1&]
134
[s0; &]
135
[s0; is equivalent to&]
136
[s0; &]
137
[s3; array `= array `+ array1&]
138
[s0; &]
139
[s0; also&]
140
[s0; &]
141
[s3; array << array1 << array2 << array3&]
142
[s0; &]
143
[s0; is equivalent to&]
144
[s0; &]
145
[s3; array `= array `+ array1 `+ array2 `+ array3&]
146
[s0; &]
147
[s0; Esc allows [/ void] value on the right side of array concatenation 
148
expression `- in such cases, operator has no effect.&]
149
[s2; maps&]
150
[s0; Maps contain key`-value pairs as entries. Normal subscripts 
151
[@(128.0.255) `[`]] are used to access map entries:&]
152
[s0; &]
153
[s3; map`[key`] `= value&]
154
[s0; &]
155
[s0; All entries in map that are not assigned particular non`-void 
156
value have void value. This way assigning void to the map key 
157
can be considered as removing entry from the map&]
158
[s0; &]
159
[s3; map`[key`] `= void&]
160
[s0; &]
161
[s0;  and testing entry for being void can be considered as test 
162
of key presence in map:&]
163
[s0;C &]
164
[s3; if(is`_void(map`[key`])) `{ ... `}&]
165
[s0; &]
166
[s0; As the special exception, when a void value appears before an 
167
l`-value [@(128.0.255) `[`]], it is changed to the empty map:&]
168
[s0; &]
169
[s3; x `= void; // x is void&]
170
[s3; x`[key`] `= value; // x is now map&]
171
[s0; &]
172
[s0; Maps are also used to create compound data structures. To make 
173
this job easier, special [/ .field] syntax is supported:&]
174
[s0; &]
175
[s3; x.field `= value;&]
176
[s0; &]
177
[s0; is equivalent to&]
178
[s0; &]
179
[s3; x`[`"field`"`] `= value;&]
180
[s0; &]
181
[s0; Map values can also be specified using `{`} braces:&]
182
[s0; &]
183
[s3; `{`} // empty map&]
184
[s3; `{ `"alfa`":10, `"beta`":20, 20:`"40`" `}&]
185
[s3; `{ 2 `* a : `"100`" `} // map values can contain expressions&]
186
[s2; lambdas&]
187
[s0; Lambdas represent executable Esc code. Lambda values are introduced 
188
using [@(128.0.255) `@] character:&]
189
[s0; &]
190
[s3; `@(x) `{ return 2 `* x; `}&]
191
[s0; &]
192
[s0; Assigning lambda value to variable is equivalent to defining 
193
a function:&]
194
[s0; &]
195
[s3; :foo `= `@(x) `{ return 2 `* x; `};-|[@4 // defines global function 
196
foo]&]
197
[s0; &]
198
[s0; If lambda argument is preceded with [@(128.0.255) `&] character, 
199
it designates input`-output argument (other arguments are input 
200
only).&]
201
[s0; &]
202
[s0; [*@(128.0.255) ... ]at the end of the argument list allows variable 
203
number of arguments to be present. In that case, additional parameters 
204
are passed in [/ argv] variable of type array.&]
205
[s0; &]
206
[s3; :sum `= `@(...) `{ s `= 0; for(i in argv) s `+`= argv`[i`]; `}&]
207
[s0; &]
208
[s0; Parameters can have default values separated by [@(128.0.255) `=]:&]
209
[s0; &]
210
[s3; :bar `= `@(x `= 0) `{ ... `}&]
211
[s0; &]
212
[s0; To make life easier, alternative form of function definition 
213
is available:&]
214
[s0; &]
215
[s3; #:foo(x) `{ return 2 `* x; `}&]
216
[s1;i150;O9; Variables and contexts&]
217
[s0; &]
218
[s0; Variable names in Esc follow C principles (are case sensitive, 
219
start with alphabetic character or [@(128.0.255) `_] and can contain 
220
alphabetic characters, [@(128.0.255) `_] and numbers).&]
221
[s0; &]
222
[s0; Esc distinguishes three types of variables contexts using [*@(128.0.255) .] 
223
and [*@(128.0.255) :] characters:&]
224
[s0; &]
225
[s3; var-|-|[@4 // local]&]
226
[s3; .var-|-|[@4 // instance]&]
227
[s3; :var-|-|[@4 // global]&]
228
[s0; &]
229
[s0; Local variables are specific to function, global variables are 
230
shared among all functions. Instance variables &]
231
[s0; represent map values (keys designate variable names) of map 
232
whose lambda value is invoked, or can be forced using binary 
233
[@(128.0.255) !] bind operator:&]
234
[s0; &]
235
[s3; var.x `= 0;&]
236
[s3; var.Next `= `@() `{ .x`+`+; `};&]
237
[s3; var.Next();-|-|-|[@4 // var.x is now 1 ]&]
238
[s3; var1.x `= 0;&]
239
[s3; var.Next()! var1;-|-|[@4 // var1.x is now 1]&]
240
[s0; &]
241
[s0; To make programmer`'s life easier, one exception applies concerning 
242
context `- when invoking lambda from local variable and lambda 
243
is not present in it, instance and global contexts (in this order) 
244
are tried as well:&]
245
[s0; &]
246
[s3; beta(x)&]
247
[s3; &]
248
[s0; Tries to get lambda form local [/ beta] variable first, then (if 
249
no lambda found) from instance [/ beta ]variable and finally (if 
250
still no lambda) from global [/ beta]. Of course, [*@(128.0.255) .] 
251
and [*@(128.0.255) :] can still be used to designate context:&]
252
[s0; &]
253
[s3; :beta(x)-|-|-|-|[@4 // calls global beta even if local or instance 
254
beta is present]&]
255
[s0; &]
256
[s1; Expressions&]
257
[s0; &]
258
[s0; When expressions are used as logical values, void, zero number 
259
and map or array with zero elements represent [/ false], other 
260
values are [/ true.]&]
261
[s0;/ &]
262
[s0; In following table, thick lines divide operators with the same 
263
priority, with topmost items having the highest priority:&]
264
[s0; &]
265
[ {{4468:5532h1;@(216) [s0; Operator]
266
:: [s0; Comments]
267
::^@2 [s0; [/C map][*C `[][/C key][*C `]]]
268
:: [s0; Map value at [/ key].]
269
:: [s0; [/C map][*C .][/C field]]
270
:: [s0; Same as [/ map]`[`"[/ field]`"`].]
271
:: [s0; [/C array][*C `[][/C index][*C `]]]
272
:: [s0; Array element at position [/ index].]
273
:: [s0; [/C array][*C `[][/C start][*C , ][/C count][*C `]]]
274
:: [s0; Array slice starting at [/ start] of [/ count] elements.]
275
:: [s0; [/C array][*C `[][/C start][*C :][/C end][*C `]]]
276
:: [s0; Array slice of elements [/ start .. end] `- 1]
277
:: [s0; [/C array][*C `[,][/C count][*C `]]&]
278
[s0; [/C array][*C `[:][/C count][*C `]]]
279
:: [s0; Same as [/ array]`[0, [/ count]`].&]
280
[s0; ]
281
:: [s0; [/C array][*C `[][/C start][*C :`]]&]
282
[s0; [/C array][*C `[][/C start][*C ,`]]]
283
:: [s0; Same as [/ array]`[[/ start] : count(array)`]. ]
284
:: [s0; [/C lambda][*C (][/C args][*C )]]
285
:: [s0; Invokes [/ lambda] with the set of [/ args]. If lambda is subscript 
286
of the map, map becomes instance for [/ lambda] execution (accessible 
287
via [* .][/ name] or [* self]).]
288
:: [s0; [/C lambda][*C (][/C args][*C ) ! ][/C instance]]
289
:: [s0; Invokes [/ lambda], using[/  instance] as instance for lambda execution 
290
(accessible via [* .][/ name] or [* self]).]
291
:: [s0; [*C self]]
292
:: [s0; Instance.]
293
::t33/15 [s0; [*C `+`+][/C l`-number]&]
294
[s0; [*C `-`-][/C l`-number]]
295
:: [s0; Increments/decrements number l`-value.]
296
::t0/15 [s0; [*C `-][/C number]]
297
:: [s0; Unary minus.]
298
:: [s0; [*C `~][/C number]]
299
:: [s0; Bit`-wise complement.]
300
:: [s0; [*C !][/C value]]
301
:: [s0; Logical not. 1 when value represents false, 0 otherwise.]
302
:: [s0; [/C l`-number][*C `-`-]&]
303
[s0; [/C l`-number][*C `+`+]]
304
:: [s0; Post`-increment / post`-decrement of number l`-value.]
305
::t33/15 [s0; [/C array][*C  `* ][/C number]&]
306
[s0; [/C number][*C  `* ][/C array]]
307
:: [s0; Returns [/ array][*/  ]repeated [/ number] times.]
308
::t0/15 [s0; [/C number][*C  `* ][/C number]]
309
:: [s0; Multiplication.]
310
:: [s0; [/C number][*C  / ][/C number]]
311
:: [s0; Division.]
312
:: [s0; [/C number][*C  % ][/C number]]
313
:: [s0; Modulo.]
314
::t33/15 [s0; [/C array][*C  `+ ][/C array]]
315
:: [s0; Concatenates [/ array]s.]
316
::t0/15 [s0; [/C number][*C  `+ ][/C number]]
317
:: [s0; Addition.]
318
:: [s0; [/C number][*C  `- ][/C number]]
319
:: [s0; Subtraction.]
320
::t33/15 [s0; [/C l`-array][*C  << ][/C array]]
321
:: [s0; Concatenates [/ array ]to [/ l`-array], yielding [/ l`-array ]as l`-value 
322
result.]
323
::t0/15 [s0; [/C number][*C  << ][/C number]]
324
:: [s0; Shift left.]
325
:: [s0; [/C number][*C  >> ][/C number]]
326
:: [s0; Shift right.]
327
::t33/15 [s0; [/C number][*C  < ][/C number]&]
328
[s0; [/C number][*C  > ][/C number]&]
329
[s0; [/C number][*C  <`= ][/C number]&]
330
[s0; [/C number][*C  >`= ][/C number]]
331
:: [s0; Comparison of [/ number]s.]
332
::t0/15 [s0; [/C array][*C  < ][/C array]&]
333
[s0; [/C array][*C  > ][/C array]&]
334
[s0; [/C array][*C  <`= ][/C array]&]
335
[s0; [/C array][*C  >`= ][/C array]]
336
:: [s0; Comparison of [/ array]s.]
337
::t33/15 [s0; [/C value][*C  `=`= ][/C value]]
338
:: [s0; Equality.]
339
::t0/15 [s0; [/C value][*C  !`= ][/C value]]
340
:: [s0; Inequality.]
341
::t33/15 [s0; [/C number][*C  `& ][/C number]]
342
:: [s0; Binary and.]
343
:: [s0; [/C number][*C  `^ ][/C number]]
344
:: [s0; Binary xor.]
345
:: [s0; [/C number][*C  `| ][/C number]]
346
:: [s0; Binary or.]
347
:: [s0; [/C value][*C  `&`& ][/C value]]
348
:: [s0; Logical and. If first value is false, second value is not evaluated, 
349
just skipped.]
350
:: [s0; [/C value][*C  `|`| ][/C value]]
351
:: [s0; Logical or. If first value is true, second value is not evaluated, 
352
just skipped.]
353
:: [s0; [/C value ][*C ?][/C  value ][*C :][/C  value]]
354
:: [s0; Conditional expression. Only necessary expressions are evaluated.]
355
:: [s0; [/C l`-value][*C  `= ][/C value]]
356
:: [s0; Assignment.]
357
::t0/15 [s0; [/C l`-array][*C  `+`= ][/C array]]
358
:: [s0; Same as [C l`-array `= l`-array `+ array].]
359
:: [s0; [/C l`-number][*C  `+`= ][/C number]]
360
:: [s0; Same as [C l`-number `= l`-number `+ number].]
361
:: [s0; [/C l`-number][*C  `-`= ][/C number]]
362
:: [s0; Same as [C l`-number `= l`-number `- number].]
363
:: [s0; [/C l`-number][*C  `*`= ][/C number]]
364
:: [s0; Same as [C l`-number `= l`-number `* number].]
365
:: [s0; [/C l`-number][*C  /`= ][/C number]]
366
:: [s0; Same as [C l`-number `= l`-number / number].]
367
:: [s0; [/C l`-number][*C  %`= ][/C number]]
368
:: [s0; Same as [C l`-number `= l`-number % number].]}}&]
369
[s0; &]
370
[s0; &]
371
[s1; Statements&]
372
[s0; &]
373
[ {{4508:5492h1;@(216) [s0; Statement]
374
:: [s0; Comments]
375
::^@2 [s0; [*C ;]]
376
:: [s0; Empty statement.]
377
:: [s0; [/C expression][*C ;]]
378
:: [s0; Expression. It gets evaluated.]
379
:: [s0; [*C `{ ][/C statement][*C ; ... `}]]
380
:: [s0; Compound statement.]
381
:: [s0; [*C if(][/C condition][*C ) ][/C statement]]
382
:: [s0; Conditional statement.]
383
:: [s0; [*C if(][/C condition][*C ) ][/C statement]&]
384
[s0; [*C else ][/C statement]]
385
:: [s0; Conditional statement with ]
386
:: [s0; [*C while(][/C condition][*C ) ][/C statement]]
387
:: [s0; Loop. Statement is performed as long as the [/ condition] is true.]
388
:: [s0; [*C do ][/C statement]&]
389
[s0; [*C while(][/C condition][*C )]]
390
:: [s0; Loop. Statement is performed once and then is repeated as long 
391
as the [/ condition] is true.]
392
:: [s0; [*C for(][/C init][*C , ][/C condition][*C , ][/C increment][*C )]&]
393
[s0; [*C -|][/C statement]]
394
:: [s0; Same as&]
395
[s0; [/C init][C ;]&]
396
[s0; [C while(][/C condition][C ) `{]&]
397
[s0; [C -|][/C statement][C ;]&]
398
[s0; [C -|][/C increment][C ;]&]
399
[s0; [C `}]]
400
:: [s0; [*C for(][/C l`-value][*C  in ][/C array][*C )]&]
401
[s0; [*C -|][/C statement]]
402
:: [s0; Same as&]
403
[s0; [C for(][/C l`-value][C  `= 0; ][/C l`-value][C  < count(][/C array][C );]&]
404
[s0; [C     ][/C l`-value][C `+`+)]&]
405
[s0; [C -|][/C statement]&]
406
[s0; ]
407
:: [s0; [*C for(][/C l`-value][*C  in ][/C map][*C )]&]
408
[s0; [*C -|][/C statement]]
409
:: [s0; Iterates through [/ map], assigning keys of elements with non`-void 
410
value to the [/ l`-value].]
411
:: [s0; [*C break;]]
412
:: [s0; Causes exit from innermost loop or switch statement.]
413
:: [s0; [*C switch(][/C value][*C ) ][/C statement]]
414
:: [s0; Matches [/ value] to all case statements inside the [/ statement], 
415
continues at the case with the same value, or with default if 
416
no such case exists and default is present. If neither matching 
417
case and default exists, does nothing.]
418
:: [s0; [*C case ][/C value][*C :]]
419
:: [s0; Switch case.]
420
:: [s0; [*C default:]]
421
:: [s0; Default switch case.]
422
:: [s0; [*C #][/C name][*C (][/C args][*C ) `{ ... `}]]
423
:: [s0; Same as [/C name][C  `= `@(][/C args][C ) `{ ... `};]]
424
:: [s0; [*C #.][/C name][*C (][/C args][*C ) `{ ... `}]]
425
:: [s0; Same as [C .][/C name][C  `= `@(][/C args][C ) `{ ... `};]]
426
:: [s0; [*C #:][/C name][*C (][/C args][*C ) `{ ... `}]]
427
:: [s0; Same as [C :][/C name][C  `= `@(][/C args][C ) `{ ... `};]]}}&]
428
[s0; &]
429
[s1; [3 Standard library]&]
430
[s0; &]
431
[ {{3528:6472h1;@(216) [s0; Function]
432
:: [s0; Comments]
433
::^@2 [s0; [*C is`_number(][/C x][*C )]]
434
:: [s0; Returns 1 if [/ x] is a number, 0 otherwise.]
435
:: [s0; [*C is`_array(][/C x][*C )]]
436
:: [s0; Returns 1 if [/ x] is a array, 0 otherwise.]
437
:: [s0; [*C is`_map(][/C x][*C )]]
438
:: [s0; Returns 1 if [/ x] is a map, 0 otherwise.]
439
:: [s0; [*C is`_void(][/C x][*C )]]
440
:: [s0; Returns 1 if [/ x] is void, 0 otherwise.]
441
:: [s0; [*C int(][/C number][*C )]]
442
:: [s0; Returns the [/ number] rounded towards zero.]
443
:: [s0; [*C to`_string(][/C x][*C )]]
444
:: [s0; Return [/ x] as array representing string representation.]
445
:: [s0; [*C to`_number(][/C x][*C )]]
446
:: [s0; Converts an array (string) to the number. Returns void if the 
447
string doesn`'t start with a number.]
448
:: [s0; [*C count(][/C x][*C )]]
449
:: [s0; If [/ x ]is void, returns 0.&]
450
[s0; If x is a number, returns 1.&]
451
[s0; If x is an array, returns number of elements of this array.&]
452
[s0; If x is an map, returns number of entries in this map with non`-void 
453
values.]
454
:: [s0; [*C keys(][/C map][*C )]]
455
:: [s0; Returns array of keys of map (ordering is the same as for [* values] 
456
function, otherwise is unspecified).]
457
:: [s0; [*C values(][/C map][*C )]]
458
:: [s0; Returns array of values of map (ordering is the same as for 
459
[* keys] function, otherwise is unspecified).]
460
:: [s0; [*C rand()]]
461
:: [s0; Returns random number in range 0..32767.]
462
:: [s0; [*C reverse(][/C array][*C )]]
463
:: [s0; Returns reversed [/ array].]
464
:: [s0; [*C sort(][/C array][*C )]]
465
:: [s0; Returns sorted [/ array].]
466
:: [s0; [*C order(][/C array][*C )]]
467
:: [s0; Returns sort order of elements in the [/ array].]
468
:: [s0; [*C IsDate(][/C map][*C )]]
469
:: [s0; Returns 1 if map contains `"day`", `"month`" and `"year`" keys, 
470
0 otherwise.]
471
:: [s0; [*C IsTime(][/C map][*C )]]
472
:: [s0; Returns 1 if map contains `"second`", `"minute`", `"hour`", 
473
`"day`", `"month`" and `"year`" members, 0 otherwise.]
474
:: [s0; [*C GetSysTime()]]
475
:: [s0; Returns current time as map with `"second`", `"minute`", `"hour`", 
476
`"day`", `"month`" and `"year`" members.]
477
:: [s0; [*C sin(][/C x][*C )]]
478
:: [s0; Returns sin of the argument.]
479
:: [s0; [*C cos(][/C x][*C )]]
480
:: [s0; Returns cos of the argument.]
481
:: [s0; [*C ToLower(][/C string][*C )]]
482
:: [s0; Returns lowercased string.]
483
:: [s0; [*C ToUpper(][/C string][*C )]]
484
:: [s0; Returns uppercased string.]
485
:: [s0; [*C OpenFileIn(][/C string][*C )]]
486
:: [s0; Opens file given as parameter for reading and returns FileIn 
487
object.]
488
:: [s0; [*C OpenFileOut(][/C string][*C )]]
489
:: [s0; Opens file given as parameter for writing and returns FileOut 
490
object.]
491
:: [s0; [*C OpenFileAppend(][/C string][*C )]]
492
:: [s0; Opens file given as parameter for appending and returns FileOut 
493
object.]}}&]
494
[s0; &]
495
[ {{1385:2687:5928h1;@(216) [s0; Object]
496
:: [s0; Method]
497
:: [s0; Comments]
498
::^@2|3 [s0; [*C FileIn]]
499
:: [s0; [*C IsEof()]]
500
::= [s0; Returns true when the end of file is reached.]
501
:: [s0;%- ]
502
::^ [s0; [*C Read()]]
503
::= [s0; Returns one byte from the file.]
504
:: [s0;%- ]
505
::^ [s0; [*C ReadLine()]]
506
::= [s0; Returns string containing all text till next newline character.]
507
:: [s0;%- ]
508
::^ [s0; [*C Close()]]
509
::= [s0; Closes file.]
510
::^|2 [s0; [*C FileOut]]
511
:: [s0; [*C Put(][/C int][*C )]]
512
::= [s0; Writes one byte to the file.]
513
:: [s0;%- ]
514
::^ [s0; [*C PutLine(][/C string][*C )]]
515
::= [s0; Writes the string to the file and adds a newline character.]
516
:: [s0;%- ]
517
::^ [s0; [*C Close()]]
518
::= [s0; Closes the file.]}}&]
519
[s0; ]]
uppsrc/ide/app.tpp/esc$en-us.tppi (working copy)
1 1
TITLE("Esc scripting language")
2 2
COMPRESSED
3
120,156,173,59,139,146,218,70,182,191,210,153,108,98,176,129,65,192,188,192,201,58,59,113,238,78,85,226,164,226,36,187,85,148,54,18,162,1,173,133,68,212,210,12,115,237,220,111,191,231,209,221,106,73,48,158,241,174,147,170,209,163,207,163,207,251,156,22,115,241,151,191,12,123,195,207,135,31,249,55,253,86,174,194,50,41,252,249,226,114,60,123,254,194,59,27,2,164,135,144,23,151,231,19,111,114,49,153,156,141,198,23,103,147,201,104,56,153,120,30,92,123,103,23,231,23,23,211,34,46,18,9,112,222,120,60,11,25,216,187,0,224,17,0,143,189,177,55,244,206,71,0,62,26,142,135,163,137,55,58,243,46,47,39,222,197,217,229,248,234,252,124,170,202,133,134,79,198,35,111,86,140,38,231,179,235,87,103,51,15,16,140,123,227,207,71,195,171,225,232,252,226,106,50,242,38,231,240,159,55,190,186,242,198,151,151,195,179,9,176,232,141,167,81,182,4,224,247,191,255,249,197,235,55,253,95,223,138,185,26,206,158,255,124,41,94,171,72,168,40,143,119,69,156,174,69,
4
18,166,235,50,92,203,47,125,124,47,244,31,92,19,43,161,226,237,46,145,7,86,139,56,45,100,186,148,75,177,202,114,33,183,11,185,92,226,251,56,21,191,38,69,188,13,11,25,188,8,94,136,112,183,75,226,40,44,226,44,85,131,58,137,155,2,41,20,247,59,153,72,165,122,226,54,76,74,41,178,60,150,128,122,89,81,186,139,139,141,97,4,169,230,171,48,66,82,244,252,26,169,156,254,74,180,112,191,3,141,246,86,230,247,6,232,94,22,226,143,50,46,36,172,192,7,112,97,144,187,44,121,51,241,27,177,128,44,41,124,50,154,137,219,44,94,42,189,232,155,36,1,38,243,56,92,0,195,98,19,222,74,122,173,25,95,72,144,132,20,161,82,241,58,5,254,195,244,94,100,197,70,230,252,126,32,126,195,181,136,27,64,81,178,233,26,120,163,119,14,19,99,38,89,151,84,152,46,133,220,239,114,16,19,200,81,68,97,10,212,68,33,85,161,229,143,32,41,188,21,37,162,21,243,87,29,111,116,57,24,14,70,103,103,93,144,70,240,59,46,240,197,170,76,35,212,
5
196,64,111,46,45,65,111,185,217,222,27,186,67,225,173,146,44,36,109,239,50,16,184,94,38,58,81,150,3,11,187,44,37,77,23,153,184,230,237,44,179,18,36,210,29,136,215,251,16,229,171,68,182,50,64,9,136,61,15,19,53,173,239,209,51,127,7,224,45,238,181,12,250,87,231,252,224,213,4,54,114,38,134,123,120,220,255,208,255,224,159,158,138,141,220,135,75,25,129,125,37,245,69,176,70,152,69,89,84,52,95,47,192,213,134,248,191,89,179,136,211,48,191,175,45,10,158,237,131,103,248,158,87,68,155,48,15,35,224,158,236,170,237,29,170,220,237,178,188,80,104,84,91,208,202,117,208,79,226,119,96,192,59,216,48,217,59,169,70,203,129,244,172,140,224,195,60,15,239,173,89,209,13,60,67,227,95,202,28,116,154,131,198,179,173,8,163,8,149,170,228,31,165,76,35,150,43,155,20,50,192,40,69,39,101,59,96,156,224,33,81,82,130,95,130,58,8,177,89,134,232,213,14,68,183,138,97,241,33,59,9,230,129,239,139,5,108,250,157,44,26,10,51,34,130,37,
6
44,33,150,145,220,238,138,123,166,172,149,24,204,133,215,19,163,158,24,247,196,164,39,0,196,111,96,192,247,193,28,87,4,62,172,17,140,17,177,17,30,16,103,90,132,49,72,207,221,87,29,199,201,223,101,146,100,193,137,195,8,248,55,108,20,34,7,218,37,176,249,236,239,193,51,160,243,76,242,159,164,246,39,11,158,29,100,11,153,18,193,115,17,38,171,144,248,34,212,214,241,148,241,188,82,33,95,74,220,1,27,117,195,208,62,4,122,130,160,182,5,118,80,33,2,84,102,54,199,8,114,89,64,152,187,5,44,11,136,82,5,104,59,204,151,214,61,65,4,101,90,52,162,229,55,100,11,168,53,139,25,168,24,165,43,177,203,179,219,120,169,49,150,11,142,216,45,13,11,84,49,91,104,150,55,124,50,12,230,67,35,22,188,241,2,95,4,95,137,113,157,143,239,226,92,21,134,7,203,130,168,98,131,66,13,196,144,26,246,45,234,128,222,111,108,235,141,92,131,179,220,74,134,208,118,26,130,118,239,40,132,46,197,82,98,60,133,116,82,237,123,149,131,111,160,76,
7
33,1,89,14,166,109,107,238,123,184,91,144,77,18,30,96,185,119,0,96,132,0,180,122,81,194,202,20,72,20,209,160,37,38,194,92,223,7,80,169,217,96,11,134,116,218,9,129,78,95,180,160,255,177,145,169,150,89,172,216,188,48,118,224,30,243,160,207,249,165,67,118,130,6,144,177,69,229,241,122,83,64,30,89,74,220,83,99,51,95,249,221,94,133,17,226,9,36,210,104,35,193,181,151,3,241,29,224,78,52,94,88,5,193,58,75,131,126,90,83,69,37,120,101,69,183,67,201,32,105,160,103,109,186,167,45,0,37,176,223,133,84,19,80,106,174,114,35,153,68,148,75,212,98,177,137,45,194,134,45,4,39,175,49,158,4,39,71,204,7,149,115,140,43,82,26,218,139,235,162,64,53,92,46,43,195,129,123,203,118,195,248,247,136,30,205,29,242,213,246,41,170,221,27,213,238,187,199,16,252,76,210,175,98,2,134,132,90,56,200,22,24,241,128,97,208,11,164,29,88,109,34,180,130,226,73,54,147,39,193,6,243,93,6,69,19,209,110,154,147,35,36,166,67,104,200,
8
74,78,25,194,175,132,2,102,149,23,182,158,130,5,128,215,63,164,33,222,44,45,159,130,231,61,137,40,122,42,24,62,1,63,68,91,47,104,24,198,79,97,206,225,142,197,97,197,182,221,130,176,151,71,133,99,57,204,242,214,203,233,19,29,216,2,138,169,208,174,140,143,186,77,52,96,130,7,33,123,117,69,53,57,154,30,212,227,163,120,26,30,49,2,138,41,90,96,24,84,77,210,170,28,191,94,207,237,64,200,53,199,166,192,33,119,73,24,201,101,195,2,21,26,122,112,2,69,215,36,56,153,213,50,169,130,196,49,21,20,33,121,209,254,159,123,88,195,185,148,50,85,154,221,33,44,60,7,224,58,207,111,33,39,66,181,104,51,148,85,53,181,17,218,163,221,218,201,21,133,39,176,223,192,171,81,29,43,84,20,208,129,72,182,205,226,206,160,232,29,192,129,217,159,43,54,253,84,151,111,88,20,152,58,164,66,12,210,129,152,102,236,93,47,133,230,71,170,102,206,96,220,47,64,32,204,234,147,245,44,12,168,221,100,3,7,212,216,7,225,94,190,52,210,49,87,
9
35,123,53,254,111,176,81,73,221,94,53,240,98,177,74,41,93,161,139,115,43,162,155,189,67,153,204,150,129,90,105,88,17,57,221,15,132,17,136,159,170,140,54,96,28,74,66,12,52,214,66,125,85,154,9,185,90,201,168,48,181,246,54,220,25,107,249,1,46,77,125,41,222,201,123,147,90,119,33,20,53,232,27,176,111,168,203,212,64,188,201,114,104,49,170,66,74,29,76,70,214,173,208,44,185,86,7,106,6,75,195,103,224,77,48,71,162,228,23,205,190,79,183,151,26,20,119,136,152,138,77,88,16,149,52,43,170,206,18,61,53,142,202,36,204,57,113,59,77,104,163,41,29,136,95,48,221,222,129,60,25,26,29,157,94,235,84,136,68,128,39,227,102,32,27,212,66,206,145,34,151,91,168,41,177,226,4,174,238,171,178,11,128,30,220,90,171,127,165,196,140,237,170,131,12,212,181,144,150,157,131,244,17,2,13,2,25,68,245,99,15,164,37,163,101,123,109,56,136,87,29,211,230,118,42,110,186,160,168,247,98,48,24,136,224,207,134,172,21,237,132,26,34,208,179,220,
10
71,114,135,134,214,19,119,24,54,67,183,177,135,216,35,67,176,15,211,224,167,54,132,30,50,10,168,167,104,0,97,242,184,22,52,119,74,21,231,54,163,26,137,205,4,196,71,42,214,140,252,56,223,214,45,166,90,133,81,180,174,8,99,224,92,65,171,204,154,166,174,188,112,248,1,137,2,74,234,176,8,33,211,230,101,84,148,57,90,251,47,25,160,122,167,107,179,127,103,11,33,67,21,203,188,103,229,3,110,59,128,190,49,1,199,85,247,224,62,196,129,110,128,91,201,97,207,75,43,158,159,88,78,5,39,4,31,156,184,251,110,237,211,84,150,104,57,180,219,69,187,191,13,222,7,127,82,67,219,114,70,122,99,27,88,45,71,122,14,169,9,219,191,224,100,234,65,102,13,78,22,178,192,155,17,220,140,134,211,224,100,50,132,250,148,205,137,215,143,40,57,64,89,0,57,109,200,47,17,243,182,206,162,137,58,78,55,169,227,83,18,110,23,203,208,132,168,239,249,14,83,11,89,60,244,45,123,25,149,5,206,156,40,144,242,144,139,151,185,189,125,12,110,149,45,203,
11
232,88,115,255,202,175,38,26,77,97,188,130,226,21,183,2,109,105,153,167,188,163,253,236,128,211,152,16,146,56,228,209,194,204,84,172,165,92,168,10,87,49,129,132,182,189,61,56,89,152,174,178,140,234,133,163,188,232,18,130,16,194,158,215,73,182,0,203,180,61,51,192,215,185,189,89,25,54,195,124,93,114,221,141,109,178,4,17,153,22,165,33,163,47,29,25,145,31,59,53,109,156,238,202,34,232,103,101,1,127,43,148,29,158,199,152,123,163,139,29,181,143,201,125,183,81,201,206,159,215,40,98,104,242,195,194,109,102,185,252,210,216,147,24,187,26,78,157,86,198,169,157,49,84,84,11,178,127,109,50,3,113,147,114,234,192,4,217,195,30,40,70,25,129,184,32,117,132,91,9,219,99,70,161,117,194,24,1,118,57,199,241,203,250,214,175,200,32,47,56,221,163,116,220,168,103,166,170,220,106,109,193,22,72,95,84,18,194,10,136,145,157,152,59,156,245,109,23,31,115,213,179,190,13,230,113,224,183,173,234,167,138,37,116,20,202,96,75,158,184,27,251,86,18,249,46,
12
120,184,209,106,116,27,214,60,93,64,94,212,150,68,60,29,77,2,38,236,37,241,74,218,144,23,38,192,74,202,141,48,236,101,139,114,176,70,198,214,76,151,96,75,225,109,24,39,40,171,6,7,159,163,49,63,228,82,222,44,246,206,134,179,31,175,112,226,108,230,201,212,188,66,148,144,251,66,213,249,252,205,106,30,4,69,181,1,6,130,85,134,118,33,174,65,235,113,26,197,52,119,237,160,82,81,233,32,50,200,164,184,137,30,247,84,108,239,97,178,219,132,16,209,226,200,25,111,66,38,110,200,244,119,223,182,210,38,110,29,130,84,173,17,138,6,212,115,229,166,241,35,215,203,152,170,128,50,86,27,44,198,55,185,212,243,118,148,115,53,92,55,130,48,177,172,225,54,76,166,241,116,234,120,239,225,241,37,224,55,3,195,36,139,26,51,226,129,243,54,78,113,216,18,201,122,136,114,22,112,244,169,111,239,123,68,233,236,193,153,184,70,232,160,198,138,122,38,118,53,150,2,239,88,247,108,51,140,150,73,21,218,20,250,51,243,227,128,84,45,136,206,19,78,194,233,
13
64,209,160,156,201,217,109,205,128,186,40,106,92,125,183,201,148,172,199,242,24,205,235,54,123,39,151,61,26,70,112,89,6,126,80,229,21,158,156,55,52,255,153,143,207,151,199,70,139,192,192,128,157,113,230,60,121,3,26,214,158,202,62,186,199,99,28,138,245,77,181,209,218,78,119,86,77,124,25,165,46,132,60,135,144,87,167,212,194,241,25,45,154,57,120,60,7,209,225,8,177,203,179,53,68,169,173,204,131,103,170,30,47,104,72,104,202,71,221,167,146,253,70,16,70,80,94,218,148,177,111,185,227,49,31,200,215,73,162,84,86,39,53,219,33,235,214,175,137,177,194,132,118,116,254,184,232,89,3,165,149,218,156,172,207,116,104,228,12,128,116,156,208,37,235,194,182,194,206,172,27,218,193,18,7,194,149,190,51,91,167,62,4,204,118,45,11,203,42,198,67,102,21,242,5,130,57,249,98,133,131,225,30,230,175,20,56,192,153,98,5,6,85,103,151,55,106,25,215,8,132,95,219,52,132,87,48,253,123,66,0,129,2,188,192,162,209,8,244,102,13,253,129,248,113,133,
14
243,143,28,19,221,163,195,4,152,53,99,119,38,133,149,187,104,65,30,174,83,180,176,220,83,16,144,71,98,11,18,218,148,188,69,69,175,180,172,192,145,236,182,233,53,215,33,168,79,135,132,7,1,178,94,28,90,59,60,197,237,210,60,199,61,140,168,13,117,178,117,204,22,132,1,160,71,61,68,79,252,175,204,51,83,46,160,36,208,233,179,92,55,216,148,16,104,133,29,199,85,193,196,95,65,77,45,129,106,207,61,195,100,154,62,116,14,230,224,244,212,86,91,169,78,72,116,52,136,250,68,83,136,163,119,224,45,88,174,45,227,91,106,239,237,96,135,200,83,15,6,49,9,115,88,150,199,197,125,79,63,207,118,219,12,74,31,156,165,210,73,43,97,133,197,155,120,189,193,174,208,172,119,116,36,222,191,159,76,206,47,167,103,103,227,209,198,155,189,234,140,188,243,46,157,121,139,31,53,85,127,58,229,7,215,217,150,118,12,15,254,245,106,196,7,227,215,96,40,84,182,251,193,28,175,32,134,250,208,207,25,16,219,114,8,168,171,230,252,122,96,222,158,94,35,32,
15
66,13,124,238,147,12,216,91,220,93,72,131,15,70,29,156,192,37,175,193,14,199,162,208,244,73,55,154,3,154,130,187,60,240,129,158,153,34,3,31,187,76,113,53,50,55,171,31,194,199,195,213,30,61,231,41,112,11,55,207,108,237,88,150,183,170,135,178,7,199,199,31,167,55,197,75,40,110,143,17,115,207,202,12,49,40,215,8,132,14,75,142,80,232,185,219,96,51,104,172,152,30,220,168,163,17,179,16,122,187,121,181,210,84,45,31,223,217,17,186,142,172,31,166,91,201,182,57,84,30,52,169,115,12,244,59,76,103,173,252,174,69,124,67,9,155,16,235,85,142,115,201,66,235,141,128,6,78,87,68,29,188,57,39,212,141,7,152,104,143,162,196,66,70,25,215,154,58,110,225,188,198,33,192,77,41,90,94,135,7,95,49,70,240,219,56,4,102,193,7,96,37,150,26,62,213,150,207,129,139,100,229,119,93,111,97,60,184,153,142,143,156,225,21,84,17,194,55,4,31,216,93,143,11,17,120,96,217,243,81,176,53,94,245,38,255,35,62,65,244,244,164,98,133,9,224,
16
130,98,60,62,245,206,204,118,144,125,172,93,252,36,232,87,227,227,234,85,63,232,87,175,28,124,81,206,134,127,186,148,230,210,126,56,161,103,76,68,108,216,164,213,247,27,184,126,165,162,108,27,167,165,114,229,76,139,255,175,185,248,111,49,116,178,119,177,50,31,196,208,73,79,3,234,51,159,200,91,152,239,117,134,129,98,100,0,245,22,149,50,28,15,109,214,80,130,178,70,79,12,57,105,32,133,102,124,168,164,128,66,169,185,143,243,10,69,105,8,255,4,137,32,232,199,70,86,130,14,168,224,137,21,153,251,181,137,43,180,154,134,200,177,144,10,54,98,126,67,71,124,107,223,178,123,26,250,63,83,7,231,248,45,173,243,121,246,15,217,23,109,136,217,214,163,255,166,194,26,216,27,186,248,1,250,220,216,126,35,229,106,193,129,59,109,129,125,11,249,84,29,7,248,162,77,39,91,150,73,246,160,96,94,52,183,126,237,30,156,216,253,63,188,195,23,45,202,223,232,241,195,17,86,33,196,55,33,222,150,139,2,251,56,13,84,103,24,116,92,241,252,242,229,163,120,
17
134,154,37,163,8,162,97,33,134,220,99,10,166,222,178,122,12,184,170,243,49,176,107,5,186,121,104,179,72,189,201,250,38,94,65,189,44,87,197,145,237,126,253,245,17,24,58,4,105,111,215,37,247,144,225,126,253,208,203,151,208,16,61,4,91,189,118,75,164,29,84,230,10,66,39,39,16,253,190,173,125,71,27,90,25,150,70,245,234,235,227,175,136,185,163,112,246,229,113,206,92,179,172,201,142,244,200,70,246,21,226,169,71,180,215,127,148,97,2,53,100,107,67,21,216,103,109,168,155,84,186,112,199,116,21,124,217,146,232,223,184,113,134,66,252,152,39,252,235,24,204,62,203,143,193,124,56,6,83,7,113,68,241,37,242,118,56,184,35,111,88,34,80,47,87,141,4,116,88,87,80,20,164,203,234,49,246,165,18,239,48,14,246,196,191,75,128,81,239,226,221,78,46,143,144,254,128,236,30,38,13,236,30,160,140,173,198,127,70,152,82,203,95,125,231,102,170,111,220,144,97,7,164,85,131,5,157,101,10,157,104,42,177,108,64,129,54,123,47,203,65,173,176,209,209,67,
18
91,93,115,183,60,66,55,249,182,102,117,181,184,70,67,211,134,221,219,2,178,90,139,20,170,107,125,250,234,55,248,169,69,231,3,158,94,199,107,14,188,191,114,111,94,24,239,127,0,117,255,211,80,247,31,129,250,249,167,161,126,254,113,212,167,159,132,249,244,227,136,191,248,36,196,95,84,136,255,108,12,171,245,136,224,109,1,22,71,133,98,189,243,61,27,66,231,59,185,106,118,190,118,249,71,90,223,89,21,21,233,68,76,25,184,102,253,86,57,129,239,192,56,78,115,83,224,196,72,29,240,14,192,16,188,23,186,57,210,92,205,244,96,190,22,220,233,144,178,205,129,46,76,227,85,199,143,140,199,114,223,224,171,3,219,172,124,250,211,80,213,42,120,9,1,240,209,100,184,253,106,208,186,219,196,137,124,12,231,223,103,217,110,80,41,142,134,69,50,199,209,155,25,245,96,99,206,231,215,212,181,106,132,190,137,151,205,93,46,179,214,174,64,21,204,15,119,200,6,67,247,113,76,100,102,240,72,179,62,254,74,136,107,225,39,177,7,76,224,97,17,79,58,226,106,48,
19
97,0,248,222,22,254,126,183,166,145,254,135,3,178,211,30,102,62,14,152,107,204,51,243,64,111,186,182,103,48,74,243,186,255,97,94,51,206,218,243,138,17,251,188,178,91,103,47,38,3,248,116,172,102,199,2,79,231,158,16,186,248,248,128,173,246,232,165,158,27,216,42,168,107,153,195,127,238,90,108,170,28,38,234,60,180,71,30,71,183,131,99,172,71,108,230,6,191,251,47,248,140,39,43,215,27,51,1,235,57,95,162,208,49,133,59,255,33,199,105,126,211,162,191,160,112,247,226,218,208,34,151,225,187,42,22,93,135,165,194,143,67,247,113,97,38,206,169,204,105,154,152,128,81,99,167,175,128,76,180,57,30,22,248,125,199,183,137,252,160,159,254,16,194,34,238,49,180,128,240,43,160,36,209,231,111,54,78,227,92,2,71,159,122,15,21,162,30,13,154,161,99,199,185,42,159,1,19,104,125,50,170,191,213,3,182,233,185,57,25,229,1,187,253,10,10,247,171,10,165,191,152,214,75,148,115,32,12,203,101,76,147,220,45,242,77,7,19,8,231,2,48,142,30,4,12,
20
73,53,22,174,114,37,77,0,40,15,93,211,84,134,203,2,197,247,238,122,141,183,90,167,127,72,101,20,208,92,255,57,226,166,121,140,51,230,170,14,111,205,74,80,210,55,54,151,86,35,28,62,72,154,183,225,102,46,137,193,167,208,24,60,145,200,244,83,136,76,31,67,164,86,21,120,179,49,134,104,254,241,64,18,47,114,253,139,22,91,21,140,38,23,87,211,139,179,145,215,168,10,190,211,39,139,31,41,10,240,139,42,174,71,104,27,123,39,63,152,161,136,135,134,56,199,119,116,32,174,203,151,163,19,32,196,72,113,234,209,8,245,39,230,15,224,131,160,242,104,108,52,223,124,0,23,125,63,246,56,100,124,194,114,12,23,134,228,231,182,76,108,227,210,193,192,12,142,114,44,121,232,24,234,14,116,169,232,88,198,197,87,100,193,239,170,200,193,31,143,112,167,249,10,205,183,168,118,38,71,31,145,19,100,245,172,62,105,210,232,143,40,26,10,156,91,153,83,100,209,168,59,140,174,107,226,50,3,214,226,4,167,164,6,166,27,22,158,240,173,240,114,45,140,161,153,
21
184,195,146,125,221,142,204,18,175,181,36,53,166,97,150,84,159,197,184,63,144,161,115,208,218,39,44,14,6,50,135,3,240,213,71,152,4,78,103,229,7,50,83,237,240,3,115,89,199,230,199,150,194,89,118,252,49,163,50,7,240,29,58,160,165,159,77,170,42,226,135,252,195,177,249,115,77,197,119,190,28,176,214,70,191,19,73,237,7,111,181,161,53,131,61,134,25,125,170,247,72,118,144,245,39,51,131,63,101,235,180,89,208,191,112,211,66,7,73,243,79,84,134,131,193,120,116,113,126,81,195,128,31,133,43,217,113,106,169,54,58,94,179,172,198,65,181,41,126,150,23,15,130,43,250,142,241,48,48,9,229,163,208,188,236,208,15,191,14,34,189,81,223,66,25,240,128,138,40,216,160,82,236,207,225,130,147,101,120,31,156,224,55,137,91,120,182,9,78,40,121,7,39,247,50,204,225,6,181,115,52,32,221,168,95,226,237,83,233,241,216,69,147,132,58,165,144,124,189,201,202,156,175,30,230,104,43,233,51,160,163,76,253,143,44,222,222,51,99,109,134,162,50,207,233,27,
22
194,152,109,208,58,225,127,141,175,118,143,237,255,63,157,39,25,44,
3
120,156,173,59,139,114,219,182,178,191,130,56,39,141,236,200,178,168,135,237,200,73,111,122,220,244,30,207,164,73,167,105,122,238,140,134,45,41,17,146,208,80,164,74,80,182,124,146,158,111,191,187,139,7,65,136,146,237,164,105,103,44,145,216,7,246,189,11,104,204,254,241,143,110,187,251,184,123,199,191,209,247,124,22,175,211,50,28,79,206,251,23,71,207,130,97,23,32,3,132,60,59,63,29,4,131,179,193,96,216,235,159,13,7,131,94,119,48,8,2,248,28,12,207,78,207,206,70,165,40,83,14,112,65,191,127,17,43,224,224,12,128,123,0,220,15,250,65,55,56,237,1,120,175,219,239,246,6,65,111,24,156,159,15,130,179,225,121,255,249,233,233,72,174,39,26,62,237,247,130,139,178,55,56,189,184,124,53,188,8,0,65,191,221,127,220,235,62,239,246,78,207,158,15,122,193,224,20,254,11,250,207,159,7,253,243,243,238,112,0,44,6,253,209,52,79,0,248,211,239,127,61,121,253,246,248,195,123,54,150,221,11,54,62,250,249,156,189,150,83,38,167,133,88,149,34,
4
155,179,52,206,230,235,120,206,195,111,66,90,162,255,224,34,33,153,20,203,85,202,27,150,51,145,149,60,75,120,194,102,121,193,248,114,194,147,4,223,139,140,125,72,75,177,140,75,30,61,139,158,177,120,181,74,197,52,46,69,158,201,78,157,196,85,137,20,202,219,21,79,185,148,109,118,29,167,107,206,242,66,112,64,157,84,148,110,68,185,48,140,32,213,98,22,79,145,20,61,191,68,42,39,31,136,22,110,185,163,209,94,243,226,214,0,221,242,146,253,185,22,37,135,21,248,0,62,24,228,46,75,193,5,251,149,88,64,150,36,62,233,93,176,235,92,36,82,47,250,46,77,129,201,66,196,19,96,152,45,226,107,78,175,53,227,19,14,146,224,44,150,82,204,51,224,63,206,110,89,94,46,120,161,222,119,216,175,184,22,113,3,40,74,54,155,3,111,244,206,97,162,175,72,214,37,21,103,9,227,155,85,1,98,2,57,178,105,156,1,53,86,114,89,106,249,35,72,6,111,217,26,209,178,241,171,86,208,59,239,116,59,189,225,240,16,164,17,253,142,11,66,54,91,103,83,
5
212,68,71,111,46,91,131,222,10,179,189,183,244,13,133,55,75,243,152,180,189,202,65,224,122,25,107,77,243,2,88,88,229,25,105,186,204,217,165,218,78,146,175,65,34,135,29,246,122,19,163,124,37,203,103,6,40,5,177,23,113,42,71,245,61,6,230,111,7,28,198,253,204,163,227,231,167,250,65,119,3,15,142,63,31,127,30,191,26,176,147,19,182,224,155,56,225,83,48,174,52,52,75,96,5,115,150,228,211,210,121,57,1,31,235,226,255,206,138,137,200,226,226,214,44,137,158,110,162,167,248,214,190,159,46,226,34,158,2,211,100,78,13,94,33,215,171,85,94,148,18,141,105,9,218,184,140,142,83,241,17,12,119,5,27,37,59,39,149,232,253,147,126,165,17,120,92,20,241,173,53,39,250,2,207,208,232,19,94,128,46,11,208,116,190,100,241,116,138,202,148,252,207,53,207,166,74,158,202,148,144,1,133,146,181,50,165,127,133,19,60,99,154,174,193,31,65,13,132,216,44,67,244,114,5,82,155,9,88,220,100,31,209,56,10,67,54,129,93,127,228,165,175,40,124,169,
6
228,99,37,196,151,171,242,86,145,181,98,28,179,160,205,122,109,214,111,179,65,155,13,89,84,127,19,141,241,93,20,194,91,166,240,105,92,132,5,36,153,149,177,0,193,185,91,178,24,14,254,197,211,52,143,14,234,76,128,67,195,14,33,84,160,33,2,151,79,255,21,61,5,66,79,185,250,147,214,254,228,209,83,216,227,22,179,44,58,98,113,58,139,137,39,131,216,250,153,52,142,182,150,200,147,100,55,192,135,103,16,218,103,64,63,16,196,150,192,13,42,130,129,170,204,206,20,134,130,151,16,214,174,1,205,4,162,82,9,90,142,139,196,186,35,236,127,157,149,94,116,252,142,108,0,181,101,49,3,21,163,108,201,86,69,126,45,18,141,113,61,81,17,122,75,179,12,85,171,44,51,47,60,213,198,209,184,107,245,4,95,130,40,100,209,75,214,175,243,241,131,40,100,105,120,176,44,176,42,22,72,84,128,128,84,176,217,162,14,232,67,111,91,111,249,28,156,228,154,43,8,109,159,49,232,247,134,66,102,194,18,142,241,19,210,71,181,239,89,1,62,129,50,133,132,99,
7
57,24,109,91,241,113,128,187,5,217,164,113,3,203,237,6,128,30,2,208,234,201,26,86,102,64,162,156,118,182,196,68,152,235,251,0,42,53,19,220,130,33,157,182,98,160,115,204,182,160,255,189,224,153,150,153,144,202,190,48,102,224,30,139,232,88,229,147,22,217,9,26,64,174,44,170,16,243,69,9,121,35,225,184,39,111,51,47,195,195,118,133,17,226,8,36,206,233,130,131,75,39,29,246,3,224,78,53,94,88,5,193,57,207,162,227,172,166,138,74,240,210,138,110,133,146,65,210,64,207,218,116,91,91,0,74,96,179,138,169,6,160,84,92,229,66,50,137,105,193,81,139,229,66,88,132,158,45,68,7,175,49,148,68,7,59,204,7,149,179,139,43,82,26,218,139,235,163,64,53,78,146,202,112,224,187,101,219,51,254,13,162,71,115,135,252,180,124,136,106,55,70,181,155,195,93,8,126,38,233,87,49,1,67,66,45,28,228,19,12,119,192,48,232,5,242,13,172,54,145,89,66,177,196,253,24,76,176,209,120,149,67,145,68,180,125,115,114,132,164,232,16,26,178,146,19,
8
5,17,86,66,1,179,42,74,91,63,193,2,192,27,54,105,72,109,150,150,143,192,243,30,68,20,61,21,12,159,128,247,209,214,11,60,195,248,41,46,84,184,83,226,176,98,91,46,65,216,201,78,225,88,14,243,98,235,229,232,129,14,108,1,217,136,105,87,198,71,135,62,26,48,193,70,200,118,93,81,62,71,163,70,61,222,139,167,238,14,35,160,152,162,5,134,65,213,100,173,202,241,235,245,219,10,132,92,115,108,10,28,124,149,198,83,158,120,22,40,209,208,163,3,40,182,6,209,193,133,121,8,41,99,196,40,54,170,215,155,255,219,192,91,155,73,41,77,101,249,13,2,194,43,128,244,56,126,15,25,17,106,67,155,159,172,162,169,105,208,254,236,86,76,174,32,2,134,221,5,126,234,213,177,66,49,1,253,6,87,150,89,222,24,20,237,6,28,152,255,85,157,166,159,234,162,13,203,2,124,95,71,12,178,129,136,102,172,93,47,133,86,135,75,63,99,40,220,207,64,40,138,213,7,107,153,25,80,187,73,15,7,84,212,141,112,47,94,24,233,152,79,61,251,169,255,
9
119,176,81,73,221,126,242,240,98,137,74,9,93,162,131,171,198,67,183,118,77,121,204,86,128,90,105,88,15,57,189,14,4,17,136,158,114,61,93,128,113,72,14,17,208,88,11,117,81,89,206,248,108,198,167,165,169,176,151,241,202,88,203,143,240,209,148,150,236,35,191,53,137,117,21,67,73,131,158,1,251,134,170,76,118,216,219,188,128,158,162,42,163,100,99,42,178,78,133,102,169,42,116,160,102,176,120,30,3,111,162,49,18,37,223,240,187,60,221,76,106,80,220,33,98,42,23,113,73,84,178,188,172,250,72,244,83,49,93,167,113,161,210,182,211,114,122,45,104,135,253,130,201,246,6,228,169,160,209,205,233,181,78,132,72,4,120,50,110,6,178,65,45,20,42,78,20,124,9,21,37,214,155,192,213,109,85,116,1,208,222,173,109,117,171,148,150,177,57,117,144,129,186,38,220,178,211,72,31,33,208,32,144,65,84,63,118,62,90,50,90,182,151,134,3,49,107,153,166,182,85,113,115,8,138,250,196,58,157,14,139,254,242,100,45,105,39,212,6,129,158,249,102,202,87,104,
10
104,109,118,131,65,51,118,219,120,136,61,60,6,251,48,237,124,102,3,104,147,81,64,53,69,227,6,147,197,181,160,85,139,84,113,110,243,169,145,216,5,6,72,42,213,140,252,84,182,173,91,76,181,10,195,104,93,17,198,192,85,253,44,115,107,154,186,238,194,81,7,164,9,40,168,227,50,134,60,91,172,167,229,186,64,107,255,37,7,84,31,117,101,246,71,62,97,60,150,130,23,109,43,31,112,219,14,116,139,41,56,174,188,5,247,33,14,116,219,187,149,26,54,106,105,197,243,3,139,169,232,128,224,163,3,119,223,91,251,52,117,37,90,14,237,118,178,221,213,70,159,162,191,168,141,221,114,70,122,99,59,87,45,71,122,14,185,9,27,192,232,96,20,64,94,141,14,38,188,196,47,61,248,210,235,142,162,131,65,23,170,83,101,78,106,125,143,146,3,20,5,144,212,186,234,37,98,94,214,89,52,81,199,105,38,117,124,74,227,229,36,137,77,136,122,163,190,97,106,33,139,135,174,101,195,167,235,18,39,76,20,72,213,72,75,45,115,59,122,1,110,149,39,235,233,174,
11
150,254,85,88,13,50,124,97,188,130,210,21,183,2,77,233,186,200,212,142,54,23,13,78,99,66,72,234,144,71,11,51,51,176,45,229,66,77,56,19,4,18,219,230,214,163,62,154,229,57,85,11,59,185,168,10,8,194,6,27,158,167,249,4,204,210,182,203,128,194,171,36,174,102,134,201,184,152,175,85,205,141,45,50,7,1,153,246,196,147,208,55,142,132,200,139,157,122,86,100,171,117,25,29,231,235,18,254,86,40,91,106,6,99,190,27,77,172,168,117,76,111,15,189,42,118,124,84,163,136,129,41,140,75,183,145,85,165,151,198,158,10,236,104,84,226,180,18,206,236,124,161,162,90,146,245,107,131,233,176,171,76,37,14,76,143,109,236,127,4,10,9,228,5,137,35,94,114,216,158,98,20,218,38,140,16,96,149,99,156,187,204,175,195,138,12,242,130,147,60,74,198,94,53,51,146,235,165,214,24,108,129,116,70,229,32,172,128,8,217,18,170,187,153,95,31,226,99,85,243,204,175,163,177,136,194,109,155,250,169,98,9,221,132,242,87,162,6,236,198,186,37,71,190,75,53,
12
216,216,106,114,125,107,154,64,86,212,214,68,60,237,76,1,38,232,165,98,198,109,192,139,83,96,37,83,77,48,236,101,137,114,176,86,166,108,153,62,130,45,197,215,177,72,81,86,30,7,143,209,160,247,57,84,112,33,130,97,247,226,221,115,156,46,155,217,49,53,174,16,35,248,166,148,117,62,127,181,154,7,65,81,101,128,97,96,150,163,93,176,75,208,186,200,166,130,102,172,45,84,42,42,29,68,6,121,20,55,209,86,253,148,178,247,56,93,45,98,136,103,98,234,204,52,33,15,123,50,253,61,180,109,180,137,90,77,144,114,107,124,162,1,245,12,217,55,126,228,58,17,84,3,172,133,92,96,41,190,40,184,158,173,163,156,171,65,186,17,132,137,100,158,219,40,50,222,211,145,227,189,126,180,7,204,206,160,48,205,167,213,68,184,83,127,39,50,156,177,76,185,121,61,170,191,86,113,199,11,53,111,16,159,195,189,51,95,157,162,107,26,251,105,155,176,229,45,5,174,177,222,89,230,24,37,211,42,170,73,244,100,197,142,3,82,181,30,58,63,56,137,166,5,197,130,
13
116,230,101,215,53,211,57,68,33,227,234,155,69,46,121,61,134,11,52,172,235,252,35,79,218,52,130,80,229,24,120,64,149,79,212,152,220,211,249,163,16,159,39,187,6,138,192,64,71,185,225,133,243,228,45,232,86,251,168,242,206,13,30,214,80,164,247,86,181,14,47,106,51,94,133,79,87,63,1,11,171,229,193,14,58,173,195,71,244,250,162,142,37,112,208,132,205,113,97,85,228,115,136,77,75,94,68,79,101,61,74,208,88,208,148,140,186,55,37,171,157,66,240,64,89,105,3,198,94,229,70,13,246,64,182,78,226,164,82,58,173,217,13,217,180,126,77,156,149,38,160,163,203,139,178,109,109,147,86,106,83,178,158,210,162,33,51,0,210,193,193,33,89,22,182,18,118,76,237,105,6,203,26,8,82,250,155,217,58,245,30,96,178,115,94,90,86,49,10,42,86,33,75,32,152,147,37,102,56,10,110,99,214,202,128,3,156,34,86,96,80,105,30,170,141,90,198,53,2,22,214,54,13,65,21,204,254,150,16,64,120,0,15,176,104,52,2,189,89,67,191,195,222,205,112,226,
14
81,96,122,187,119,112,0,147,86,216,157,217,96,229,42,90,144,91,217,68,137,201,59,239,0,97,164,182,8,161,29,241,107,212,242,76,11,10,60,200,238,153,94,171,210,3,149,233,26,91,0,65,177,94,14,122,179,27,247,228,161,54,192,201,231,66,217,14,186,125,155,58,134,54,251,15,47,114,83,30,160,12,208,213,243,66,183,211,148,0,104,133,29,189,85,33,4,4,59,131,26,154,67,243,226,156,79,42,154,240,14,58,5,222,209,140,159,216,2,43,211,57,136,78,254,80,153,104,7,98,250,17,92,5,75,180,68,92,83,63,111,39,57,196,1,53,93,16,140,48,109,229,133,40,111,219,250,121,190,90,230,80,237,224,232,148,14,82,9,43,44,94,136,249,2,219,64,179,222,81,16,251,244,105,48,56,61,31,13,135,253,222,34,184,120,213,234,5,167,135,234,84,251,157,166,26,142,70,234,193,101,190,164,77,195,131,223,94,245,244,209,247,201,37,202,40,28,31,93,66,235,22,226,87,136,159,234,107,24,90,80,219,107,176,152,36,133,107,58,246,173,139,164,67,56,84,
15
159,100,23,188,199,221,198,52,249,192,117,216,222,160,184,105,17,182,56,117,84,234,156,203,225,136,230,224,91,60,169,243,60,51,76,6,190,86,185,84,133,201,248,68,131,220,129,87,141,89,241,65,155,209,3,53,20,110,38,164,230,184,118,84,171,228,160,7,181,141,35,229,123,19,31,209,119,40,126,247,82,118,15,211,12,101,168,233,8,142,78,83,118,146,107,111,239,205,212,226,222,202,209,30,41,56,58,84,32,52,115,181,219,142,236,145,214,189,183,189,155,15,95,59,119,240,81,41,194,159,74,119,234,220,168,128,74,56,91,161,34,58,151,244,245,176,34,112,69,53,0,17,208,235,29,183,229,165,86,54,65,118,156,22,139,134,1,230,192,81,119,49,96,236,109,10,65,19,62,205,85,225,170,35,34,142,126,28,2,170,191,69,219,109,169,25,154,192,196,112,45,98,8,226,228,82,84,189,132,84,168,30,1,23,233,44,60,236,220,119,107,236,17,211,110,164,235,186,61,91,109,171,66,7,30,84,203,81,218,53,198,245,142,191,146,105,96,141,158,57,220,40,26,184,166,236,
16
247,79,130,97,181,18,139,35,218,68,26,29,171,240,110,109,7,223,30,71,199,222,91,7,235,180,80,110,115,146,112,243,209,222,195,208,67,44,34,217,173,83,84,24,125,116,31,168,0,92,138,108,45,235,123,137,254,219,184,254,159,2,90,230,27,33,205,45,27,58,78,170,1,62,34,56,98,163,2,123,163,179,27,148,64,29,40,242,168,128,82,1,216,102,44,169,242,85,155,117,85,194,66,34,158,77,88,105,88,33,57,14,231,189,69,1,91,232,159,32,15,69,199,194,136,142,209,113,24,60,177,18,116,239,178,184,50,116,213,86,115,106,236,254,92,1,57,140,56,92,216,85,10,208,242,243,51,245,144,142,211,143,143,192,66,67,117,246,0,245,0,218,154,194,162,143,30,60,125,238,160,226,43,235,71,232,184,133,189,153,85,23,166,11,127,210,12,254,61,164,123,185,23,240,201,14,186,121,178,78,243,187,4,248,172,81,52,151,238,193,142,149,207,157,18,120,214,204,201,119,122,80,178,123,11,144,106,26,33,223,175,39,37,118,158,26,216,223,8,88,137,179,151,23,47,238,
17
191,23,22,66,145,138,17,202,96,104,179,91,172,28,168,43,174,30,179,208,57,213,3,47,145,160,203,59,132,96,184,216,218,202,66,204,160,246,231,179,114,183,24,190,253,118,31,44,29,230,52,137,161,70,254,62,14,241,237,125,22,189,128,174,239,62,184,188,101,110,101,184,130,110,68,66,40,87,217,77,47,104,178,34,87,139,174,18,27,83,185,97,127,223,18,203,252,94,60,245,69,187,57,119,205,223,147,189,10,177,202,136,95,26,124,94,220,125,253,231,58,78,161,196,110,216,184,3,254,104,7,244,85,198,93,248,61,186,143,190,105,214,196,63,213,128,1,90,151,61,30,248,219,94,216,77,94,236,129,253,188,23,214,7,117,69,246,141,225,121,71,170,66,158,177,30,162,126,184,26,169,232,36,37,161,2,202,146,234,49,246,246,28,191,97,252,110,179,63,214,0,35,63,138,213,138,39,187,89,248,108,216,223,193,2,176,223,192,1,182,110,95,203,0,35,14,254,135,136,187,79,70,206,147,90,28,179,243,230,170,127,133,150,61,131,22,63,227,88,43,161,180,253,214,214,178,
18
179,149,198,107,166,219,40,2,117,46,97,170,11,207,116,235,193,151,198,209,77,206,100,75,235,10,2,201,85,159,245,209,118,184,175,204,112,208,111,197,198,26,126,115,171,224,165,251,229,153,1,218,79,226,248,43,72,28,223,143,196,209,87,144,56,186,23,137,147,47,167,112,114,47,2,79,190,156,192,147,138,192,95,222,153,129,158,218,188,47,193,82,169,152,174,79,35,134,221,243,209,112,240,220,159,70,216,229,251,199,17,192,246,133,19,141,233,100,82,26,208,250,102,43,239,9,125,48,199,229,174,74,28,228,201,70,223,194,178,247,19,51,205,166,102,143,112,233,195,146,122,158,161,115,227,38,102,0,66,204,90,186,119,214,158,175,91,47,15,121,99,132,248,58,148,78,27,196,33,210,62,140,162,234,108,107,100,111,22,34,229,15,219,204,155,60,95,117,42,13,211,164,143,23,56,52,53,163,58,28,152,168,219,6,52,48,48,104,77,116,174,111,60,201,247,236,113,55,123,247,228,39,55,211,99,26,216,170,203,93,170,137,120,56,167,120,210,167,91,107,225,13,146,92,214,218,
19
166,255,214,205,147,230,215,217,213,241,231,93,178,213,174,234,84,69,138,22,26,188,121,184,75,42,168,179,232,147,179,108,139,140,135,70,191,119,24,173,191,119,61,162,182,255,122,138,18,153,155,94,190,124,179,141,4,84,10,196,57,211,214,243,23,122,250,227,18,7,218,238,14,240,223,22,32,246,190,135,251,196,180,53,217,186,123,239,102,30,122,207,157,95,225,239,65,74,117,30,152,175,231,11,51,42,109,59,119,150,232,96,203,29,3,146,243,250,183,159,244,93,27,213,25,41,198,234,70,59,41,120,252,209,137,150,151,241,90,226,61,226,141,40,205,81,69,198,11,154,68,167,224,72,56,190,145,64,105,186,216,21,168,212,219,150,83,149,236,15,23,63,198,176,92,53,120,106,57,93,29,75,83,125,108,107,243,10,14,157,112,124,174,183,83,97,106,211,73,133,200,104,60,175,174,14,16,104,125,186,174,175,119,2,251,244,220,28,168,171,19,26,123,117,14,247,45,75,169,47,217,235,37,210,185,71,0,203,185,160,3,129,37,242,77,39,91,8,231,2,40,28,109,136,92,156,
20
10,75,92,85,151,17,129,120,18,26,57,134,175,4,140,171,188,88,168,40,56,75,245,47,239,140,78,182,65,30,171,148,143,163,183,198,105,160,189,10,208,52,83,53,128,202,203,162,87,46,116,13,248,162,30,9,30,119,190,130,170,57,53,248,66,210,163,175,34,61,122,32,233,90,57,4,117,208,184,143,153,70,253,116,37,21,147,194,252,140,202,86,68,253,97,239,124,116,58,56,243,43,162,31,244,17,247,157,5,17,94,234,83,213,152,226,107,227,231,59,51,29,11,208,184,193,83,54,148,174,98,93,194,237,26,16,106,204,20,39,31,136,88,255,226,97,47,94,136,94,15,196,74,211,242,189,56,233,106,227,67,144,170,67,193,221,56,77,178,112,170,230,6,156,58,0,153,9,99,129,133,32,157,157,222,128,210,37,157,40,214,241,150,121,244,187,44,11,136,2,123,185,213,124,198,230,242,180,29,237,210,111,30,8,190,122,230,143,36,53,153,189,134,1,53,223,53,47,40,186,105,18,45,133,246,208,164,9,5,222,177,91,165,68,34,212,233,133,230,0,131,90,22,61,45,107,
21
183,104,12,96,61,200,85,217,119,139,149,43,165,21,22,90,173,20,154,100,215,28,28,193,146,77,221,112,205,146,96,107,73,102,108,208,44,169,174,132,185,63,12,163,219,0,181,235,91,14,6,178,183,6,248,234,250,49,129,211,109,145,134,76,235,205,255,49,59,183,188,212,191,101,73,74,9,234,58,175,52,87,81,90,116,93,129,126,38,44,171,244,21,171,31,76,142,143,52,181,208,185,67,99,205,153,126,39,149,217,43,159,222,241,138,2,188,63,83,250,196,251,158,108,225,22,190,128,41,252,49,103,171,129,11,253,35,79,173,7,16,190,250,181,86,183,211,233,247,206,78,207,60,36,248,27,9,201,107,149,94,243,230,244,202,164,154,13,122,197,75,94,148,247,64,35,233,146,239,46,36,36,169,123,98,81,139,155,126,27,185,3,249,149,252,30,10,159,59,181,72,129,15,245,102,127,54,26,29,36,241,109,116,128,23,120,151,240,108,17,29,80,209,18,29,220,242,184,128,47,168,192,61,193,241,74,254,34,150,95,70,87,205,218,52,105,168,211,74,174,62,47,242,117,161,62,
22
237,231,108,201,233,246,220,30,230,254,151,151,239,111,21,131,13,60,77,215,69,65,119,111,133,178,88,235,194,127,27,107,158,17,137,236,142,180,4,43,252,171,173,126,236,148,119,160,128,21,251,81,252,146,191,201,111,140,29,170,224,189,11,23,254,176,180,192,210,49,209,11,125,76,31,86,171,251,97,90,227,194,221,152,222,173,120,246,3,244,166,87,217,62,100,184,10,226,10,172,99,115,129,183,136,64,103,246,158,46,197,27,232,89,232,192,7,117,97,66,182,194,203,242,201,31,248,75,151,70,178,239,214,229,215,209,189,41,68,217,68,247,29,222,110,222,67,248,59,16,75,150,124,29,237,152,112,220,69,221,173,71,161,218,12,250,231,195,81,239,244,252,108,52,124,222,59,247,175,4,17,76,213,136,241,114,145,39,59,234,207,207,253,106,87,74,210,161,23,30,94,231,51,229,124,47,189,114,169,128,54,148,78,172,157,75,221,180,81,154,182,196,208,252,85,83,184,39,199,216,86,255,86,225,253,25,52,221,136,22,47,28,78,110,75,94,253,6,7,113,238,71,244,70,100,188,
23
17,153,174,109,116,204,18,250,214,41,221,87,84,183,239,240,83,198,111,240,30,87,117,167,118,55,177,203,52,151,117,74,244,68,90,30,127,251,220,171,203,19,116,88,23,232,79,198,86,133,157,16,85,216,254,13,118,200,29,25,232,242,109,191,4,0,35,9,160,209,10,235,136,157,122,207,65,77,134,23,39,9,213,100,127,131,48,42,150,173,213,134,225,255,3,16,146,173,2,
23 24

  
uppsrc/ide/app.tpp/macros$en-us.tpp (working copy)
1
TITLE("TheIDE macros")
2
COMPRESSED
3
120,156,149,88,107,115,219,184,21,253,43,24,59,237,72,89,90,38,0,62,165,237,140,103,29,111,155,105,146,205,196,217,238,7,85,9,41,18,178,184,166,72,149,160,226,168,105,242,219,123,46,72,73,148,44,57,187,241,196,38,113,223,231,62,0,112,44,216,179,103,182,101,159,219,223,249,55,124,161,102,241,42,175,39,227,92,4,193,40,243,109,103,20,115,127,244,75,56,250,246,237,219,32,12,197,136,84,113,168,226,182,35,185,224,220,177,109,71,248,220,13,237,208,13,120,96,75,223,17,174,111,187,195,101,92,197,139,201,56,14,228,232,249,59,15,82,194,114,207,37,151,220,230,158,112,192,101,75,91,56,92,184,60,8,28,238,187,129,12,61,111,152,196,203,58,43,139,201,120,74,114,100,76,66,204,246,3,207,225,16,114,92,33,125,215,129,176,227,112,142,103,238,250,158,239,15,235,172,206,213,100,156,145,215,83,238,249,163,216,17,228,245,53,105,112,44,239,28,110,10,31,42,28,225,120,142,12,132,228,129,16,94,40,157,208,129,255,92,12,179,90,193,219,41,196,72,
4
148,196,92,24,118,92,135,75,0,227,248,174,4,155,143,191,142,29,114,1,235,129,237,186,48,172,62,111,208,34,160,72,206,131,57,225,187,196,29,56,1,151,126,32,28,225,9,56,96,251,136,150,172,187,195,84,233,4,114,82,240,81,13,151,70,215,87,238,136,67,216,183,252,115,97,135,182,240,252,16,6,225,44,2,151,97,200,101,0,131,14,119,109,46,135,73,153,34,216,169,112,109,105,44,6,200,135,7,205,6,27,215,227,112,88,200,0,38,125,46,37,126,187,78,224,15,181,162,140,212,101,53,25,63,191,234,217,3,123,32,92,183,79,226,33,196,3,233,72,233,120,161,195,109,9,51,208,225,16,94,158,141,156,114,87,4,195,105,172,97,179,118,8,92,131,42,167,130,66,2,100,224,74,152,246,240,11,201,69,128,18,216,136,208,9,164,12,236,97,146,199,90,119,0,122,78,65,114,110,113,126,238,19,174,174,20,78,72,224,72,1,128,133,231,134,28,8,187,158,99,139,97,165,254,179,202,42,181,80,5,32,206,80,35,163,77,122,218,122,132,51,77,61,10,139,11,
5
84,164,235,121,54,225,229,162,42,132,116,1,184,205,3,7,30,225,7,41,174,219,146,156,238,98,144,22,151,231,161,112,36,60,9,29,7,8,64,1,15,57,231,118,128,31,68,6,92,76,109,240,182,186,186,133,197,29,139,59,231,62,106,25,153,10,29,50,31,74,194,79,0,126,225,217,46,242,32,26,113,65,168,139,103,192,157,139,128,254,27,228,185,107,113,52,5,92,228,174,139,184,37,160,22,1,98,119,129,189,52,117,206,253,96,248,70,61,232,23,113,173,218,130,121,126,253,172,169,52,238,89,220,59,183,73,222,13,66,36,144,59,132,159,116,156,80,132,82,186,34,116,165,103,3,71,221,244,52,9,83,95,153,158,220,42,241,45,238,163,195,16,171,235,34,122,35,134,200,125,78,174,136,32,244,8,133,86,73,116,145,103,5,249,129,202,24,53,197,240,252,250,7,206,125,82,20,160,97,130,192,179,101,8,48,128,129,237,162,210,49,21,2,36,26,121,22,104,3,26,11,201,125,124,167,162,139,182,101,191,124,252,250,151,155,55,23,191,222,178,177,22,35,246,126,174,
6
94,190,184,97,139,56,169,74,253,215,201,88,219,7,107,44,174,20,123,168,178,186,86,5,203,10,54,254,80,151,203,44,137,134,209,101,116,153,165,42,186,140,151,203,232,18,237,21,61,83,69,116,177,210,31,216,141,78,152,78,170,12,163,165,184,99,121,92,220,173,224,194,132,197,69,202,150,121,156,168,148,52,13,86,96,155,101,185,210,131,206,51,75,226,130,77,21,83,89,61,87,21,67,9,213,172,156,177,74,221,173,242,152,222,77,56,154,149,149,241,108,167,238,186,92,44,202,130,214,95,149,73,156,179,20,165,156,160,253,214,131,54,172,246,207,107,10,139,165,106,150,21,25,141,190,61,87,152,174,97,80,179,7,88,103,115,21,167,112,1,244,89,89,45,58,90,144,132,203,43,135,141,47,175,220,6,37,20,27,61,179,137,81,30,125,68,11,173,12,117,184,89,161,154,220,48,253,83,173,247,93,122,64,164,138,141,141,210,142,134,6,176,189,101,51,53,77,224,52,8,89,142,247,42,206,53,235,25,135,175,153,94,23,117,252,185,223,17,132,177,9,203,52,187,87,107,
7
70,67,208,100,5,81,235,108,145,17,160,117,201,234,121,169,17,249,188,124,48,96,144,105,164,228,136,59,198,200,120,55,204,16,222,161,165,54,123,229,130,10,38,29,180,104,111,144,212,64,50,207,203,7,100,108,186,222,47,37,212,76,116,169,171,36,45,147,230,165,91,77,19,54,45,211,195,68,222,124,142,23,75,84,204,112,47,51,77,66,88,116,246,38,254,148,221,197,20,107,116,54,140,206,126,206,224,104,65,160,69,255,142,206,222,151,203,223,176,80,62,208,75,116,198,174,235,42,143,126,120,207,162,47,173,150,139,255,13,72,162,215,101,61,235,143,90,106,244,181,125,56,176,249,178,208,10,245,154,172,170,10,67,148,165,152,33,80,222,81,170,89,244,55,22,141,163,201,104,187,84,47,104,237,239,170,190,93,235,247,217,66,245,250,163,14,251,143,63,34,67,209,71,93,87,104,165,94,189,24,172,85,92,245,105,25,126,95,64,249,35,6,52,65,61,127,146,35,141,215,29,27,131,198,233,158,62,136,110,7,244,207,168,254,56,207,215,22,155,85,229,194,116,247,82,85,
8
122,137,246,202,62,41,171,141,30,201,141,97,114,161,80,78,41,204,162,105,85,154,161,1,89,116,193,32,190,121,75,208,167,40,154,71,131,165,35,90,148,181,73,28,235,153,118,164,33,98,74,47,45,235,254,97,55,151,186,238,152,106,84,52,186,151,85,249,9,3,202,12,135,250,161,100,200,101,249,73,85,121,137,90,132,149,190,233,106,77,222,101,168,163,44,201,106,116,66,92,179,135,178,186,111,39,0,18,169,105,208,160,116,180,202,41,222,102,194,168,207,173,128,225,186,3,10,5,91,150,218,204,19,125,224,225,173,58,226,96,167,102,217,151,47,210,243,252,161,39,165,156,243,209,85,15,103,173,62,107,130,51,204,147,225,176,121,125,177,107,95,172,125,184,18,102,25,251,129,239,82,253,188,82,197,93,61,239,245,183,252,205,2,25,167,97,49,216,172,239,4,176,181,92,151,171,162,238,200,188,89,45,166,232,84,200,208,198,163,13,118,39,133,223,150,186,135,222,55,172,147,157,142,183,45,18,172,87,206,102,26,225,155,178,193,56,199,100,184,203,138,130,242,73,78,97,
9
129,102,110,127,247,82,33,153,201,28,167,134,164,110,156,24,183,202,31,219,191,54,169,233,120,222,44,176,198,228,113,127,141,179,155,60,117,28,38,26,85,67,155,201,113,135,233,136,225,50,95,45,138,83,170,182,177,3,184,252,207,168,189,85,249,79,132,78,39,162,219,186,221,252,182,181,119,84,236,116,10,183,80,154,60,238,180,176,151,51,246,95,85,149,214,190,97,106,97,28,1,177,119,98,83,232,64,124,96,245,118,75,57,129,1,24,244,166,117,160,233,187,209,223,26,39,26,223,246,117,90,180,181,96,98,32,192,67,253,187,126,220,159,17,93,59,219,149,70,67,7,143,3,15,174,115,76,213,157,15,157,162,138,139,68,229,250,169,12,252,1,143,47,201,135,119,170,94,85,5,141,166,42,94,83,118,38,134,11,148,142,95,214,46,26,76,162,201,70,237,247,172,118,176,137,23,138,197,218,176,108,200,22,227,135,57,124,167,22,152,133,127,220,117,226,214,71,61,126,202,207,142,149,71,57,108,253,108,89,58,213,102,237,18,214,167,225,92,181,198,143,165,145,140,183,133,
10
246,180,11,79,25,222,53,128,181,223,81,123,230,79,85,64,187,123,30,65,210,92,85,247,129,108,152,59,53,208,9,101,66,252,132,109,92,155,105,120,10,212,142,193,125,11,219,208,90,142,67,76,27,110,179,223,181,110,108,22,191,15,163,57,11,109,77,54,241,225,72,180,9,245,97,94,230,42,250,136,157,51,109,87,178,187,162,172,176,148,208,53,182,101,202,242,52,137,171,84,119,92,38,189,59,63,44,182,210,84,250,52,49,88,185,108,118,83,246,75,243,112,112,180,108,226,104,118,108,50,66,74,140,71,52,197,18,240,99,235,175,192,86,87,43,101,54,112,92,168,204,48,109,245,178,25,206,205,202,140,66,115,148,54,103,211,85,145,226,144,179,42,154,193,82,181,29,203,45,86,210,101,228,33,131,25,251,81,129,153,43,200,33,56,85,179,12,76,48,130,254,28,74,143,64,250,41,47,147,251,141,198,46,70,197,49,144,158,194,8,81,172,205,217,168,3,80,139,195,102,60,21,219,221,163,57,48,234,141,225,244,32,240,215,104,139,87,106,86,247,6,131,65,191,57,206,
11
236,8,239,178,187,249,113,202,111,136,254,164,24,17,79,139,254,186,60,186,252,2,89,63,74,248,71,137,211,244,49,194,13,138,249,216,250,91,220,44,79,24,33,210,73,67,239,145,247,102,132,156,162,158,178,104,144,160,180,99,188,76,78,160,120,146,188,133,242,73,142,239,40,65,188,39,105,38,224,147,84,3,239,73,234,77,59,48,142,18,91,160,159,164,63,109,124,7,249,147,44,228,5,136,187,94,122,109,134,121,59,236,208,27,77,27,53,223,10,204,209,232,95,113,149,197,69,189,61,58,144,106,220,112,238,187,91,0,235,229,217,189,162,107,123,129,78,194,93,79,47,203,34,165,174,164,189,130,190,159,129,70,95,19,150,32,153,110,189,157,103,179,154,238,224,56,100,205,182,106,49,115,248,163,233,190,92,53,217,202,227,41,120,44,54,160,186,217,205,120,186,171,40,120,14,54,184,29,231,229,221,128,189,109,110,58,154,134,63,238,86,235,150,108,230,218,44,83,121,106,40,89,183,185,205,167,57,101,54,30,186,200,101,179,117,243,169,102,74,167,29,58,179,98,84,104,
12
213,74,155,41,185,194,158,129,253,170,44,53,12,53,231,34,107,59,34,63,149,89,218,157,146,155,117,10,222,124,85,161,81,66,161,215,230,83,7,92,249,125,69,227,24,7,100,186,24,53,118,154,111,58,237,206,184,153,62,228,203,98,149,215,25,133,189,227,61,60,193,221,124,86,201,170,110,207,26,139,244,224,70,210,82,245,134,100,49,250,238,189,50,78,209,94,91,174,106,3,88,105,222,104,56,98,82,31,88,120,21,99,95,152,159,48,208,16,97,128,228,227,37,221,14,227,35,219,168,57,103,94,55,234,187,167,76,90,238,58,178,245,224,235,215,201,255,1,59,119,129,148,
13

  
1
topic "TheIDE macros";
2
[2 $$0,0#00000000000000000000000000000000:Default]
3
[l288;i704;a17;O9;~~~.992;2 $$1,0#10431211400427159095818037425705:param]
4
[a83;*R6 $$2,5#31310162474203024125188417583966:caption]
5
[b83;*2 $$3,5#07864147445237544204411237157677:title]
6
[i288;b167;a42;O9;C2 $$4,6#40027414424643823182269349404212:item]
7
[b42;a42;2 $$5,5#45413000475342174754091244180557:text]
8
[l288;a17;2 $$6,6#27521748481378242620020725143825:desc]
9
[l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code]
10
[b2503;2 $$8,0#65142375456100023862071332075487:separator]
11
[*@(0.0.255)2 $$9,0#83433469410354161042741608181528:base]
12
[t4167;C2 $$10,0#37138531426314131251341829483380:class]
13
[l288;a17;*1 $$11,11#70004532496200323422659154056402:requirement]
14
[i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam]
15
[b167;C2 $$13,13#92430459443460461911108080531343:item1]
16
[i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2]
17
[*@2$(0.128.128)2 $$15,15#34511555403152284025741354420178:NewsDate]
18
[l321;*C$7;2 $$16,16#03451589433145915344929335295360:result]
19
[l321;b83;a83;*C$7;2 $$17,17#07531550463529505371228428965313:result`-line]
20
[l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title]
21
[{_}%EN-US 
22
[s2; TheIDE macros&]
23
[s0; TheIDE macros are written in [^topic`:`/`/ide`/app`/esc`$en`-us^ Esc 
24
scripting language] and placed in .usc files. .usc files can 
25
be either part of regular packages or are placed in Common or 
26
Local directory.&]
27
[s0; &]
28
[s0; Macro definition in .usc file starts with header in form&]
29
[s0; &]
30
[s7; [* macro] [*/@4 Macro`_menu][* :][*/@4 Macro`_item] [*/@4 Key]&]
31
[s0; &]
32
[s0; where [*/@4 Macro`_menu] and [*/@4 Macro`_item] are text literals 
33
(with C syntax) and [*/@4 Key] is key description similar to those 
34
shown in menus. [*/@4 Macro`_menu] with [@(0.0.255) :] and [*/@4 Key] 
35
can be omitted. Macro header is followed by [^topic`:`/`/Esc`/srcdoc`/Esc`$en`-us^ E
36
sc] body.&]
37
[s0; &]
38
[s0; Examples:&]
39
[s0; &]
40
[s7; macro `"Navigation`":`"Find next `\`"TopWindow`\`"`" Ctrl`+T 
41
`{&]
42
[s7; -|.Find(`"TopWindow`");&]
43
[s7; `}&]
44
[s7; &]
45
[s7; macro `"Insert current date`" `{&]
46
[s7; -|s `= `[`];&]
47
[s7; -|tm `= GetSysTime();&]
48
[s7; -|s << to`_string(tm.year) << `"`-`" << to`_string(tm.month) 
49
<< `"`-`" << to`_string(tm.day);&]
50
[s7; -|.Insert(s);&]
51
[s7; `}&]
52
[s0; &]
53
[s0; Formally, from Esc perspective, macro is a `"method`" of editor 
54
`- all editor commands are written in `"method`" notation (starting 
55
with dot).&]
56
[s0; &]
57
[s0; Additionally, helper functions can be defined using the [*/@5 fn] 
58
keyword:&]
59
[s7; fn Duplicate(str) `{&]
60
[s7; -|return str `+ str;&]
61
[s7; `}&]
62
[s0; &]
63
[s0; Functions defined like this can be simply called in the code 
64
of macros as a global functions.&]
65
[s0; &]
66
[s0; &]
67
[s2; [4 Text editing methods]&]
68
[s0; Most of text editing methods are provided in two (`"overloaded`") 
69
forms `- implicit that works with cursor and selection or explicit 
70
with given positions.&]
71
[s0; &]
72
[ {{3667:6333h1;@(204) [s0; Method]
73
:: [s0; Description]
74
::^@2 [s0; [*C+75 GetLength()]]
75
:: [s0; Length of text.]
76
:: [s0; [*C+75 GetLineCount()]]
77
:: [s0; Number of lines in text.]
78
:: [s0; [*C+75 GetLinePos(][/C+75 line][*C+75 )]]
79
:: [s0; Position (offset from the beginning of the file) of the first 
80
character of [/ line].]
81
:: [s0; [*C+75 GetCursor()]]
82
:: [s0; Cursor offset.]
83
:: [s0; [*C+75 GetLine(][/C+75 position][*C+75 )]]
84
:: [s0; Line for given [/ position].]
85
:: [s0; [*C+75 GetColumn(][/C+75 position][*C+75 )]]
86
:: [s0; Position in line for given [/ position].]
87
:: [s0; [*C+75 GetSelBegin()]]
88
:: [s0; Start of selection.]
89
:: [s0; [*C+75 GetSelCount()]]
90
:: [s0; Number of characters in selection. If zero, GetSelBegin() is 
91
equal to GetCursor().]
92
:: [s0; [*C+75 SetCursor(][/C+75 position][*C+75 )]]
93
:: [s0; Sets cursor to given [/ position].]
94
:: [s0; [*C+75 SetSelection(][/C+75 position][*C+75 , ][/C+75 count][*C+75 )]]
95
:: [s0; Sets selection starting with [/ position] with [/ count] characters.]
96
:: [s0; [*C+75 ClearSelection()]]
97
:: [s0; Cancels selection.]
98
:: [s0; [*C+75 Get(][/C+75 position][*C+75 , ][/C+75 count][*C+75 )]]
99
:: [s0; Returns array of [/ count] characters, starting at [/ position.]]
100
:: [s0; [*C+75 Get(][/C+75 position][*C+75 )]]
101
:: [s0; Same as Get(position, 1).]
102
:: [s0; [*C+75 Remove(][/C+75 position][*C+75 , ][/C+75 count][*C+75 )]]
103
:: [s0; Removes [/ count] characters at [/ position.]]
104
:: [s0; [*C+75 Remove(][/C+75 count][*C+75 )]]
105
:: [s0; Same as Remove(GetCursor(), [/ count]) `- removes [/ count] characters 
106
at cursor position.]
107
:: [s0; [*C+75 Remove()]]
108
:: [s0; Same as Remove(GetSelBegin(), GetSelCount()) `- removes selection.]
109
:: [s0; [*C+75 Insert(][/C+75 position][*C+75 , ][/C+75 text][*C+75 )]]
110
:: [s0; Inserts array of characters [/ text] at the [/ position.]]
111
:: [s0; [*C+75 Insert(][/C+75 text][*C+75 )]]
112
:: [s0; Same as Insert(GetCursor(), [/ text]) `- inserts [/ text] at cursor 
113
position.]
114
:: [s0; [*C+75 Find(][/C+75 text][*C+75 , ][/C+75 down][*C+75 , ][/C+75 whole`_word][*C+75 , 
115
][/C+75 ignore`_case][*C+75 , ][/C+75 wildcards][*C+75 )]]
116
:: [s0; Finds [/ text], using give options. Options can be omitted `- 
117
in that case [/ down] is considered true and rest of options false. 
118
If text is found, function returns 1, otherwise 0.]
119
:: [s0; [*C+75 Replace(][/C+75 text][*C+75 , ][/C+75 replace`_with][*C+75 , ][/C+75 whole`_word][*C+75 ,
120
 ][/C+75 ignore`_case][*C+75 , ][/C+75 widcards][*C+75 )]]
121
:: [s0; Block replace, using given options. Options ca be omitted `- 
122
in that case they are considered false. Returns number of strings 
123
replaced.]
124
:: [s0; [*C+75 MoveLeft(...)]&]
125
[s0; [*C+75 MoveRight(...)]&]
126
[s0; [*C+75 MoveWordLeft(...)]&]
127
[s0; [*C+75 MoveWordRight(...)]&]
128
[s0; [*C+75 MoveUp(...)]&]
129
[s0; [*C+75 MoveDown(...)]&]
130
[s0; [*C+75 MoveHome(...)]&]
131
[s0; [*C+75 MoveEnd(...)]&]
132
[s0; [*C+75 MovePageUp(...)]&]
133
[s0; [*C+75 MovePageDown(...)]&]
134
[s0; [*C+75 MoveTextBegin(...)]&]
135
[s0; [*C+75 MoveTextEnd(...)]&]
136
[s0; [*C+75 MoveLeft(][/C+75 sel][*C+75 )]&]
137
[s0; [*C+75 MoveRight(][/C+75 sel][*C+75 )]&]
138
[s0; [*C+75 MoveWordLeft(][/C+75 sel][*C+75 )]&]
139
[s0; [*C+75 MoveWordRight(][/C+75 sel][*C+75 )]&]
140
[s0; [*C+75 MoveUp(][/C+75 sel][*C+75 )]&]
141
[s0; [*C+75 MoveDown(][/C+75 sel][*C+75 )]&]
142
[s0; [*C+75 MoveHome(][/C+75 sel][*C+75 )]&]
143
[s0; [*C+75 MoveEnd(][/C+75 sel][*C+75 )]&]
144
[s0; [*C+75 MovePageUp(][/C+75 sel][*C+75 )]&]
145
[s0; [*C+75 MovePageDown(][/C+75 sel][*C+75 )]&]
146
[s0; [*C+75 MoveTextBegin(][/C+75 sel][*C+75 )]&]
147
[s0; [*C+75 MoveTextEnd(sel)]]
148
:: [s0; Moves cursor in given direction. Variant with [/ sel] makes selection 
149
(like when corresponding movement while pressing Shift key) if 
150
[/ sel] is 1.]}}&]
151
[s0; &]
152
[s2; [4 File methods]&]
153
[s0; &]
154
[ {{3667:6333h1;@(204) [s0; Method]
155
:: [s0; Description]
156
::^@2 [s0; [*C+75 FileName()]]
157
:: [s0; Returns the name of currently edited file.]
158
:: [s0; [*C+75 EditFile(][/C+75 path][*C+75 )]&]
159
[s0; [*C+75 EditFile(][/C+75 filename, pkg][*C+75 )]]
160
:: [s0; Opens the specified file in editor.]
161
:: [s0; [*C+75 SaveCurrentFile()]]
162
:: [s0; Saves file in active tab.]
163
:: [s0; [*C+75 CloseFile()]]
164
:: [s0; Closes active tab.]}}&]
165
[s0; &]
166
[s2; [4 User interaction methods]&]
167
[s0; From time to time, it is necessary to communicate some information 
168
from user to the macro or vice versa, which is exactly what these 
169
methods do.&]
170
[s0; &]
171
[ {{3667:6333h1;@(204) [s0; Method]
172
:: [s0; Description]
173
::^@2 [s0; [*C+75 Input(][/C+75 label, ...][*C+75 )]]
174
:: [s0; Simple input dialog. Provides as many input text fields as is 
175
number of parameters specifying labels for these fields. If user 
176
chooses Cancel, returns void, otherwise returns single string 
177
if there is just one edit field or array of strings for multiple 
178
edit fields.]
179
:: [s0; [*C+75 ClearConsole()]]
180
:: [s0; Clear the output console.]
181
:: [s0; [*C+75 Echo(][/C+75 ...][*C+75 )]]
182
:: [s0; Prints all arguments to the output console, one per line.]}}&]
183
[s0; &]
184
[s2; [4 Build and execute methods]&]
185
[s0; The macros can be used to extend the capabilities of TheIDE. 
186
For that, there is a few methods that allow executing other programs 
187
and also to trigger building U`+`+ packages.&]
188
[s0; &]
189
[ {{3667:6333h1;@(204) [s0; Method]
190
:: [s0; Description]
191
::^@2 [s0; [*C+75 Execute(][/C+75 cmdline][*C+75 )]]
192
:: [s0; Executes cmdline, capturing the output to the console.]
193
:: [s0; [*C+75 Launch(][/C+75 cmdline][*C+75 )]]
194
:: [s0; Launches the application.]
195
:: [s0; [*C+75 Build(][/C+75 `[flags`[, outfile`]`]][*C+75 )]]
196
:: [s0; Builds open main package. Optional parameters can be used to 
197
specify the flags (e.g. `"GUI MT`") and target path for the compiled 
198
executable.]
199
:: [s0; [*C+75 BuildProject(][/C+75 uppfile, flags`[, outfile`]][*C+75 )]]
200
:: [s0; Same as previous, but works with any package specified by passing 
201
path to it`'s .upp file as a first parameter.]}}&]
202
[s0; &]
203
[s2; [4 Informative methods]&]
204
[s0; The methods providing information about packages and build settings. 
205
If the optional parameter [/ pkg] is not specified, the currently 
206
selected package is used.&]
207
[s0; &]
208
[ {{3667:6333h1;@(204) [s0; Method]
209
:: [s0; Description]
210
::^@2 [s0; [*C+75 ActivePackage()]]
211
:: [s0; The name of package in which the currently edited file belongs 
212
to.]
213
:: [s0; [*C+75 MainPackage()]]
214
:: [s0; The name of main package.]
215
:: [s0; [*C+75 AllPackages()]]
216
:: [s0; Array of all used packages.]
217
:: [s0; [*C+75 PackageDir(][/C+75 `[pkg`]][*C+75 )]]
218
:: [s0; The directory where the package resides.]
219
:: [s0; [*C+75 PackageFiles(][/C+75 `[pkg`]][*C+75 )]]
220
:: [s0; List of all files in the package.]
221
:: [s0; [*C+75 Assembly()]]
222
:: [s0; Name of the assembly.]
223
:: [s0; [*C+75 Flags()]]
224
:: [s0; Array of currently set build flags.]
225
:: [s0; [*C+75 BuildMethod()]]
226
:: [s0; Currently selected build method.]
227
:: [s0; [*C+75 BuildMode()]]
228
:: [s0; Currently selected build mode (0 `= Debug, 1 `= Optimal, 2 `= 
229
Speed, 3 `= Size).]}}&]
230
[s0; ]]
uppsrc/ide/app.tpp/macros$en-us.tppi (working copy)
1 1
TITLE("TheIDE macros")
2 2
COMPRESSED
3
120,156,149,88,107,115,219,184,21,253,43,24,59,237,72,89,90,38,0,62,165,237,140,103,29,111,155,105,146,205,196,217,238,7,85,9,41,18,178,184,166,72,149,160,226,168,105,242,219,123,46,72,73,148,44,57,187,241,196,38,113,223,231,62,0,112,44,216,179,103,182,101,159,219,223,249,55,124,161,102,241,42,175,39,227,92,4,193,40,243,109,103,20,115,127,244,75,56,250,246,237,219,32,12,197,136,84,113,168,226,182,35,185,224,220,177,109,71,248,220,13,237,208,13,120,96,75,223,17,174,111,187,195,101,92,197,139,201,56,14,228,232,249,59,15,82,194,114,207,37,151,220,230,158,112,192,101,75,91,56,92,184,60,8,28,238,187,129,12,61,111,152,196,203,58,43,139,201,120,74,114,100,76,66,204,246,3,207,225,16,114,92,33,125,215,129,176,227,112,142,103,238,250,158,239,15,235,172,206,213,100,156,145,215,83,238,249,163,216,17,228,245,53,105,112,44,239,28,110,10,31,42,28,225,120,142,12,132,228,129,16,94,40,157,208,129,255,92,12,179,90,193,219,41,196,72,
4
148,196,92,24,118,92,135,75,0,227,248,174,4,155,143,191,142,29,114,1,235,129,237,186,48,172,62,111,208,34,160,72,206,131,57,225,187,196,29,56,1,151,126,32,28,225,9,56,96,251,136,150,172,187,195,84,233,4,114,82,240,81,13,151,70,215,87,238,136,67,216,183,252,115,97,135,182,240,252,16,6,225,44,2,151,97,200,101,0,131,14,119,109,46,135,73,153,34,216,169,112,109,105,44,6,200,135,7,205,6,27,215,227,112,88,200,0,38,125,46,37,126,187,78,224,15,181,162,140,212,101,53,25,63,191,234,217,3,123,32,92,183,79,226,33,196,3,233,72,233,120,161,195,109,9,51,208,225,16,94,158,141,156,114,87,4,195,105,172,97,179,118,8,92,131,42,167,130,66,2,100,224,74,152,246,240,11,201,69,128,18,216,136,208,9,164,12,236,97,146,199,90,119,0,122,78,65,114,110,113,126,238,19,174,174,20,78,72,224,72,1,128,133,231,134,28,8,187,158,99,139,97,165,254,179,202,42,181,80,5,32,206,80,35,163,77,122,218,122,132,51,77,61,10,139,11,
5
84,164,235,121,54,225,229,162,42,132,116,1,184,205,3,7,30,225,7,41,174,219,146,156,238,98,144,22,151,231,161,112,36,60,9,29,7,8,64,1,15,57,231,118,128,31,68,6,92,76,109,240,182,186,186,133,197,29,139,59,231,62,106,25,153,10,29,50,31,74,194,79,0,126,225,217,46,242,32,26,113,65,168,139,103,192,157,139,128,254,27,228,185,107,113,52,5,92,228,174,139,184,37,160,22,1,98,119,129,189,52,117,206,253,96,248,70,61,232,23,113,173,218,130,121,126,253,172,169,52,238,89,220,59,183,73,222,13,66,36,144,59,132,159,116,156,80,132,82,186,34,116,165,103,3,71,221,244,52,9,83,95,153,158,220,42,241,45,238,163,195,16,171,235,34,122,35,134,200,125,78,174,136,32,244,8,133,86,73,116,145,103,5,249,129,202,24,53,197,240,252,250,7,206,125,82,20,160,97,130,192,179,101,8,48,128,129,237,162,210,49,21,2,36,26,121,22,104,3,26,11,201,125,124,167,162,139,182,101,191,124,252,250,151,155,55,23,191,222,178,177,22,35,246,126,174,
6
94,190,184,97,139,56,169,74,253,215,201,88,219,7,107,44,174,20,123,168,178,186,86,5,203,10,54,254,80,151,203,44,137,134,209,101,116,153,165,42,186,140,151,203,232,18,237,21,61,83,69,116,177,210,31,216,141,78,152,78,170,12,163,165,184,99,121,92,220,173,224,194,132,197,69,202,150,121,156,168,148,52,13,86,96,155,101,185,210,131,206,51,75,226,130,77,21,83,89,61,87,21,67,9,213,172,156,177,74,221,173,242,152,222,77,56,154,149,149,241,108,167,238,186,92,44,202,130,214,95,149,73,156,179,20,165,156,160,253,214,131,54,172,246,207,107,10,139,165,106,150,21,25,141,190,61,87,152,174,97,80,179,7,88,103,115,21,167,112,1,244,89,89,45,58,90,144,132,203,43,135,141,47,175,220,6,37,20,27,61,179,137,81,30,125,68,11,173,12,117,184,89,161,154,220,48,253,83,173,247,93,122,64,164,138,141,141,210,142,134,6,176,189,101,51,53,77,224,52,8,89,142,247,42,206,53,235,25,135,175,153,94,23,117,252,185,223,17,132,177,9,203,52,187,87,107,
7
70,67,208,100,5,81,235,108,145,17,160,117,201,234,121,169,17,249,188,124,48,96,144,105,164,228,136,59,198,200,120,55,204,16,222,161,165,54,123,229,130,10,38,29,180,104,111,144,212,64,50,207,203,7,100,108,186,222,47,37,212,76,116,169,171,36,45,147,230,165,91,77,19,54,45,211,195,68,222,124,142,23,75,84,204,112,47,51,77,66,88,116,246,38,254,148,221,197,20,107,116,54,140,206,126,206,224,104,65,160,69,255,142,206,222,151,203,223,176,80,62,208,75,116,198,174,235,42,143,126,120,207,162,47,173,150,139,255,13,72,162,215,101,61,235,143,90,106,244,181,125,56,176,249,178,208,10,245,154,172,170,10,67,148,165,152,33,80,222,81,170,89,244,55,22,141,163,201,104,187,84,47,104,237,239,170,190,93,235,247,217,66,245,250,163,14,251,143,63,34,67,209,71,93,87,104,165,94,189,24,172,85,92,245,105,25,126,95,64,249,35,6,52,65,61,127,146,35,141,215,29,27,131,198,233,158,62,136,110,7,244,207,168,254,56,207,215,22,155,85,229,194,116,247,82,85,
8
122,137,246,202,62,41,171,141,30,201,141,97,114,161,80,78,41,204,162,105,85,154,161,1,89,116,193,32,190,121,75,208,167,40,154,71,131,165,35,90,148,181,73,28,235,153,118,164,33,98,74,47,45,235,254,97,55,151,186,238,152,106,84,52,186,151,85,249,9,3,202,12,135,250,161,100,200,101,249,73,85,121,137,90,132,149,190,233,106,77,222,101,168,163,44,201,106,116,66,92,179,135,178,186,111,39,0,18,169,105,208,160,116,180,202,41,222,102,194,168,207,173,128,225,186,3,10,5,91,150,218,204,19,125,224,225,173,58,226,96,167,102,217,151,47,210,243,252,161,39,165,156,243,209,85,15,103,173,62,107,130,51,204,147,225,176,121,125,177,107,95,172,125,184,18,102,25,251,129,239,82,253,188,82,197,93,61,239,245,183,252,205,2,25,167,97,49,216,172,239,4,176,181,92,151,171,162,238,200,188,89,45,166,232,84,200,208,198,163,13,118,39,133,223,150,186,135,222,55,172,147,157,142,183,45,18,172,87,206,102,26,225,155,178,193,56,199,100,184,203,138,130,242,73,78,97,
9
129,102,110,127,247,82,33,153,201,28,167,134,164,110,156,24,183,202,31,219,191,54,169,233,120,222,44,176,198,228,113,127,141,179,155,60,117,28,38,26,85,67,155,201,113,135,233,136,225,50,95,45,138,83,170,182,177,3,184,252,207,168,189,85,249,79,132,78,39,162,219,186,221,252,182,181,119,84,236,116,10,183,80,154,60,238,180,176,151,51,246,95,85,149,214,190,97,106,97,28,1,177,119,98,83,232,64,124,96,245,118,75,57,129,1,24,244,166,117,160,233,187,209,223,26,39,26,223,246,117,90,180,181,96,98,32,192,67,253,187,126,220,159,17,93,59,219,149,70,67,7,143,3,15,174,115,76,213,157,15,157,162,138,139,68,229,250,169,12,252,1,143,47,201,135,119,170,94,85,5,141,166,42,94,83,118,38,134,11,148,142,95,214,46,26,76,162,201,70,237,247,172,118,176,137,23,138,197,218,176,108,200,22,227,135,57,124,167,22,152,133,127,220,117,226,214,71,61,126,202,207,142,149,71,57,108,253,108,89,58,213,102,237,18,214,167,225,92,181,198,143,165,145,140,183,133,
10
246,180,11,79,25,222,53,128,181,223,81,123,230,79,85,64,187,123,30,65,210,92,85,247,129,108,152,59,53,208,9,101,66,252,132,109,92,155,105,120,10,212,142,193,125,11,219,208,90,142,67,76,27,110,179,223,181,110,108,22,191,15,163,57,11,109,77,54,241,225,72,180,9,245,97,94,230,42,250,136,157,51,109,87,178,187,162,172,176,148,208,53,182,101,202,242,52,137,171,84,119,92,38,189,59,63,44,182,210,84,250,52,49,88,185,108,118,83,246,75,243,112,112,180,108,226,104,118,108,50,66,74,140,71,52,197,18,240,99,235,175,192,86,87,43,101,54,112,92,168,204,48,109,245,178,25,206,205,202,140,66,115,148,54,103,211,85,145,226,144,179,42,154,193,82,181,29,203,45,86,210,101,228,33,131,25,251,81,129,153,43,200,33,56,85,179,12,76,48,130,254,28,74,143,64,250,41,47,147,251,141,198,46,70,197,49,144,158,194,8,81,172,205,217,168,3,80,139,195,102,60,21,219,221,163,57,48,234,141,225,244,32,240,215,104,139,87,106,86,247,6,131,65,191,57,206,
11
236,8,239,178,187,249,113,202,111,136,254,164,24,17,79,139,254,186,60,186,252,2,89,63,74,248,71,137,211,244,49,194,13,138,249,216,250,91,220,44,79,24,33,210,73,67,239,145,247,102,132,156,162,158,178,104,144,160,180,99,188,76,78,160,120,146,188,133,242,73,142,239,40,65,188,39,105,38,224,147,84,3,239,73,234,77,59,48,142,18,91,160,159,164,63,109,124,7,249,147,44,228,5,136,187,94,122,109,134,121,59,236,208,27,77,27,53,223,10,204,209,232,95,113,149,197,69,189,61,58,144,106,220,112,238,187,91,0,235,229,217,189,162,107,123,129,78,194,93,79,47,203,34,165,174,164,189,130,190,159,129,70,95,19,150,32,153,110,189,157,103,179,154,238,224,56,100,205,182,106,49,115,248,163,233,190,92,53,217,202,227,41,120,44,54,160,186,217,205,120,186,171,40,120,14,54,184,29,231,229,221,128,189,109,110,58,154,134,63,238,86,235,150,108,230,218,44,83,121,106,40,89,183,185,205,167,57,101,54,30,186,200,101,179,117,243,169,102,74,167,29,58,179,98,84,104,
12
213,74,155,41,185,194,158,129,253,170,44,53,12,53,231,34,107,59,34,63,149,89,218,157,146,155,117,10,222,124,85,161,81,66,161,215,230,83,7,92,249,125,69,227,24,7,100,186,24,53,118,154,111,58,237,206,184,153,62,228,203,98,149,215,25,133,189,227,61,60,193,221,124,86,201,170,110,207,26,139,244,224,70,210,82,245,134,100,49,250,238,189,50,78,209,94,91,174,106,3,88,105,222,104,56,98,82,31,88,120,21,99,95,152,159,48,208,16,97,128,228,227,37,221,14,227,35,219,168,57,103,94,55,234,187,167,76,90,238,58,178,245,224,235,215,201,255,1,59,119,129,148,
3
120,156,181,89,251,119,211,70,22,254,87,230,16,118,215,1,225,104,244,182,221,61,7,154,132,46,103,129,114,72,216,254,224,117,209,88,30,219,42,178,228,74,114,130,203,210,191,125,191,59,35,201,242,43,9,167,45,57,36,182,102,238,235,187,143,185,115,53,180,216,227,199,166,97,158,152,247,252,235,95,200,169,88,37,229,104,152,88,65,48,136,125,211,25,8,238,15,126,236,13,126,255,253,247,110,175,103,13,136,21,7,43,110,58,54,183,56,119,76,211,177,124,238,246,204,158,27,240,192,180,125,199,114,125,211,237,47,69,46,22,163,161,8,236,193,147,247,30,168,44,195,61,177,185,205,77,238,89,14,118,153,182,105,57,220,114,121,16,56,220,119,3,187,231,121,253,72,44,203,56,75,71,195,49,209,145,48,27,100,166,31,120,14,7,145,227,90,182,239,58,32,118,28,206,241,153,187,190,231,251,253,50,46,19,57,26,198,164,245,152,123,254,64,56,22,105,125,78,28,28,195,59,129,154,150,15,22,142,229,120,142,29,88,54,15,44,203,235,217,78,207,129,254,220,234,199,
4
165,132,182,99,144,17,41,145,185,16,236,184,14,183,1,140,227,187,54,182,249,248,235,152,61,110,65,122,96,186,46,4,203,207,53,90,4,20,209,121,16,103,249,46,237,14,156,128,219,126,96,57,150,103,65,1,211,135,181,36,221,237,79,100,17,129,206,182,248,160,132,74,131,243,231,238,128,131,216,55,252,19,203,236,153,150,231,247,32,16,202,194,112,187,215,227,118,0,129,14,119,77,110,247,163,108,2,99,199,150,107,218,74,98,0,127,120,224,172,176,113,61,14,133,45,59,128,72,159,219,54,126,187,78,224,247,11,73,30,41,179,124,52,124,242,188,99,118,205,174,229,186,167,68,222,3,121,96,59,182,237,120,61,135,155,54,196,128,135,67,120,121,38,124,202,93,43,232,143,69,1,153,165,67,224,42,84,57,5,20,28,96,7,174,13,209,30,126,193,185,48,208,6,54,86,207,9,108,59,48,251,81,34,138,162,5,208,19,50,146,115,131,243,19,159,112,117,109,203,233,17,56,182,5,128,45,207,237,113,32,236,122,142,105,245,115,249,235,42,206,229,66,166,128,56,70,
5
140,12,106,247,84,241,8,101,116,60,90,6,183,16,145,174,231,153,132,151,139,168,176,108,23,128,155,60,112,160,17,126,224,226,178,10,201,241,198,6,219,224,246,73,207,114,108,104,210,115,28,32,0,6,188,199,57,55,3,252,192,50,224,162,98,131,87,209,213,14,44,238,24,220,57,241,17,203,240,84,207,33,241,61,155,240,179,0,191,229,153,46,252,96,105,114,139,80,183,30,3,119,110,5,244,95,33,207,93,131,35,41,160,34,119,93,216,109,3,106,43,128,237,46,176,183,85,156,115,63,232,191,149,183,197,133,40,101,21,48,79,206,31,235,72,227,158,193,189,19,147,232,221,160,7,7,114,135,240,179,29,167,103,245,108,219,181,122,174,237,153,192,177,208,57,77,196,148,87,42,39,27,38,190,193,125,100,24,108,117,93,88,175,200,96,185,207,73,21,43,232,121,132,66,197,36,124,150,196,41,233,129,200,24,232,96,120,114,254,148,115,159,24,5,72,152,32,240,76,187,7,48,128,129,233,34,210,81,21,2,56,26,126,182,144,6,84,22,162,79,98,38,195,103,85,202,
6
126,249,248,245,111,151,111,159,125,184,98,195,194,26,176,235,185,124,117,113,201,22,34,202,179,226,239,163,97,97,238,60,99,34,151,236,54,143,203,82,166,44,78,217,240,231,50,91,198,81,216,15,207,194,179,120,34,195,51,177,92,134,103,72,175,240,177,76,195,103,171,226,103,118,89,68,172,136,242,24,165,37,157,177,68,164,179,21,84,24,49,145,78,216,50,17,145,156,16,167,238,10,219,166,113,34,139,110,235,51,139,68,202,198,146,201,184,156,203,156,33,132,74,150,77,89,46,103,171,68,208,119,101,78,193,178,92,105,182,97,119,158,45,22,89,74,207,95,103,145,72,216,4,161,28,33,253,214,221,202,172,234,207,27,50,139,77,228,52,78,99,42,125,91,170,176,162,132,192,130,221,66,58,155,75,49,129,10,88,159,102,249,162,197,197,31,176,225,19,141,207,8,159,206,158,59,154,107,248,17,185,179,66,228,177,254,104,235,177,42,118,213,206,127,203,245,104,91,163,91,24,42,15,240,81,120,29,224,67,118,83,29,100,9,190,231,34,41,88,71,233,123,206,138,117,90,
7
138,207,167,45,66,146,198,226,130,125,146,107,70,53,80,57,5,70,23,241,34,38,60,203,140,149,243,172,128,225,243,236,86,97,65,162,225,145,3,234,40,33,195,77,45,131,149,187,146,42,231,101,11,138,151,73,183,2,187,6,178,0,144,73,146,221,194,97,227,245,118,36,33,100,194,179,34,143,38,89,164,191,180,131,105,196,198,217,100,215,143,151,159,197,98,137,128,233,111,59,70,121,133,133,143,222,138,155,120,38,200,214,240,81,63,124,244,50,134,162,41,129,22,254,55,124,116,157,45,127,194,131,236,150,190,132,143,216,121,153,39,225,211,107,22,126,169,184,60,251,95,151,40,58,237,173,143,78,7,213,106,248,181,250,176,35,243,85,90,72,132,107,180,202,115,212,80,54,65,9,1,243,22,211,130,133,255,100,225,48,28,13,154,71,229,130,158,253,32,203,171,117,113,29,47,100,231,116,208,218,254,221,119,240,80,248,177,40,115,100,82,167,92,116,215,82,228,167,244,24,122,63,3,243,189,13,200,129,114,126,231,142,137,88,183,100,116,181,210,157,98,199,186,13,208,47,
8
17,252,34,73,214,6,155,230,217,66,37,247,82,230,197,18,217,21,223,72,163,178,30,206,21,16,185,144,8,167,9,196,34,103,229,36,70,254,177,240,25,3,121,253,45,66,154,34,104,246,234,74,139,52,205,74,229,56,214,81,217,72,53,68,133,222,36,43,79,119,130,224,197,100,162,146,88,235,55,151,9,52,99,211,85,26,209,195,166,150,168,100,71,208,173,10,226,133,186,162,66,214,101,211,116,68,137,113,155,229,147,126,101,252,52,101,23,171,101,18,71,240,29,196,3,235,150,251,114,89,174,114,228,78,9,163,158,210,159,163,144,53,26,212,162,147,248,19,146,118,30,55,58,33,1,151,201,26,223,146,68,215,47,82,139,26,13,66,174,46,189,132,233,44,201,198,40,103,141,81,59,8,208,31,212,241,161,195,174,41,186,9,101,50,82,131,89,212,149,230,77,86,168,50,90,30,216,163,235,104,158,221,160,154,107,77,110,51,134,200,207,110,100,158,100,200,92,248,228,84,149,192,130,124,73,122,199,81,92,66,97,81,50,96,247,169,42,151,8,251,130,170,50,18,173,144,
9
137,84,218,82,57,150,159,43,2,181,107,134,152,73,217,50,43,226,93,107,216,151,47,182,231,249,125,207,182,237,57,31,60,239,160,233,60,101,90,125,165,233,168,223,215,95,47,54,133,12,207,126,126,110,233,199,67,28,141,190,75,185,244,90,166,179,114,222,57,29,53,36,250,73,13,65,183,121,222,162,129,159,206,179,85,90,182,201,222,174,22,99,68,20,200,232,28,46,20,58,119,208,191,203,138,206,104,120,166,30,233,131,91,47,183,56,190,171,44,103,157,108,58,45,100,169,147,138,156,63,150,179,56,77,201,49,164,37,30,208,129,116,186,249,146,195,133,209,28,45,85,84,106,149,134,103,90,200,33,109,206,149,51,218,166,232,39,76,75,61,102,64,163,125,237,160,3,22,208,62,10,135,202,149,208,162,217,124,80,147,44,89,45,210,135,48,110,160,1,202,201,183,9,185,146,201,247,4,95,219,224,171,178,234,29,154,104,60,66,121,135,215,27,188,149,235,55,140,216,171,41,251,77,230,153,177,45,156,170,32,154,104,164,43,206,213,150,23,246,4,95,53,107,15,192,5,
10
155,139,58,187,192,247,1,136,92,41,165,180,174,71,37,24,172,94,137,8,128,99,130,55,185,188,93,141,219,10,52,79,52,167,22,108,123,170,157,39,56,193,54,202,181,3,84,164,145,76,138,187,221,245,7,172,121,175,170,55,149,187,92,172,171,252,217,211,215,216,88,137,234,214,178,177,59,250,22,109,218,32,138,133,164,74,78,219,235,109,6,227,251,49,241,94,46,80,114,255,144,129,196,160,56,104,215,189,214,236,72,63,26,18,149,53,213,246,86,140,27,27,185,167,116,78,228,247,104,83,5,244,70,163,195,10,221,41,123,147,121,198,118,46,111,105,112,60,160,170,222,231,126,200,245,216,97,15,13,77,223,10,169,150,137,176,91,81,145,173,170,229,184,11,253,29,69,142,136,171,1,168,118,239,130,175,168,148,229,113,165,87,91,135,251,240,86,253,238,33,5,54,40,160,11,62,128,205,237,60,75,100,248,145,186,168,253,197,120,150,102,57,86,35,53,206,216,35,141,147,73,36,114,244,41,251,198,146,62,27,11,140,170,121,163,226,199,178,165,238,29,216,143,203,173,62,
11
175,186,118,104,4,116,127,66,114,137,137,82,157,202,115,132,253,104,116,114,108,43,243,149,84,237,10,238,218,234,160,168,248,178,41,238,84,82,213,120,213,47,169,123,203,42,157,24,77,19,198,242,170,150,112,131,101,116,79,189,141,33,198,60,16,195,234,126,122,15,172,185,222,5,8,81,69,255,100,124,143,194,251,125,146,69,159,106,209,109,116,211,67,240,222,133,46,236,95,171,30,178,5,109,133,96,93,114,211,230,64,213,215,144,162,22,60,217,131,236,13,82,246,181,156,150,157,110,183,123,90,183,175,173,181,247,241,108,126,116,241,39,96,116,23,49,173,223,201,224,195,242,216,202,5,2,232,216,218,191,50,220,219,142,172,93,34,171,142,44,189,19,179,59,4,210,234,93,66,169,221,215,197,239,142,13,119,72,87,56,213,129,130,18,185,137,145,99,160,63,112,115,227,132,111,216,255,77,2,128,217,3,119,42,252,30,184,87,57,241,129,123,47,91,165,242,158,173,149,147,191,97,247,183,40,189,9,130,111,32,32,237,177,173,85,12,222,168,115,178,58,33,144,220,186,14,
12
232,9,154,106,119,255,35,242,88,164,101,211,231,145,20,220,82,63,181,79,87,214,81,151,220,219,57,72,163,44,71,81,93,102,233,68,93,52,193,158,166,202,88,163,25,219,18,75,170,220,92,205,227,105,73,55,112,52,206,211,134,45,202,45,239,142,190,126,221,187,224,190,36,226,157,139,237,159,120,111,36,246,111,197,98,171,229,168,11,24,29,224,41,157,190,116,198,235,241,14,46,239,116,145,166,98,7,194,189,58,118,137,53,226,184,105,46,196,166,184,239,122,102,111,51,177,36,121,6,91,126,154,29,168,222,63,46,101,165,21,205,97,226,105,92,169,65,206,211,131,150,253,59,129,184,145,231,90,117,37,106,171,175,32,247,215,244,66,205,117,88,41,198,7,154,247,172,144,187,212,234,97,177,69,118,192,121,31,10,53,74,165,129,165,142,150,29,71,190,84,215,224,24,16,211,72,50,38,211,99,117,244,166,50,66,184,136,124,77,11,52,61,90,165,106,58,195,10,36,44,56,210,96,66,143,139,212,77,122,69,114,212,84,83,86,147,41,132,244,77,28,73,118,131,174,76,
13
24,20,131,209,92,93,212,62,67,19,120,241,118,174,59,180,162,9,46,116,11,127,193,92,226,85,186,92,109,106,92,34,198,50,49,24,138,243,161,70,143,134,44,100,28,40,144,134,34,201,102,93,246,78,143,104,212,88,104,33,210,117,181,172,90,20,4,64,50,81,43,113,251,180,85,47,96,164,106,71,117,156,172,245,64,126,76,247,44,186,93,107,179,53,181,106,120,20,124,209,60,83,46,213,55,50,163,233,118,110,178,120,210,110,120,234,231,148,204,106,118,78,103,59,165,114,169,38,218,80,229,151,21,117,86,184,202,83,80,106,57,122,114,95,245,203,117,59,64,186,44,86,73,25,147,217,155,189,71,174,143,231,104,52,178,221,32,148,66,153,195,178,85,73,176,68,122,207,126,94,194,184,198,9,135,209,127,7,157,168,169,79,18,40,58,91,81,229,42,234,144,218,230,110,40,219,104,230,72,243,138,131,113,255,253,10,61,174,234,50,229,103,25,173,202,189,10,118,93,7,106,211,198,194,7,19,146,7,199,74,208,169,193,160,88,138,113,156,160,115,167,87,31,211,234,21,
14
77,151,102,179,170,19,51,54,144,11,54,149,183,77,36,171,54,77,208,208,189,146,175,230,75,250,213,74,158,205,16,30,133,82,14,253,90,166,108,204,227,217,12,139,99,82,155,246,126,8,159,134,79,155,215,46,127,65,90,92,106,88,54,55,207,197,228,200,232,172,218,89,212,91,12,130,5,17,88,15,117,43,223,84,158,58,22,0,175,5,154,248,249,3,196,233,141,82,151,89,177,212,67,225,67,55,39,229,226,134,97,56,156,38,98,86,132,67,131,20,162,162,26,142,194,209,161,14,156,200,224,77,148,114,4,0,10,111,5,114,221,119,139,164,157,191,59,177,81,165,179,30,13,146,60,214,145,93,20,137,240,209,15,31,94,177,55,215,52,178,37,191,150,136,96,89,170,195,167,78,120,42,162,203,152,166,206,58,34,196,248,0,74,74,57,84,156,95,112,182,55,166,173,150,75,178,199,96,251,22,222,113,91,197,113,127,19,103,171,194,64,80,109,13,140,169,134,85,54,183,142,177,49,61,212,253,129,210,26,198,198,101,248,143,130,117,33,94,31,82,106,46,174,7,162,13,
15
66,7,147,239,85,125,58,220,28,78,187,42,73,244,240,91,213,174,214,113,34,198,176,110,243,194,145,208,84,89,129,46,165,164,52,210,5,83,5,222,158,191,212,109,31,39,183,42,199,89,185,49,207,208,30,104,90,8,221,61,193,236,26,8,16,144,143,255,130,68,123,161,14,232,119,90,78,187,118,94,183,154,155,70,141,180,58,40,183,213,109,117,60,136,198,36,163,218,93,102,251,151,56,132,243,61,130,182,34,126,151,254,69,146,84,228,69,155,254,69,125,108,80,105,86,153,208,212,165,93,14,21,249,69,156,183,18,19,30,57,24,169,164,87,243,186,184,122,29,75,118,215,96,160,95,165,131,247,152,16,106,136,138,7,136,121,29,235,49,3,105,175,223,117,87,175,125,142,194,80,20,114,49,78,214,91,179,233,10,63,85,148,170,245,253,89,14,229,231,65,228,218,145,87,86,241,172,178,249,112,5,208,1,182,243,26,97,55,116,53,23,157,76,71,216,100,19,249,48,38,244,2,172,99,210,43,209,11,57,94,205,12,198,233,51,21,196,133,64,39,98,209,183,171,165,164,
16
68,178,213,231,248,55,121,218,202,253,209,232,255,150,4,160,134,
13 17

  
reference/Macro/Func.usc (working copy)
1
// One of the functions used in the "Using functions" macro.
2
// As you can see, it can be defined in completely separate file.
3
fn FuncB(arg) {
4
	return arg + "B";
5
}
reference/Macro/Macro.cpp (working copy)
1
#include <Core/Core.h>
2

  
3
using namespace Upp;
4

  
5
CONSOLE_APP_MAIN
6
{
7
	Cout() <<
8
	"This application does nothing. It's only purpose is to demonstrate\n"
9
	"the capabilities of the macro language embeded in TheIDE.\n"
10
	"Try pressing Ctrl+Alt+S in TheIDE...\n";
11
}
reference/Macro/Macro.upp (working copy)
1
description "Examples of using macrosin TheIDE\377";
2

  
3
uses
4
	Core;
5

  
6
file
7
	Macro.cpp,
8
	Macro.usc,
9
	Func.usc,
10
	example.txt;
11

  
12
mainconfig
13
	"" = "SSE2";
14

  
reference/Macro/Macro.usc (working copy)
1
/* Welcome to the macro examples file! */
2

  
3
// The first function only serves as an introduction.
4
// It is bound to a keyboard shortcut, to make it easier,
5
// the rest of the macros can be invoked via Macro item in the menu.
6
macro "Start here" Ctrl+Alt+S {
7
	// Open this file
8
	EditFile("Macro", "Macro.usc");
9
	// Set cursor to the start
10
	SetCursor(0);
11
	// Now you can continue reading and exploring the rest of the examples...
12
}
13

  
14
// Macros can call functions defined via "fn" keyword anywhere (even other files, see Func.usc).
15
// This is usefull e.g. when you want to share some funcionality between several macros.
16
macro "Using functions" {
17
	// This function opens the example file, moves cursor at the end and appends some strings
18
	// generated by functions.
19
	EditFile("Macro","example.txt");
20
	MoveTextEnd();
21
	Insert("\n " + FuncA("C") + FuncB("D") + " \n");
22
}
23

  
24
fn FuncA(arg) {
25
	return FuncB(arg + "A");
26
}
27

  
28
/* Chapter 1: Methods controlling the editor */
29

  
30
macro "1 Editor":"1.1 File name" {
31
	ClearConsole();
32
	Echo("Currently edited file is '" + FileName() + "'");
33
}
34

  
35
macro "1 Editor":"1.2 Opening file" {
36
	// EditFile can be used with package and file names, as seen here, or it can ba called 
37
	// with single parameter containing full path to a file.
38
	EditFile("Macro","example.txt");
39
}
40

  
41
macro "1 Editor":"1.3 Closing file" {
42
	// Save the file first, to be sure
43
	SaveCurrentFile();
44
	// Now we can close it
45
	CloseFile();
46
}
47

  
48
/* Chapter 2: Methods for automatic text editing */
49

  
50
macro "2 Editing":"2.1 Select all" {
51
	// Again, make sure we use the testing file
52
	EditFile("Macro","example.txt");
53
	// This moves the cursor at the begining of file (the same can be achieved with SetCursor(0);)
54
	MoveTextBegin();
55
	// Now we move the cursor at the end of file. The parameter says that we want to select all
56
	// the text in between the previous and new position.
57
	MoveTextEnd(1);
58
}
59

  
60
macro "2 Editing":"2.2 Cursor position" {
61
	EditFile("Macro","example.txt");
62
	// We can get curent cursor position (in characters from start)...
63
	pos = GetCursor();
64
	// ... which can be used to calculate line number ...
65
	line = GetLine(pos);
66
	// ... and also position within the line
67
	col = GetColumn(pos);
68
	// Now we move at the end of file and insert a string summarizing what we found out
69
	MoveTextEnd();
70
	Insert("Line:"+to_string(line)+", Col:"+to_string(col)+", Pos"+to_string(pos)+"\n");
71
	// And finally, we put the cursor back where it originally was, just for users convenience
72
	SetCursor(pos);
73
}
74

  
75
macro "2 Editing":"2.3 File info" {
76
	EditFile("Macro","example.txt");
77
	pos = GetCursor();
78
	// Another set of informations we can get from the editor methods is how many text is there
79
	length = GetLength();
80
	// And also how many lines
81
	lines = GetLineCount();
82
	// Again, we append the info at the end and return to original position
83
	MoveTextEnd();
84
	Insert("Length:"+to_string(length)+", Lines:"+to_string(lines)+"\n");
85
	SetCursor(pos);
86
}
87

  
88
macro "2 Editing":"2.4 Complex example" {
89
	/* This function analyzes a document (example.txt) and prints a histogram of character 
90
	 * usage at the bottom. It could probably be implemented better, faster or both,
91
	 * but it is intentionaly left as is, to demonstrate that even simple macro language 
92
	 * can be used to achieve quite complex tasks.
93
	 */
94
	// how many lines should we use to print the histogram
95
	height = 20;
96
	// set active file to the example text
97
	EditFile("Macro", "example.txt");
98
	// remember cursor position, so we can return it at the end
99
	pos = GetCursor();
100
	// this is a little trick to make sure Esc knows that hist is a map, not an array
101
	hist[""] = 0;
102
	// iterate over entire document and count letters
103
	length = GetLength();
104
	for(i=0; i<length; i++){
105
		x = ToLower(Get(i));
106
		// change the key for non-printable
107
		if(x[0]<=32)
108
			x="";
109
		// initialize if it is first encounter, otherwise just increse value
110
		if(is_void(hist[x]))
111
			hist[x] = 1;
112
		else
113
			hist[x]++;
114
	}
115
	// delete non-printable
116
	hist[""] = void;
117
	// make a line of '=' with same length as we have columns
118
	sep = "+" + len(hist) * "-" + "+";
119
	// insert top line
120
	MoveTextEnd();
121
	Insert("\n"+sep+"\n");
122
	MoveTextEnd();
123
	// compute maximum for scaling
124
	max = height;
125
	for(i in hist)
126
		if(hist[i]>max) 
127
			max = hist[i];
128
	// get sort order
129
	k = sort(keys(hist));
130
	// plot the histogram, left to right, top to bottom
131
	for(i=height; i>0; --i){
132
		Insert("|");
133
		MoveRight();
134
		for(j in k){
135
			if(hist[k[j]]/max*height >= i)
136
				Insert("#");
137
			else
138
				Insert(" ");
139
			MoveRight();
140
		}
141
		// print y-axis legend
142
		Insert("|"+to_string(int(i*max/height))+"\n");
143
		MoveTextEnd();
144
	}
145
	//insert bottom line
146
	Insert(sep+"\n");
147
	MoveTextEnd();
148
	// print x-axis legend
149
	Insert(" ");
150
	MoveRight();
151
	for(j in k) {
152
		Insert(k[j]);
153
		MoveRight();
154
	}
155
	Insert("\n");
156
	// return cursor to original position
157
	SetCursor(pos);
158
}
159

  
160
macro "3 User interaction":"3.1 Using console" {
161
	// It is a good idea to clean the console before printing something in it, because text
162
	// left from previous actions might confuse the user
163
	ClearConsole();
164
	// You already seen Echo being used to inform user in some of the examples above...
165
	// Important point is, that the console will be shown if it is hidden as soon
166
	// as you Echo() something.
167
	Echo("Hello wolrd!", "This is just a test...");
168
}
169

  
170
macro "3 User interaction":"3.2 Input" {
171
	ClearConsole();
172
	// The Input() function can be called to get some values from user. It returns array 
173
	// of strings containing the values entered into the dialog.
174
	a = Input("Some number","Some string");
175
	// If you want to use it to get some number, you need to convert it from string and check
176
	// that it was really a number
177
	n = to_number(a[0]);
178
	if (is_void(n)){
179
		Echo("ERROR: '" + a[0] + "' is not a number.");
180
		return;
181
	}
182
	// Now you can safely use the obtained data
183
	Echo("The entered number was "+to_string(n),
184
	     "The string was '" + a[1] + "'");
185
}
186

  
187
/* Chapter 4: Methods that give you informations about the development environment */
188

  
189
macro "4 Informative":"4.1 Package info" {
190
	ClearConsole();
191
	// There are 4 functions that can be used to find out what packages and files current 
192
	// project consists of. 
193
	Echo("ActivePackage()=\"" + ActivePackage() + "\"",
194
	     "MainPackage()=\"" + MainPackage() + "\"",
195
	     "PackageDir()=\"" + PackageDir() + "\"",
196
	     "PackageDir(\"plugin/z\")=\"" + PackageDir("plugin/z") + "\"",
197
	     "PackageFiles()=" + to_string(PackageFiles()),
198
	     "PackageFiles(\"plugin/z\")=" + to_string(PackageFiles("plugin/z")));
199
	// Additionaly, the two of them which accept package name as a parameter can be also used
200
	// to query packages not used in current project
201
	Echo("PackageDir(\"plugin/gif\")=\"" + PackageDir("plugin/gif") + "\"",
202
	     "PackageFiles(\"plugin/gif\")=" + to_string(PackageFiles("plugin/gif")));
203
}
204

  
205
macro "4 Informative":"4.2 Build config info" {
206
	ClearConsole();
207
	// Another four methods inform about the build environment settings
208
	Echo("Assembly()=\"" + Assembly() + "\"",
209
	     "Flags()=" + to_string(Flags()),
210
	     "BuildMethod()=\"" + BuildMethod() + "\"",
211
	     "BuildMode()=\"" + to_string(BuildMode()) + "\"");
212
	// You might have noticed that BuildMode() returns number, but it can be easily converted:
213
	modes = [ "Debug", "Optional", "Speed", "Size" ];
214
	Echo("Build mode is set to '" + modes[BuildMode()] + "'.");
215
}
216

  
217
macro "5 Executing/Building":"5.1 Execute" {
218
	ClearConsole();
219
	// An external command can be executed with Execute, the output will be printed in console
220
	Execute("echo Hello world");
221
}
222

  
223
macro "5 Executing/Building":"5.2 Launch" {
224
	// this should work on Win and do nothing on Linux
225
	Launch("cmd.exe");
226
	// this should do nothing on Win and work on Linux
227
	Launch("/usr/bin/xterm");
228
}
229

  
230
macro "5 Executing/Building":"5.3 Build" {
231
	ClearConsole();
232
	// Build can be used to automatically build current project.
233
	Build();
234
}
235

  
236
macro "5 Executing/Building":"5.4 BuildProject" {
237
	ClearConsole();
238
	// Get .upp file location for another package
239
	upp = PackageDir("umk") + "/umk.upp";
240
	// Build that package with SSE2 build flag
241
	BuildProject(upp, "SSE2");
242
}
243

  
reference/Macro/example.txt (working copy)
1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec gravida lacus
2
vel nunc interdum eu dignissim dolor dictum. Pellentesque habitant morbi
3
tristique senectus et netus et malesuada fames ac turpis egestas. Duis luctus
4
cursus leo, et viverra erat dignissim at. Donec eleifend pretium quam, at commodo
5
dolor vestibulum at. Cras malesuada, nibh ornare rutrum ultrices, libero ipsum
6
convallis mi, a commodo erat lacus suscipit nisi. Aenean urna nulla, cursus sed
7
sagittis ut, scelerisque eget neque. Integer sodales sollicitudin diam ut sodales.
8
Nullam pulvinar ultrices orci in ullamcorper. Curabitur convallis justo nisi.
9
Curabitur commodo nunc vel mi posuere eget pretium ante eleifend. Vivamus nec 
10
ipsum justo, congue consectetur turpis. Duis et suscipit enim. Phasellus elementum 
11
pulvinar orci, id rhoncus risus imperdiet in. Donec adipiscing, lacus sed congue
12
ornare, orci ligula rutrum nunc, non cursus eros lacus lacinia dolor. Nullam sed
13
nulla in mauris hendrerit hendrerit et ut libero. Fusce quis ante amet.
reference/Macro/init (working copy)
1
#ifndef _Macro_icpp_init_stub
2
#define _Macro_icpp_init_stub
3
#include "Core/init"
4
#endif