token Class Reference
#include <token.h>
Detailed Description
Definition at line 43 of file token.h.
Constructor & Destructor Documentation
token::token |
( |
token & |
|
) |
[private] |
Member Function Documentation
int token::ck_hex |
( |
int |
c |
) |
[static, private] |
Definition at line 291 of file token.cpp.
00292 {
00293 if( isdigit( c ) )
00294 {
00295 return(c - '0');
00296 }
00297 c = tolower( c );
00298 if( ( c >= 'a' ) && ( c <= 'f' ) )
00299 return( c - 'a' + 10 );
00300 return -1;
00301 }
Definition at line 128 of file token.cpp.
00129 {
00130 if( tk_strp == tk_stre )
00131 return 0;
00132 emsg("extra tokens are invalid\n");
00133 return 1;
00134 }
void token::closefile |
( |
|
) |
|
int token::cmp |
( |
const char * |
s |
) |
|
Definition at line 138 of file token.cpp.
00139 {
00140 int len;
00141
00142 if( tk_tkl == 0 )
00143 return 1;
00144 len = strlen( s );
00145 if( len != tk_tkl )
00146 return 1;
00147 return memcmp( s, tk_tkp, tk_tkl );
00148 }
char * token::emsg |
( |
const char * |
s |
) |
|
Definition at line 339 of file token.cpp.
00340 {
00341 while( kp->kw_word )
00342 {
00343 if( !cmp( kp->kw_word ) )
00344 return( kp );
00345 kp++;
00346 }
00347 return NULL;
00348 }
int token::getdouble |
( |
double * |
num |
) |
|
Definition at line 208 of file token.cpp.
00208 {
00209 int len;
00210 char *p;
00211 double x;
00212 bool fraction = false;
00213 double divby = 0;
00214
00215 x = 0;
00216 len = tk_tkl;
00217 p = tk_tkp;
00218 while(len-- > 0)
00219 {
00220 if( (isdigit(*p)) && (fraction == false) )
00221 {
00222 x *= 10;
00223 x += (*p & 0x0f);
00224 }
00225 else if( (isdigit(*p)) && (fraction == true) )
00226 {
00227 x += (*p & 0x0f)/ divby;
00228 divby *= 10.0;
00229 }
00230 else if( ( *p == '.' ) || ( *p == ',' ) )
00231 {
00232 fraction = true;
00233 divby = 10.0;
00234 }
00235 else return -1;
00236 p++;
00237 }
00238 *num = x;
00239 return 0;
00240 }
int token::gethex |
( |
char * |
o, |
|
|
int |
ol | |
|
) |
| | |
Definition at line 246 of file token.cpp.
00247 {
00248 int len;
00249 char *t1, *o1;
00250 int n0, n1;
00251
00252 o1 = o;
00253 t1 = tk_tkp;
00254 len = tk_tkl;
00255 while( len >= 2 )
00256 {
00257 if( (( n0 = ck_hex( *t1 )) < 0 ) || (( n1 = ck_hex(*( t1 + 1 )) ) < 0 ) )
00258 {
00259 emsg("invalid hex char");
00260 return 1;
00261 }
00262 if( o1 > ( o + ol ) )
00263 {
00264 emsg("hex value too int");
00265 return 1;
00266 }
00267 *o1++ = ( n0 << 4 ) | n1;
00268 len -= 2;
00269 t1 += 2;
00270
00271 if( ( len > 0 ) && ( *t1 == '-' ) )
00272 {
00273 t1++;
00274 len--;
00275 }
00276 }
00277 if( len != 0 )
00278 {
00279 emsg("odd number of nibbles in hex value");
00280 return 1;
00281 }
00282
00283 if( o1 != o + ol )
00284 {
00285 emsg("hex value too short");
00286 return 1;
00287 }
00288 return 0;
00289 }
int token::getnumber |
( |
int * |
num |
) |
|
Definition at line 180 of file token.cpp.
00181 {
00182 int len;
00183 char *p;
00184 int x;
00185
00186 x = 0;
00187 len = tk_tkl;
00188 p = tk_tkp;
00189 while( len-- > 0 )
00190 {
00191 if( isdigit( *p ) )
00192 {
00193 x *= 10;
00194 x += ( *p & 0x0f );
00195 }
00196 else return -1;
00197 p++;
00198 }
00199 *num = x;
00200 return 0;
00201 }
int token::getstr |
( |
char * |
s, |
|
|
int |
maxlen | |
|
) |
| | |
Definition at line 151 of file token.cpp.
00152 {
00153 if( tk_tkl == 0 ) return 1;
00154 if( tk_tkl > maxlen )
00155 {
00156 emsg("string too int");
00157 return 1;
00158 }
00159 memcpy( s, tk_tkp, tk_tkl );
00160 s[tk_tkl] = '\0';
00161 return 0;
00162 }
int token::getstrnew |
( |
char * |
s[] |
) |
|
Definition at line 88 of file token.cpp.
00089 {
00090 char *t1, *te, *t2;
00091 char c;
00092 int len;
00093
00094 t1 = tk_strp;
00095 te = tk_stre;
00096
00097 while((t1 < te) && ((c = *t1) == ' ' || c == '\t'))
00098 t1++;
00099
00100 t2 = t1;
00101 while((t2 < te) && (c = *t2) != ' ' && c != '\t')
00102 t2++;
00103
00104 tk_strp = t2;
00105 tk_tkp = t1;
00106 tk_tkl = t2 - t1;
00107 if(tk_flags & TK_DEBUG_TOKEN)
00108 {
00109 len = TK_WSTRL - 30;
00110 if(tk_tkl < len) len = tk_tkl;
00111 memcpy(tk_wstr, tk_tkp, len);
00112 *(tk_wstr+len) = '\0';
00113 if(tk_cerr)
00114 {
00115 *tk_cerr << "token: >" << tk_wstr << "<" << endl;
00116 }
00117 }
00118 }
int token::openfile |
( |
const char * |
fname |
) |
|
int token::parseline |
( |
struct token_kw * |
kp |
) |
|
void token::setcerr |
( |
ostream * |
x |
) |
|
void token::setstring |
( |
char * |
adr, |
|
|
int |
len | |
|
) |
| | |
Field Documentation
The documentation for this class was generated from the following files: