Catching up with recent changes
This commit is contained in:
parent
4110147ef6
commit
7d1fcb2260
9 changed files with 105 additions and 55 deletions
|
@ -1,6 +1,6 @@
|
|||
# Inweb 7
|
||||
|
||||
v7-alpha.1+1A88 'Escape to Danger' (13 April 2022)
|
||||
v7-alpha.1+1A89 'Escape to Danger' (15 April 2022)
|
||||
|
||||
## About Inweb
|
||||
|
||||
|
|
|
@ -168,13 +168,31 @@ char *Platform__getenv(const char *name) {
|
|||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 113 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
/* Check the first element of the command: if it has path separators in
|
||||
it, we assume we are running one of our commands, otherwise it is a
|
||||
Unix style command. */
|
||||
int Platform__Win32_is_unix_cmd(const char* cmd) {
|
||||
char stop = ' ';
|
||||
int i = 0;
|
||||
|
||||
if (cmd[0] == '\"') {
|
||||
stop = '\"';
|
||||
i = 1;
|
||||
}
|
||||
while ((cmd[i] != 0) && (cmd[i] != stop)) {
|
||||
if ((cmd[i] == '/') || (cmd[i] == '\\'))
|
||||
return 0;
|
||||
i++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int Platform__system(const char *cmd) {
|
||||
char cmd_line[10*MAX_PATH];
|
||||
|
||||
/* Check if the command should be executed with the Windows cmd interpreter
|
||||
or a Unix-like shell, depending on whether or not the executable to run is
|
||||
given with a quoted path. */
|
||||
int unix = (cmd[0] != '\"');
|
||||
or a Unix-like shell. */
|
||||
int unix = Platform__Win32_is_unix_cmd(cmd);
|
||||
if (unix) {
|
||||
/* For a Unix shell command, escape any double quotes and backslashes. */
|
||||
char *pcl;
|
||||
|
@ -222,7 +240,7 @@ int Platform__system(const char *cmd) {
|
|||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 354 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 372 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
typedef HANDLE foundation_thread;
|
||||
typedef int foundation_thread_attributes;
|
||||
|
||||
|
@ -230,7 +248,7 @@ struct Win32_Thread_Start { void *(*fn)(void *); void* arg; };
|
|||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 448 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 473 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; };
|
||||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
|
@ -2561,75 +2579,75 @@ int Platform__is_folder_separator(wchar_t c) ;
|
|||
void Platform__where_am_i(wchar_t *p, size_t length) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 168 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 186 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
int Platform__mkdir(char *transcoded_pathname) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 176 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 194 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void * Platform__opendir(char *dir_name) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 181 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 199 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
int Platform__readdir(void *D, char *dir_name, char *leafname) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 198 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 216 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__closedir(void *D) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 206 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 224 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__path_add(const char* base, const char* add, char* path) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 211 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 229 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__rsync(char *transcoded_source, char *transcoded_dest) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 292 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 310 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__sleep(int seconds) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 299 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 317 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__notification(text_stream *text, int happy) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 317 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 335 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__Win32_ResetConsole(void) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 326 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 344 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__configure_terminal(void) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 368 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 386 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
int Platform__create_thread(foundation_thread *pt, const foundation_thread_attributes *pa, void *(*fn)(void *), void *arg) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 383 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 401 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
int Platform__join_thread(foundation_thread pt, void** rv) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 387 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 405 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__init_thread(foundation_thread_attributes* pa, size_t size) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 390 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 408 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
size_t Platform__get_thread_stack_size(foundation_thread_attributes* pa) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 400 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 418 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
int Platform__get_core_count(void) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 414 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 439 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
time_t Platform__never_time(void) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 418 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 443 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
time_t Platform__timestamp(char *transcoded_filename) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 424 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 449 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
off_t Platform__size(char *transcoded_filename) ;
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#line 64 "inweb/foundation-module/Chapter 2/Debugging Log.w"
|
||||
|
@ -5640,7 +5658,7 @@ void Platform__where_am_i(wchar_t *p, size_t length) {
|
|||
#ifdef PLATFORM_WINDOWS
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 168 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 186 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
int Platform__mkdir(char *transcoded_pathname) {
|
||||
errno = 0;
|
||||
int rv = mkdir(transcoded_pathname);
|
||||
|
@ -5678,7 +5696,7 @@ void Platform__closedir(void *D) {
|
|||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 206 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 224 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__path_add(const char* base, const char* add, char* path) {
|
||||
strcpy(path, base);
|
||||
PathAppendA(path, add);
|
||||
|
@ -5763,20 +5781,20 @@ void Platform__rsync(char *transcoded_source, char *transcoded_dest) {
|
|||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 292 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 310 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__sleep(int seconds) {
|
||||
Sleep((DWORD)(1000*seconds));
|
||||
}
|
||||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 299 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 317 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
void Platform__notification(text_stream *text, int happy) {
|
||||
}
|
||||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 310 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 328 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#define WIN32CONS_RESET_MODE 1
|
||||
#define WIN32CONS_RESET_OUTCP 2
|
||||
|
||||
|
@ -5820,7 +5838,7 @@ void Platform__configure_terminal(void) {
|
|||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 361 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 379 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
DWORD WINAPI Platform__Win32_Thread_Func(LPVOID param) {
|
||||
struct Win32_Thread_Start* start = (struct Win32_Thread_Start*)param;
|
||||
(start->fn)(start->arg);
|
||||
|
@ -5856,16 +5874,23 @@ size_t Platform__get_thread_stack_size(foundation_thread_attributes* pa) {
|
|||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 400 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 418 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
int Platform__get_core_count(void) {
|
||||
int count = 0;
|
||||
SYSTEM_INFO sysInfo;
|
||||
GetSystemInfo(&sysInfo);
|
||||
return (int) sysInfo.dwNumberOfProcessors;
|
||||
count = (int) sysInfo.dwNumberOfProcessors;
|
||||
|
||||
/* Leave one core idle by default */
|
||||
if (count > 1)
|
||||
count--;
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
#endif /* PLATFORM_WINDOWS */
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
#line 414 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
#line 439 "inweb/foundation-module/Chapter 1/Windows Platform.w"
|
||||
time_t Platform__never_time(void) {
|
||||
return (time_t) 0;
|
||||
}
|
||||
|
@ -8596,11 +8621,11 @@ int CommandLine__read_pair_p(text_stream *opt, text_stream *opt_val, int N,
|
|||
; innocuous = TRUE; break;
|
||||
case VERSION_CLSW: {
|
||||
PRINT("inweb");
|
||||
char *svn = "7-alpha.1+1A87";
|
||||
char *svn = "7-alpha.1+1A88";
|
||||
if (svn[0]) PRINT(" version %s", svn);
|
||||
char *vname = "Escape to Danger";
|
||||
if (vname[0]) PRINT(" '%s'", vname);
|
||||
char *d = "10 April 2022";
|
||||
char *d = "13 April 2022";
|
||||
if (d[0]) PRINT(" (%s)", d);
|
||||
PRINT("\n");
|
||||
innocuous = TRUE; break;
|
||||
|
@ -30938,7 +30963,7 @@ void Ctags__write(web *W, filename *F) {
|
|||
WRITE("!_TAG_FILE_SORTED\t0\t/0=unsorted, 1=sorted, 2=foldcase/\n");
|
||||
WRITE("!_TAG_PROGRAM_AUTHOR\tGraham Nelson\t/graham.nelson@mod-langs.ox.ac.uk/\n");
|
||||
WRITE("!_TAG_PROGRAM_NAME\tinweb\t//\n");
|
||||
WRITE("!_TAG_PROGRAM_VERSION\t7-alpha.1+1A87\t/built 10 April 2022/\n");
|
||||
WRITE("!_TAG_PROGRAM_VERSION\t7-alpha.1+1A88\t/built 13 April 2022/\n");
|
||||
|
||||
}
|
||||
#line 47 "inweb/Chapter 6/Ctags Support.w"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 13 April 2022
|
||||
Build Number: 1A88
|
||||
Build Date: 15 April 2022
|
||||
Build Number: 1A89
|
||||
|
|
|
@ -173,13 +173,31 @@ Happily, the Inform tools make very little use of this.
|
|||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Shell commands. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="comment-syntax"> Check the first element of the command: if it has path separators in</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax">, </span><span class="identifier-syntax">we</span><span class="plain-syntax"> </span><span class="identifier-syntax">assume</span><span class="plain-syntax"> </span><span class="identifier-syntax">we</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">running</span><span class="plain-syntax"> </span><span class="identifier-syntax">one</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">our</span><span class="plain-syntax"> </span><span class="identifier-syntax">commands</span><span class="plain-syntax">, </span><span class="identifier-syntax">otherwise</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Unix</span><span class="plain-syntax"> </span><span class="identifier-syntax">style</span><span class="plain-syntax"> </span><span class="identifier-syntax">command</span><span class="plain-syntax">. */</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Platform::Win32_is_unix_cmd</span><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax">* </span><span class="identifier-syntax">cmd</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> </span><span class="identifier-syntax">stop</span><span class="plain-syntax"> = </span><span class="character-syntax">' '</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">[0] == </span><span class="character-syntax">'\"'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stop</span><span class="plain-syntax"> = </span><span class="character-syntax">'\"'</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] != </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] != </span><span class="identifier-syntax">stop</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] == </span><span class="character-syntax">'/'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] == </span><span class="character-syntax">'\\'</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Platform::system</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Platform::system</span></span>:<br/>POSIX Platforms - <a href="1-pp.html#SP11">§11</a>, <a href="1-pp.html#SP13">§13</a>, <a href="1-pp.html#SP16">§16</a><br/>Shell - <a href="3-shl.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> </span><span class="identifier-syntax">cmd_line</span><span class="plain-syntax">[10*</span><span class="identifier-syntax">MAX_PATH</span><span class="plain-syntax">];</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> Check if the command should be executed with the Windows cmd interpreter</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">Unix</span><span class="plain-syntax">-</span><span class="identifier-syntax">like</span><span class="plain-syntax"> </span><span class="identifier-syntax">shell</span><span class="plain-syntax">, </span><span class="identifier-syntax">depending</span><span class="plain-syntax"> </span><span class="identifier-syntax">on</span><span class="plain-syntax"> </span><span class="identifier-syntax">whether</span><span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">not</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">executable</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">run</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">given</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">quoted</span><span class="plain-syntax"> </span><span class="identifier-syntax">path</span><span class="plain-syntax">. */</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unix</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">[0] != </span><span class="character-syntax">'\"'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">Unix</span><span class="plain-syntax">-</span><span class="identifier-syntax">like</span><span class="plain-syntax"> </span><span class="identifier-syntax">shell</span><span class="plain-syntax">. */</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">unix</span><span class="plain-syntax"> = </span><a href="1-wp.html#SP8" class="function-link"><span class="function-syntax">Platform::Win32_is_unix_cmd</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">unix</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> For a Unix shell command, escape any double quotes and backslashes.</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pcl</span><span class="plain-syntax">;</span>
|
||||
|
@ -472,9 +490,16 @@ to launch.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Platform::get_core_count</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Platform::get_core_count</span></span>:<br/>POSIX Platforms - <a href="1-pp.html#SP24">§24</a>, <a href="1-pp.html#SP26">§26</a>, <a href="1-pp.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SYSTEM_INFO</span><span class="plain-syntax"> </span><span class="identifier-syntax">sysInfo</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">GetSystemInfo</span><span class="plain-syntax">(&</span><span class="identifier-syntax">sysInfo</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">sysInfo</span><span class="plain-syntax">.</span><span class="identifier-syntax">dwNumberOfProcessors</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">sysInfo</span><span class="plain-syntax">.</span><span class="identifier-syntax">dwNumberOfProcessors</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> Leave one core idle by default</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">count</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax">--;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This paragraph is used only if PLATFORM_WINDOWS is defined.</li></ul>
|
||||
|
|
|
@ -547,7 +547,7 @@ points, null terminated):
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_wide_string</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_wide_string</span></span>:<br/>String Manipulation - <a href="4-sm.html#SP4">§4</a>, <a href="4-sm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_wide_string</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_wide_string</span></span>:<br/>String Manipulation - <a href="4-sm.html#SP4">§4</a>, <a href="4-sm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stream</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to open NULL stream"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">capacity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">)?((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">wcslen</span><span class="plain-syntax">(</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">)):0;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-str.html#SP28_3" class="named-paragraph-link"><span class="named-paragraph">Ensure a capacity large enough to hold the initial string in one frame</span><span class="named-paragraph-number">28.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -555,7 +555,7 @@ points, null terminated):
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::write_wide_string</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Streams::write_wide_string</span></span>:<br/>String Manipulation - <a href="4-sm.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::write_wide_string</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Streams::write_wide_string</span></span>:<br/>String Manipulation - <a href="4-sm.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">c_string</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><a href="2-str.html#SP35" class="function-link"><span class="function-syntax">Streams::putc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="identifier-syntax">stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -564,7 +564,7 @@ page of the Unicode set, null terminated):
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_ISO_string</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_ISO_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_ISO_string</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_ISO_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stream</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to open NULL stream"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">capacity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">)?((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">strlen</span><span class="plain-syntax">(</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">)):0;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-str.html#SP28_3" class="named-paragraph-link"><span class="named-paragraph">Ensure a capacity large enough to hold the initial string in one frame</span><span class="named-paragraph-number">28.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -572,7 +572,7 @@ page of the Unicode set, null terminated):
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::write_ISO_string</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Streams::write_ISO_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::write_ISO_string</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Streams::write_ISO_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">c_string</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><a href="2-str.html#SP35" class="function-link"><span class="function-syntax">Streams::putc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">], </span><span class="identifier-syntax">stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -580,7 +580,7 @@ page of the Unicode set, null terminated):
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_UTF8_string</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_UTF8_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_UTF8_string</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_UTF8_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stream</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"tried to open NULL stream"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">capacity</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">)?((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">strlen</span><span class="plain-syntax">(</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">)):0;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-str.html#SP28_3" class="named-paragraph-link"><span class="named-paragraph">Ensure a capacity large enough to hold the initial string in one frame</span><span class="named-paragraph-number">28.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -588,7 +588,7 @@ page of the Unicode set, null terminated):
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::write_UTF8_string</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Streams::write_UTF8_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::write_UTF8_string</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Streams::write_UTF8_string</span></span>:<br/><a href="2-str.html#SP32">§32</a><br/>String Manipulation - <a href="4-sm.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">unicode_file_buffer</span><span class="plain-syntax"> </span><span class="identifier-syntax">ufb</span><span class="plain-syntax"> = </span><a href="4-tf.html#SP8" class="function-link"><span class="function-syntax">TextFiles::create_ufb</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="4-tf.html#SP8" class="function-link"><span class="function-syntax">TextFiles::utf8_fgetc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &</span><span class="identifier-syntax">c_string</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, &</span><span class="identifier-syntax">ufb</span><span class="plain-syntax">)) != </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
|
@ -682,7 +682,7 @@ ISO string:
|
|||
<p class="commentary firstcommentary"><a id="SP32" class="paragraph-anchor"></a><b>§32. Locale versions. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_locale_string</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_locale_string</span></span>:<br/>String Manipulation - <a href="4-sm.html#SP4">§4</a>, <a href="4-sm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Streams::open_from_locale_string</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">Streams::open_from_locale_string</span></span>:<br/>String Manipulation - <a href="4-sm.html#SP4">§4</a>, <a href="4-sm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-lcl.html#SP2" class="function-link"><span class="function-syntax">Locales::get</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SHELL_LOCALE</span><span class="plain-syntax">) == </span><span class="constant-syntax">FILE_ENCODING_ISO_STRF</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-str.html#SP28_2" class="function-link"><span class="function-syntax">Streams::open_from_UTF8_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">C_string</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-lcl.html#SP2" class="function-link"><span class="function-syntax">Locales::get</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SHELL_LOCALE</span><span class="plain-syntax">) == </span><span class="constant-syntax">FILE_ENCODING_UTF8_STRF</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -124,25 +124,25 @@ thing plus a little extra, for efficiency's sake.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_wide_string</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Str::new_from_wide_string</span></span>:<br/>Command Line Arguments - <a href="3-cla.html#SP5">§5</a>, <a href="3-cla.html#SP14">§14</a><br/>Pathnames - <a href="3-pth.html#SP3">§3</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_wide_string</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Str::new_from_wide_string</span></span>:<br/>Command Line Arguments - <a href="3-cla.html#SP5">§5</a>, <a href="3-cla.html#SP14">§14</a><br/>Pathnames - <a href="3-pth.html#SP3">§3</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-str.html#SP28" class="function-link"><span class="function-syntax">Streams::open_from_wide_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">C_string</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_ISO_string</span><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_ISO_string</span><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-str.html#SP28_1" class="function-link"><span class="function-syntax">Streams::open_from_ISO_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">C_string</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_UTF8_string</span><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_UTF8_string</span><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-str.html#SP28_2" class="function-link"><span class="function-syntax">Streams::open_from_UTF8_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">C_string</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_locale_string</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Str::new_from_locale_string</span></span>:<br/>Pathnames - <a href="3-pth.html#SP2">§2</a>, <a href="3-pth.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::new_from_locale_string</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Str::new_from_locale_string</span></span>:<br/>Pathnames - <a href="3-pth.html#SP2">§2</a>, <a href="3-pth.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C_string</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-str.html#SP32" class="function-link"><span class="function-syntax">Streams::open_from_locale_string</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">C_string</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -307,7 +307,7 @@ might be at the start of the file being read.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">ufb</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TextFiles::utf8_fgetc</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TextFiles::utf8_fgetc</span></span>:<br/><a href="4-tf.html#SP5_3">§5.3</a>, <a href="4-tf.html#SP6">§6</a><br/>Streams - <a href="2-str.html#SP28_2">§28.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> **</span><span class="identifier-syntax">or_from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">escape_oddities</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TextFiles::utf8_fgetc</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TextFiles::utf8_fgetc</span></span>:<br/><a href="4-tf.html#SP5_3">§5.3</a>, <a href="4-tf.html#SP6">§6</a><br/>Streams - <a href="2-str.html#SP28_2">§28.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> **</span><span class="identifier-syntax">or_from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">escape_oddities</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">unicode_file_buffer</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ufb</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EOF</span><span class="plain-syntax">, </span><span class="identifier-syntax">conts</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ufb</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ufb</span><span class="plain-syntax">-></span><span class="element-syntax">ufb_counter</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
|
||||
|
|
Binary file not shown.
|
@ -313,7 +313,7 @@ in Aho, Sethi and Ullman, "Compilers: Principles, Techniques and Tools"
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">string_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::start</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'-'</span><span class="plain-syntax">: </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">) == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">; </span><span class="comment-syntax"> an isolated minus sign is an ordinary word</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> and otherwise fall into...</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> and otherwise fall through to...</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'0'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'1'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'2'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'3'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'4'</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'5'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'6'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'7'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'8'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'9'</span><span class="plain-syntax">: {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">numeric</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
|
Loading…
Reference in a new issue