00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <windows.h>
00033 #include "error_management.h"
00034 #include "script.h"
00035
00036 _fct_is_separator script_is_separator = NULL;
00037
00038 int templates_is_space(char c)
00039 {
00040 int result;
00041
00042 switch(c)
00043 {
00044
00045 case ' ':
00046 case '\t':
00047 case '\n':
00048 case '\r':
00049
00050 result = 1;
00051 break;
00052
00053 default:
00054
00055 if (script_is_separator)
00056 result = script_is_separator(c);
00057
00058 else
00059 result = 0;
00060 }
00061
00062 return result;
00063 }
00064
00065 void script_set_is_separator_fct(_fct_is_separator is_separator)
00066 {
00067
00068 script_is_separator = is_separator;
00069 }
00070
00071 char *templates_skip_spaces(char *_str)
00072 {
00073 char *_pstr;
00074
00075 ASSERT(_str);
00076
00077 _pstr = _str;
00078
00079 while(templates_is_space(*_pstr))
00080 _pstr++;
00081
00082 return _pstr;
00083 }
00084
00085 char *templates_get_arg(char *_args, int num)
00086 {
00087 char *_new_args;
00088 int i;
00089
00090 ASSERT(_args);
00091
00092 _new_args = _args;
00093
00094 _new_args = templates_skip_spaces(_new_args);
00095
00096
00097 for(i=0; i<num; i++)
00098 {
00099
00100 while(!templates_is_space(*_new_args))
00101 _new_args++;
00102
00103 _new_args = templates_skip_spaces(_new_args);
00104 }
00105
00106
00107 return _new_args;
00108 }
00109
00110 char *templates_get_string(char *_src, char *_dst)
00111 {
00112 BOOL hold;
00113
00114 ASSERT(_src);
00115
00116 _src = templates_skip_spaces(_src);
00117
00118 hold = FALSE;
00119
00120 while((!templates_is_space(*_src) || hold) && *_src)
00121 {
00122
00123 switch(*_src)
00124 {
00125
00126 case '\"':
00127
00128 hold = !hold;
00129 break;
00130
00131 default:
00132 *_dst++ = *_src;
00133 }
00134 *_src++;
00135 }
00136 *_dst = '\0';
00137
00138 _src = templates_skip_spaces(_src);
00139
00140 return _src;
00141 }
00142
00143 int script_get_value(char *_str)
00144 {
00145 int value;
00146 char *_pstr;
00147
00148 ASSERT(_str);
00149
00150 _str = templates_skip_spaces(_str);
00151
00152 value = 0;
00153
00154
00155 if (_str[0] == '0' && _str[1] == 'x')
00156 sscanf(&_str[2], "%X", &value);
00157
00158 else if (_pstr = strchr(_str, 'h'))
00159 {
00160 *_pstr = '\0';
00161 sscanf(_str, "%X", &value);
00162 *_pstr = 'h';
00163 }
00164
00165 else
00166 sscanf(_str, "%i", &value);
00167
00168 return value;
00169 }