SourceGenerate can generate simple string lists, complex codes according to string items, escape/unescape strings, and very complex code fragments by running c code directly.
Here are steps to generate code for each of the types.
1. SimpleString: generate simple string lists. The following example shows using printf to print a changed string.
You can use any number of variables. You can also use very complex code.
2. StringItem: Generate code according to template.
There are two variables(@@ $$) defined in the source template. You can name them as you like.
For each row in string items, there are two sub strings corresponding to @@ and $$.
For the first line, @@ in template code ( msgr_@@, /* Request handler for message ID $$ */ ) will be replaced with msgr_set_regparams, $$ will be replaced with 0x10B.
After corresponding replacement, the first line will generate ( msgr_set_regparams, /* Request handler for message ID 0x10B */ ), the second line will generate msgr_request_regparams, /* Request handler for message ID 0x10C */, and so on.
3. SourceEscape: Generate escape/unescape string or code. Escape code is a code segment enclosed in double quotation marks, which can be directly used in your code.
3.1 Escape String
3.2 Escape Code
3.1 Unescape String
4. RunCScript: Open and run a C file to generate code.
You can write very complex code file. Note that the code file needs to have a main function and no syntax errors.
The following is the contents of a simple main. c file.
#include <stdio.h>
char *printCmd[]={
" msgr_set_regparams, /* Request handler for message ID 0x%X */\n",
" msgr_request_regparams, /* Request handler for message ID 0x%X */\n",
" msgr_set_power, /* Request handler for message ID 0x%X */\n",
" msgr_request_power, /* Request handler for message ID 0x%X */\n",
" msgr_event_ontemp, /* Request handler for message ID 0x%X */\n",
" msgr_set_config, /* Request handler for message ID 0x%X */\n",
" msgr_set_securityconfig, /* Request handler for message ID 0x%X */\n",
" msgr_set_visibility, /* Request handler for message ID 0x%X */\n",
" msgr_set_passphrase, /* Request handler for message ID 0x%X */\n",
" msgr_request_config, /* Request handler for message ID 0x%X */\n",
};
void main(){
int i, j;
for (i = 0; i < 10; i++){
j = i + 0x010B;
printf(printCmd[i], j);
}
}