本文整理汇总了C++中skip_white函数的典型用法代码示例。如果您正苦于以下问题:C++ skip_white函数的具体用法?C++ skip_white怎么用?C++ skip_white使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了skip_white函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: skip_white
char *skip_token(char *ptr)
{
ptr = skip_white(ptr);
ptr = skip_not_white(ptr);
ptr = skip_white(ptr);
return (ptr);
}
示例2: parse_comment
static void parse_comment( char* in, M3u_Playlist::info_t& info, bool first )
{
in = skip_white( in + 1 );
const char* field = in;
while ( *in && *in != ':' )
in++;
if ( *in == ':' )
{
const char* text = skip_white( in + 1 );
if ( *text )
{
*in = 0;
if ( !strcmp( "Composer", field ) ) info.composer = text;
else if ( !strcmp( "Engineer", field ) ) info.engineer = text;
else if ( !strcmp( "Ripping" , field ) ) info.ripping = text;
else if ( !strcmp( "Tagging" , field ) ) info.tagging = text;
else
text = 0;
if ( text )
return;
*in = ':';
}
}
if ( first )
info.title = field;
}
示例3: read_lisp_symbol
static void
read_lisp_symbol (FILE *infile, char *buffer)
{
char c;
char *fillp = buffer;
skip_white (infile);
while (1)
{
c = getc (infile);
if (c == '\\')
*(++fillp) = getc (infile);
else if (c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '(' || c == ')')
{
ungetc (c, infile);
*fillp = 0;
break;
}
else
*fillp++ = c;
}
if (! buffer[0])
fprintf (stderr, "## expected a symbol, got '%c'\n", c);
skip_white (infile);
}
示例4: parse_mask
static int parse_mask(lbind_Enum *et, const char *s, int *penum, lua_State *L) {
*penum = 0;
while (*s != '\0') {
const char *e;
int inversion = 0;
lbind_EnumItem *item;
s = skip_white(s);
if (*s == '~') {
inversion = 1;
s = skip_white(s+1);
}
if (*s == '\0') break;
e = skip_ident(s);
if (e == s || (item = lbind_findenum(et, s, e-s)) == NULL) {
if (L == NULL) return 0;
if (e == s)
return luaL_error(L, "unexpected token '%c' in %s", *s, et->name);
else {
lua_pushlstring(L, s, e-s);
return luaL_error(L, "unexpected mask '%s' in %s", lua_tostring(L, -1), et->name);
}
}
s = e;
if (inversion)
*penum &= ~item->value;
else
*penum |= item->value;
}
return 1;
}
示例5: skip_white
pdf_obj *parse_pdf_array (char **start, char *end)
{
pdf_obj *result, *tmp1;
#ifdef MEM_DEBUG
MEM_START
#endif
skip_white(start, end);
if (*((*start)++) != '[')
return NULL;
result = pdf_new_array ();
skip_white(start, end);
while (*start < end &&
**start != ']') {
if ((tmp1 = parse_pdf_object (start, end)) == NULL) {
pdf_release_obj (result);
return NULL;
};
pdf_add_array (result, tmp1);
skip_white(start, end);
}
if (*start >= end) {
pdf_release_obj (result);
fprintf (stderr, "\nArray ended prematurely\n");
return NULL;
}
(*start)++;
#ifdef MEM_DEBUG
MEM_END
#endif
return result;
}
示例6: jump_etc
char *
jump_etc(char *op)
{ char *p = op;
/* try to get the type separated from the name */
p = skip_white(p); /* initial white space */
if (strncmp(p, "enum", strlen("enum")) == 0) /* special case: a two-part typename */
{ p += strlen("enum")+1;
p = skip_white(p);
}
p = skip_nonwhite(p); /* type name */
p = skip_white(p); /* white space */
while (*p == '*') p++; /* decorations */
p = skip_white(p); /* white space */
if (*p == '\0')
fatal("c_state format (%s)", op);
if (strchr(p, '[')
&& !strchr(p, '{'))
{ non_fatal("array initialization error, c_state (%s)", p);
return (char *) 0;
}
return p;
}
示例7: parse_any
NODE*
parse_any(SCANNER *s, int mode) {
NODE *x = NULL;
int c;
skip_white(s);
if (s_eof(s)) return raise(s, "unexpected end of file");
c = s_peek(s);
if (c == '(') {
s_getc(s);
x = parse_paren(s, mode);
if (x == NULL) return NULL;
if (s_eof(s)) {
return raise(s, "unexpected end of file");
}
skip_white(s);
if (s_getc(s) != ')') {
return invalid_token(s);
}
} else if (c == '\'')
x = parse_quote(s);
else if (c == '`')
return parse_bquote(s);
else if (c == '"')
x = parse_string(s);
else if (isalnum((int)c) || strchr(SYMBOL_CHARS, c))
x = parse_primitive(s);
else
return invalid_token(s);
return x;
}
示例8: get_token
// Get next token.
static parse_ptr get_token(parse_ptr src, token_info & token, const char * path, int & line)
{
src = skip_white(src, path, line);
switch (*src) {
case '{': case '}': case ',':
// Simple token
token.type = *src; token.line = line;
++src;
break;
case '"':
// String constant
token.type = '"'; token.line = line;
token.value = "";
do {
for (++src; *src != '"'; ++src) {
char c = *src;
if (!c || c == '\n' || (c == '\\' && !src[1])) {
pout("%s(%d): Missing terminating '\"'\n", path, line);
token.type = '?'; token.line = line;
return src;
}
if (c == '\\') {
c = *++src;
switch (c) {
case 'n' : c = '\n'; break;
case '\n': ++line; break;
case '\\': case '"': break;
default:
pout("%s(%d): Unknown escape sequence '\\%c'\n", path, line, c);
token.type = '?'; token.line = line;
continue;
}
}
token.value += c;
}
// Lookahead to detect string constant concatentation
src = skip_white(++src, path, line);
} while (*src == '"');
break;
case 0:
// EOF
token.type = 0; token.line = line;
break;
default:
pout("%s(%d): Syntax error, invalid char '%c'\n", path, line, *src);
token.type = '?'; token.line = line;
while (*src && *src != '\n')
++src;
break;
}
return src;
}
示例9: skip_white
// Parse next letter/number pair.
// Returns the remaining line or NULL if end reached.
static const char *gcodep_parse_pair_with_linenumber(int line_num,
const char *line,
char *letter, float *value,
FILE *err_stream) {
// TODO: error callback when we have errors with messages.
if (line == NULL)
return NULL;
line = skip_white(line);
if (*line == '\0' || *line == ';' || *line == '%')
return NULL;
if (*line == '(') { // Comment between words; e.g. G0(move) X1(this axis)
while (*line && *line != ')')
line++;
line = skip_white(line + 1);
if (*line == '\0') return NULL;
}
*letter = toupper(*line++);
if (*line == '\0') {
fprintf(err_stream ? err_stream : stderr,
"// Line %d G-Code Syntax Error: expected value after '%c'\n",
line_num, *letter);
return NULL;
}
// If this line has a checksum, we ignore it. In fact, the line is done.
if (*letter == '*')
return NULL;
while (*line && isspace(*line))
line++;
// Parsing with strtof() can be problematic if the line does
// not contain spaces, and strof() sees the sequence 0X... as it treats that
// as hex value. E.g. G0X1. Unlikely, but let's do a nasty workaround:
char *repair_x = (*(line+1) == 'x' || *(line+1) == 'X') ? (char*)line+1 : NULL;
if (repair_x) *repair_x = '\0'; // pretend that is the end of number.
char *endptr;
*value = strtof(line, &endptr);
if (repair_x) *repair_x = 'X'; // Put the 'X' back.
if (line == endptr) {
fprintf(err_stream ? err_stream : stderr, "// Line %d G-Code Syntax Error:"
" Letter '%c' is not followed by a number `%s`.\n",
line_num, *letter, line);
return NULL;
}
line = endptr;
line = skip_white(line); // Makes the line better to deal with.
return line; // We parsed something; return whatever is remaining.
}
示例10: has_ident
char *
has_ident(const char *name,
char *first,
char *last)
{
char *base;
char *s, *t, *d, c;
name = leaf_of(name);
s = first;
while ((t = base = strchr(s, '$')) != 0 && (t < last)) {
t++;
if ((s = exact(skip_camel(t), "Id")) != 0
|| (s = exact(t, "Header")) != 0) {
if (*s == '$') {
return base;
} else if ((*s == ':')
&& is_inline(t, '$')) {
/* RCS identifier can have pathname prepended */
s = skip_white(s + 1);
d = skip_text(s);
c = *d;
*d = EOS;
while (is_inline(s, '/'))
s++;
*d = c;
if ((s = same_name(s, name)) != 0
&& (s = exact(s, ",v")) != 0
&& isspace(*s))
return base;
}
}
s = t;
}
s = first;
while ((t = base = strchr(s, '@')) != 0 && (t < last)) {
t++;
if ((s = exact(t, "(#)")) != NULL) {
t = s;
/* some versions of SCCS don't do module-name */
if ((s = same_name(t, name)) != NULL)
return base;
t = skip_text(t); /* module-name, if any */
t = skip_white(t);
if ((s = same_name(t, name)) != NULL)
return base;
}
s = t;
}
return 0;
}
示例11: parse_paren
NODE*
parse_paren(SCANNER *s, int mode) {
NODE *head, *node, *x;
skip_white(s);
if (s_eof(s)) return raise(s, "unexpected end of file");
head = node = new_node();
node->t = NODE_CELL;
while (!s_eof(s) && s_peek(s) != ')') {
NODE *child;
char q = s_peek(s) == ',';
if (q) s_getc(s);
child = parse_any(s, PARSE_ANY);
if (child == NULL) return NULL;
if ((mode & PARSE_BQUOTE) != 0 && !q) {
NODE *r = new_node();
r->t = NODE_QUOTE;
r->car = child;
child = r;
}
if (child->t == NODE_IDENT && !strcmp(".", child->s)) {
if (!head->car) {
free_node(child);
return raise(s, "illegal dot operation");
}
free_node(child);
child = parse_any(s, PARSE_ANY);
if (child == NULL) return NULL;
node->cdr = child;
break;
} else {
if (head->car) {
x = new_node();
x->t = NODE_CELL;
node->cdr = x;
node = x;
}
node->car = child;
}
skip_white(s);
}
if (!head->car && !head->cdr)
head->t = NODE_NIL;
return head;
}
示例12: proc_parse_config
void
proc_parse_config(const char *token, char *cptr)
{
char tmpname[STRMAX];
struct myproc **procp = &procwatch;
/*
* don't allow two entries with the same name
*/
copy_nword(cptr, tmpname, sizeof(tmpname));
if (get_proc_by_name(tmpname) != NULL) {
config_perror("Already have an entry for this process.");
return;
}
/*
* skip past used ones
*/
while (*procp != NULL)
procp = &((*procp)->next);
(*procp) = (struct myproc *) calloc(1, sizeof(struct myproc));
if (*procp == NULL)
return; /* memory alloc error */
numprocs++;
/*
* not blank and not a comment
*/
copy_nword(cptr, (*procp)->name, sizeof((*procp)->name));
cptr = skip_not_white(cptr);
if ((cptr = skip_white(cptr))) {
(*procp)->max = atoi(cptr);
cptr = skip_not_white(cptr);
if ((cptr = skip_white(cptr)))
(*procp)->min = atoi(cptr);
else
(*procp)->min = 0;
} else {
/* Default to asssume that we require at least one
* such process to be running, but no upper limit */
(*procp)->max = 0;
(*procp)->min = 1;
/* This frees "proc <procname> 0 0" to monitor
* processes that should _not_ be running. */
}
#ifdef NETSNMP_PROCFIXCMD
sprintf((*procp)->fixcmd, NETSNMP_PROCFIXCMD, (*procp)->name);
#endif
DEBUGMSGTL(("ucd-snmp/proc", "Read: %s (%d) (%d)\n",
(*procp)->name, (*procp)->max, (*procp)->min));
}
示例13: parse_fmtargs
static void parse_fmtargs(parse_info *info, int *wide, int *count) {
skip_white(info->fmt);
parse_optint(&info->fmt, wide);
skip_white(info->fmt);
if (*info->fmt == '*') {
++info->fmt;
skip_white(info->fmt);
parse_optint(&info->fmt, count);
}
else if (*info->fmt == '$') {
++info->fmt;
*count = -1;
}
skip_white(info->fmt);
}
示例14: parse_html_tag
static int parse_html_tag (char **start, char *end)
{
int result = -1;
char *token = NULL;
int closing = 0;
skip_white(start, end);
if (*start < end) {
if (**start == '/') {
(*start)++;
closing = 1;
}
if (*start < end && (token = parse_ident (start, end))) {
downcase (token);
{
int i;
for (i=0; i<sizeof(tags)/sizeof(tags[0]); i++) {
if (!strcmp (token, tags[i])) {
result = i;
if (closing)
result += sizeof(tags)/sizeof(tags[0]);
}
break;
}
if (i>=sizeof(tags)/sizeof(tags[0]))
result = -1;
}
RELEASE (token);
}
}
return result;
}
示例15: _pm_save_everything
/**
* @internal
* parse mode: save everything
*/
void
_pm_save_everything(FILE *f, netsnmp_container *cin, int flags)
{
char line[STRINGMAX], *ptr;
size_t len;
netsnmp_assert(NULL != f);
netsnmp_assert(NULL != cin);
while (fgets(line, sizeof(line), f) != NULL) {
ptr = line;
len = strlen(line) - 1;
if (line[len] == '\n')
line[len] = 0;
/*
* save blank line or comment?
*/
if (flags & PM_FLAG_SKIP_WHITESPACE) {
if (NULL == (ptr = skip_white(ptr)))
continue;
}
ptr = strdup(line);
if (NULL == ptr) {
snmp_log(LOG_ERR,"malloc failed\n");
break;
}
CONTAINER_INSERT(cin,ptr);
}
}