13 "Alignment" ,
A_CHAR(
"0,Left,1,1,Right,1,2,Center,1"),
14 "Bool" ,
A_CHAR(
"0,False,1,1,True,1,0,0,1,1,1,1,0,No,1,1,Yes,1,0,Off,2,1,On,2,0,-,1,1,Ok,2"),
15 "Caching" ,
A_CHAR(
"0,Disabled,1,1,Enabled,1,1,Auto,1"),
16 "Case" ,
A_CHAR(
"0,Sensitive,1,1,Ignore,1"),
17 "ContainerOp" ,
A_CHAR(
"0,Insert,1,1,Remove,1,3,GetCreate,4,2,Get,1,4,Create,1"),
18 "CurrentData" ,
A_CHAR(
"0,Keep,1,1,Clear,1"),
19 "Inclusion" ,
A_CHAR(
"0,Include,1,1,Exclude,1"),
20 "Initialization" ,
A_CHAR(
"0,Suppress,1,1,Default,1,2,Nulled,1,0,None,2,1,Initialize,1,2,Zero,1"),
21 "LineFeeds" ,
A_CHAR(
"0,None,1,0,Ignore,1,1,Unix,1,2,WindowsOS,1,3,Platform,1"),
22 "Phase" ,
A_CHAR(
"0,Begin,1,1,End,1"),
23 "Propagation" ,
A_CHAR(
"0,Omit,1,1,ToDescendants,1"),
24 "Reach" ,
A_CHAR(
"0,Global,1,1,Local,1"),
25 "Responsibility" ,
A_CHAR(
"0,KeepWithSender,1,1,Transfer,1"),
26 "Safeness" ,
A_CHAR(
"0,Safe,1,1,Unsafe,1"),
27 "Side" ,
A_CHAR(
"0,Left,1,1,Right,1"),
28 "SortOrder" ,
A_CHAR(
"0,Ascending,1,1,Descending,1"),
29 "SourceData" ,
A_CHAR(
"0,Copy,1,1,Move,1"),
30 "Switch" ,
A_CHAR(
"0,Off,2,1,On,2"),
31 "Timezone" ,
A_CHAR(
"0,Local,1,1,Local,1"),
32 "Timing" ,
A_CHAR(
"0,Async,1,1,Sync,1,0,Asynchronous,1,1,Synchronous,1,1,Synchronized,1"),
33 "ValueReference" ,
A_CHAR(
"0,Absolute,1,1,Relative,1"),
34 "Whitespaces" ,
A_CHAR(
"0,Trim,1,1,Keep,1"),
35 "TSts" ,
A_CHAR(
"0,Unstarted,1,1,Started,3,2,Running,1,3,Done,3,4,Terminated,1"),
36 "TMDWP" ,
A_CHAR(
"0,Lowest,4,500,DeferredDeletion,1,1000,Low,1,2000,Standard,1,4000,Highest,5,3000,High,1"),
37 "VARE<" ,
A_CHAR(
"variables::"),
38 "VARE" ,
A_CHAR(
"0,OK,,1,ErrorOpeningFile,VARERF,2,ErrorWritingFile,VAREWF"),
39 "VARERF" ,
A_CHAR(
"Can't open {}file {!Q'} for reading."),
40 "VAREWF" ,
A_CHAR(
"Can't open {}file {!Q'} for writing."),
41 "VarPrio" ,
A_CHAR(
"0,NONE,1,1000,AutoDetected,1,2000,DefaultValues,1,4000,Standard,1,6000,ConfigFile,2,8000,Environment,1,10000,SessionFile,8,12000,CLI,2,14000,Session,2,max,Protected,1"),
42 "CFGPlgEnv" ,
A_CHAR(
"Environment Variables"),
43 "CFGPlgCLI" ,
A_CHAR(
"Command Line Arguments"),
44 "CFGIniWB" ,
A_CHAR(
"writeback"),
45 "CFGBTF" ,
A_CHAR(
"False I 1,True I 1,0 I 1,1 I 1,No I 1,Yes I 1,Off I 3,On I 2,--- I 1,OK I 2"),
46 "Var0" ,
A_CHAR(
"1|ALIB/LOCALE|S"),
47 "Var1" ,
A_CHAR(
"2|ALIB/WAIT_FOR_KEY_PRESS|B"),
48 "Var2" ,
A_CHAR(
"3|ALIB/HAS_CONSOLE_WINDOW|B"),
49 "Var_C1" ,
A_CHAR(
"Defines the locale of the application. If empty or not set, the system's locale is used.\n")
50 A_CHAR(
"If set, a UTF8 locale should be used, for example, 'us_US.UTF-8' or 'de_DE.UTF-8'"),
51 "Var_C2" ,
A_CHAR(
"If true, the process waits for a key stroke on termination. If empty, under Windows\n")
52 A_CHAR(
"the behavior is detected, under other OSes, it defaults to false."),
53 "Var_C3" ,
A_CHAR(
"Boolean value that denotes what its name indicates. If empty, under Windows the value is\n")
54 A_CHAR(
"detected, under other OSes, it defaults to true."),
55 "CFG_SECT_CMT_ALIB",
A_CHAR(
"@>'/// '@HL-General ALib library settings.\n")
57 "EXIT_MSG" ,
A_CHAR(
"ALIB: Press 'Enter' to exit..."),
58 "ACAlgos" ,
A_CHAR(
"0,NONE,1,31,ALL,1,1,Uncompressed,1,2,MinMax,1,4,Sparse,1,8,VerySparse,1,16,Incremental,1,32,Huffman,1"),
59 "Months" ,
A_CHAR(
"January,February,March,April,May,June,July,August,September,October,November,December"),
60 "Days" ,
A_CHAR(
"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday"),
61 "DurUnts" ,
A_CHAR(
"zero time, days, day, hours, hour, minutes, minute, seconds, second, ms, ms, \u03BCs, \u03BCs, ns, ns"),
62 "FMTDT" ,
A_CHAR(
"yyyy-MM-dd HH:mm:ss"),
63 "FMTCI" ,
A_CHAR(
"[@ sf:sl from ''ya'' by ''ta'']"),
64 "FMTCINT" ,
A_CHAR(
"<None>"),
65 "FMTCINY" ,
A_CHAR(
"<None>"),
66 "FMTCINR" ,
A_CHAR(
"<Null>"),
67 "SF" ,
A_CHAR(
"0,Root,1,1,Current,1,3,HomeConfig,5,2,Home,1,4,Module,1,5,Temp,1,6,VarTemp,1"),
68 "ExcFmtExc" ,
A_CHAR(
"\nAn exception occurred while formatting another (!) exception:\n"),
69 "PHT" ,
A_CHAR(
"0,NotGiven,1,1,String,1,2,Character,1,3,IntBase10,6,4,IntBinary,6,5,IntOctal,6,6,IntHex,6,7,Float,1,8,Bool,1,9,HashCode,1,10,Fill,4"),
70 "FE<" ,
A_CHAR(
"format::"),
71 "FE0" ,
A_CHAR(
"11,ArgumentIndexIs0,FMG11"),
72 "FE1" ,
A_CHAR(
"12,ArgumentIndexOutOfBounds,FMG12"),
73 "FE2" ,
A_CHAR(
"13,IncompatibleTypeCode,FMG13"),
74 "FE3" ,
A_CHAR(
"101,MissingClosingBracket,FPS101"),
75 "FE4" ,
A_CHAR(
"102,MissingPrecisionValuePS,FPS102"),
76 "FE5" ,
A_CHAR(
"103,DuplicateTypeCode,FPS103"),
77 "FE6" ,
A_CHAR(
"104,UnknownTypeCode,FPS104"),
78 "FE7" ,
A_CHAR(
"105,ExclamationMarkExpected,FPS105"),
79 "FE8" ,
A_CHAR(
"106,UnknownConversionPS,FPS106"),
80 "FE9" ,
A_CHAR(
"107,PrecisionSpecificationWithInteger,FPS107"),
81 "FE10" ,
A_CHAR(
"108,MissingReplacementStrings,FPS108"),
82 "FE11" ,
A_CHAR(
"201,NegativeValuesInBracketsNotSupported,FJS101"),
83 "FE12" ,
A_CHAR(
"202,MissingPrecisionValueJS,FJS102"),
84 "FE13" ,
A_CHAR(
"203,HexadecimalFloatFormatNotSupported,FJS103"),
85 "FE14" ,
A_CHAR(
"204,NoAlternateFormOfConversion,FJS104"),
86 "FE15" ,
A_CHAR(
"205,NoPrecisionWithConversion,FJS105"),
87 "FE16" ,
A_CHAR(
"206,UnknownDateTimeConversionSuffix,FJS106"),
88 "FE17" ,
A_CHAR(
"207,UnknownConversionJS,FJS107"),
89 "FE18" ,
A_CHAR(
"501,UnknownPropertyInFormatString,PFM501"),
90 "FE19" ,
A_CHAR(
"502,ErrorInResultingFormatString,PFM502"),
91 "FE20" ,
A_CHAR(
"510,MissingConfigurationVariable,PFM510"),
92 "FE21" ,
A_CHAR(
"601,UnknownMarker,ST601"),
93 "FE22" ,
A_CHAR(
"602,EndmarkerWithoutStart,ST602"),
94 "FMG11" ,
A_CHAR(
"Argument index 0 not allowed.\n")
97 "FMG12" ,
A_CHAR(
"Argument index #{} is out of bounds. {} arguments are available.\n")
100 "FMG13" ,
A_CHAR(
"Detected placeholder type does not match given argument.\n")
101 A_CHAR(
"Placeholder number: {}\n")
102 A_CHAR(
"Placeholder type: {} ({})\n")
103 A_CHAR(
"Deduced argument type: {!Q}\n")
106 "FPS101" ,
A_CHAR(
"Closing bracket '}}' of placeholder not found (or syntax error).\n")
109 "FPS102" ,
A_CHAR(
"Missing precision value after '.' character.\n")
112 "FPS103" ,
A_CHAR(
"Duplicate type code {!Q'} given (previous was {!Q'}).\n")
115 "FPS104" ,
A_CHAR(
"Unknown type code {!Q'} given.\n")
118 "FPS105" ,
A_CHAR(
"Expected '!' in continuation of placeholder.\n")
121 "FPS106" ,
A_CHAR(
"Unknown conversion \"!{}\".\n")
124 "FPS107" ,
A_CHAR(
"Precision not allowed with integer format.\n")
127 "FPS108" ,
A_CHAR(
"Missing pair of replacement strings \"<src><repl>\" after \"!Replace\".\n")
130 "FJS101" ,
A_CHAR(
"Brackets for negative values not implemented/supported.\n")
133 "FJS102" ,
A_CHAR(
"Missing precision value after '.' character.\n")
136 "FJS103" ,
A_CHAR(
"Hexadecimal float format not implemented/supported.\n")
139 "FJS104" ,
A_CHAR(
"Alternate form '#' not supported with conversion {!Q}.\n")
142 "FJS105" ,
A_CHAR(
"Precision specification (.{}) is not supported with conversion {!Q}.\n")
145 "FJS106" ,
A_CHAR(
"Unknown date/time conversion suffix {!Q'}.\n")
148 "FJS107" ,
A_CHAR(
"Unknown conversion character {!Q'}.\n")
151 "PFM501" ,
A_CHAR(
"Unknown property identifier {}{} in format string.\n")
152 A_CHAR(
"Format string: {!Q}.\n")
153 A_CHAR(
"Allowed identifiers:"),
154 "PFM502" ,
A_CHAR(
"Error in resulting format string.\n")
155 A_CHAR(
"Source format: {!Q}."),
156 "PFM510" ,
A_CHAR(
"Missing or empty configuration variable {!Q} containing user-defined format string."),
157 "ST601" ,
A_CHAR(
"Unknown marker at position {}. \n")
158 A_CHAR(
" Marked text: {!Q}. \n")
160 "ST602" ,
A_CHAR(
"Found an end-marker without a start marker at position {}. \n")
161 A_CHAR(
" Marked text: {!Q}. \n")
163 "BS" ,
A_CHAR(
"0,B,3,1,KiB,3,2,MiB,3,3,GiB,3,4,TiB,3,5,PiB,3,6,EiB,3,7,ZiB,3,8,YiB,3,9,RiB,3,10,QiB,3,11,B,1,12,kB,2,13,MB,2,14,GB,2,15,TB,2,16,PB,2,17,EB,2,18,ZB,2,19,YB,2,20,RB,2,21,QB,2"),
175 #if ALIB_DEBUG && !ALIB_DEBUG_ASSERTION_PRINTABLES
177 "Instances of class Basecamp must not be created. Use singleton alib::BASECAMP" )
186#if !ALIB_CAMP_OMIT_DEFAULT_RESOURCES
200DOX_MARKER( [DOX_ENUMS_MAKE_PARSABLE_22] )
202DOX_MARKER( [DOX_ENUMS_MAKE_PARSABLE_22] )
234DOX_MARKER([DOX_VARIABLES_DECLARATION7])
236DOX_MARKER([DOX_VARIABLES_DECLARATION7])
253 parser=
GetResource(
"Days" );
for(
int i= 0 ; i < 7 ; ++i ) { CalendarDateTime:: DAY_NAMES[i]= parser.
ConsumeToken(
','); }
256 for(
int i= 0 ; i < int(DayTimeUnits::SIZE_OF_UNITS) ; ++i )
259 ALIB_ASSERT( DT_UNITS[
size_t(
int(DayTimeUnits::SIZE_OF_UNITS)-1)].IsNotEmpty(),
"BASECAMP" )
281 if( !setlocale(LC_ALL, nLocale ) ) {
282 NString256 msg(
"ALib Error: setlocale(\""); msg << nLocale <<
"\") failed. Setting read from ";
283 msg << ( receivedFrom == 1 ?
"config variable 'ALIB_LOCALE'" :
284 receivedFrom == 2 ?
"environment variable 'LANG'" :
285 receivedFrom == 3 ?
"environment variable 'LANGUAGE'" :
"ERROR" );
289 std::cerr <<
". Trying 'setlocale(LC_ALL, \"\")': ";
290 if ( setlocale(LC_ALL,
"" ) )
291 std::cerr <<
" success.";
293 std::cerr <<
"failed. Trying 'setlocale(LC_ALL, \"C\")': ";
294 if ( setlocale(LC_ALL,
"C" ) )
295 std::cerr <<
" success.";
297 std::cerr << std::endl <<
" Panic: No standard locale setting was successful!";
299 std::cerr << std::endl;
324 (void) varHasConsoleWindow.
Define();
333 #if defined(_WIN32) && ALIB_DEBUG
339 (void) varWaitForKeyPress.
Define();
348 if (
BASECAMP.WaitForKeyPressOnTermination ) {
350 OutputDebugStringA(
"\r\nALIB: Waiting for 'Enter' key in the console window.\r\n" );
353 std::cout << std::endl <<
GetResource(
"EXIT_MSG") << std::endl;
354 while ( getchar() !=
'\n' )
369 #if (defined(__unix__) || defined(__APPLE__)) && !DOXYGEN
370namespace {
String DebuggerProcessNames=
A_CHAR(
"gdb|debugserver"); }
375#if defined(__unix__) || defined(__APPLE__)
380 if ( parentPID == 0 )
384 Tokenizer tknzr( DebuggerProcessNames,
'|' );
397 #pragma message ("Unknown Platform in file: " __FILE__ )
#define IF_ALIB_THREADS(...)
#define ALIB_ASSERT(cond, domain)
#define IF_ALIB_BITBUFFER(...)
#define IF_ALIB_THREADMODEL(...)
#define ALIB_ASSERT_ERROR(cond, domain,...)
bool WaitForKeyPressOnTermination
virtual void Bootstrap() override
virtual void Shutdown(ShutdownPhases phase) override
BootstrapPhases GetBootstrapState()
SharedConfiguration config
Camp(const NCString &resourceCategory)
bool Do(const NString &alibrcFileName, const NString &callingFile, Camp &campInstance, const NString &resourceCategory, bool allowReplacements, const NString &cppFileName)
const String & GetResource(const NString &name)
NCString ResourceCategory
ResourcePool & GetResourcePool()
virtual void BootstrapBulk(const nchar *category,...)=0
TAString & _(const TAppendable &src)
constexpr integer Length() const
constexpr bool IsEmpty() const
constexpr bool IsNotEmpty() const
constexpr const TChar * Buffer() const
bool Equals(const TString< TChar > &rhs) const
bool StartsWith(const TString &needle) const
TString< TChar > ConsumeToken(TChar separator=',', lang::Inclusion includeSeparator=lang::Inclusion::Include)
static String MONTH_NAMES[12]
TSubstring< TChar > & Next(lang::Whitespaces trimming=lang::Whitespaces::Trim, TChar newDelim='\0')
uinteger PPID
The parent's process id as AString. (Unix like OS / Mac OS only.).
static const ProcessInfo & Current()
bool Define(Priority requestedPriority=Priority::Standard)
void(* PLUGIN)(const CallerInfo &ci, int type, std::string_view domain, std::string_view msg)
@ HAS_CONSOLE_WINDOW
See #"alibcvALIB_HAS_CONSOLE_WINDOW".
@ LOCALE
See #"alibcvALIB_LOCALE".
@ WAIT_FOR_KEY_PRESS
See #"alibcvALIB_WAIT_FOR_KEY_PRESS".
void Bootstrap(camp::Camp &camp, const NString &name, character innerDelim=',', character outerDelim=',')
TMonoAllocator< lang::HeapAllocator > GLOBAL_ALLOCATOR
strings::TNumberFormat< character > NumberFormat
Type alias in namespace #"%alib".
resources::ResourcePool ResourcePool
Type alias in namespace #"%alib".
strings::TCString< nchar > NCString
Type alias in namespace #"%alib".
@ Final
The final initialization phase. Here, camps are initializing their custom setup.
variables::Variable Variable
Type alias in namespace #"%alib".
strings::util::TTokenizer< character > Tokenizer
Type alias in namespace #"%alib".
ShutdownPhases
Termination levels usable with #"alib_mod_bs_camps;Bootstrapping ALib Camps".
strings::TString< character > String
Type alias in namespace #"%alib".
system::ProcessInfo ProcessInfo
Type alias in namespace #"%alib".
strings::TSubstring< character > Substring
Type alias in namespace #"%alib".
camp::Basecamp BASECAMP
The singleton instance of ALib Camp class #"Basecamp".
NLocalString< 256 > NString256
Type alias name for #"TLocalString;TLocalString<nchar,256>".
LocalString< 256 > String256
Type alias name for #"TLocalString;TLocalString<character,256>".
lang::uinteger uinteger
Type alias in namespace #"%alib".
#define ALIB_STRINGS_TO_NARROW( src, dest, bufSize)
static bool Get(const CString &varName, AString &target, lang::CurrentData targetData=lang::CurrentData::Clear)