Postfix3.3.1
マクロ定義 | 関数
tok822_parse.c ファイル
#include <sys_defs.h>
#include <ctype.h>
#include <string.h>
#include <vstring.h>
#include <msg.h>
#include <stringops.h>
#include "lex_822.h"
#include "quote_822_local.h"
#include "tok822.h"

[ソースコード]

マクロ定義

#define COLLECT(t, s, c, cond)
 
#define COLLECT_SKIP_LAST(t, s, c, cond)   { COLLECT(t,s,c,cond); if (*s) s++; }
 
#define SKIP(tp, cond)
 
#define MOVE_COMMENT_AND_CONTINUE(tp, right)
 
#define SKIP_MOVE_COMMENT(tp, cond, right)
 
#define DO_WORD   (1<<0) /* finding a word is ok here */
 
#define DO_GROUP   (1<<1) /* doing an address group */
 
#define ADD_COMMA   ',' /* resynchronize */
 
#define NO_MISSING_COMMA   0
 
#define MAX_NONADDR_LENGTH   250
 
#define RESET_NONADDR_LENGTH
 
#define ENFORCE_NONADDR_LENGTH
 
#define NON_OPERATOR(x)
 
#define GLUE(left, rite)   { left->next = rite; rite->prev = left; }
 

関数

VSTRINGtok822_internalize (VSTRING *vp, TOK822 *tree, int flags)
 
VSTRINGtok822_externalize (VSTRING *vp, TOK822 *tree, int flags)
 
TOK822tok822_scan_limit (const char *str, TOK822 **tailp, int tok_count_limit)
 
TOK822tok822_parse_limit (const char *str, int tok_count_limit)
 
TOK822tok822_scan_addr (const char *addr)
 

マクロ定義詳解

#define ADD_COMMA   ',' /* resynchronize */

tok822_parse.c194 行目に定義があります。

#define COLLECT (   t,
  s,
  c,
  cond 
)
値:
{ \
while ((c = *(unsigned char *) s) != 0) { \
if (c == '\\') { \
if ((c = *(unsigned char *)++s) == 0) \
break; \
} else if (!(cond)) { \
break; \
} \
VSTRING_ADDCH(t->vstr, IS_SPACE_TAB_CR_LF(c) ? ' ' : c); \
s++; \
} \
VSTRING_TERMINATE(t->vstr); \
}
#define VSTRING_TERMINATE(vp)
Definition: vstring.h:74
#define IS_SPACE_TAB_CR_LF(ch)
Definition: lex_822.h:18
#define VSTRING_ADDCH(vp, ch)
Definition: vstring.h:81

tok822_parse.c140 行目に定義があります。

#define COLLECT_SKIP_LAST (   t,
  s,
  c,
  cond 
)    { COLLECT(t,s,c,cond); if (*s) s++; }

tok822_parse.c154 行目に定義があります。

#define DO_GROUP   (1<<1) /* doing an address group */

tok822_parse.c192 行目に定義があります。

#define DO_WORD   (1<<0) /* finding a word is ok here */

tok822_parse.c191 行目に定義があります。

#define ENFORCE_NONADDR_LENGTH
値:
do { \
if (addr && VSTRING_LEN(vp) - addr_len > start + MAX_NONADDR_LENGTH) \
strip_address(vp, start, addr->head); \
} while(0)
#define MAX_NONADDR_LENGTH
#define VSTRING_LEN(vp)
Definition: vstring.h:72
#define GLUE (   left,
  rite 
)    { left->next = rite; rite->prev = left; }
#define MAX_NONADDR_LENGTH   250
#define MOVE_COMMENT_AND_CONTINUE (   tp,
  right 
)
値:
{ \
TOK822 *prev = tok822_unlink(tp); \
right = tok822_prepend(right, tp); \
tp = prev; \
continue; \
}
TOK822 * tok822_prepend(TOK822 *, TOK822 *)
Definition: tok822_tree.c:146
struct TOK822 TOK822
TOK822 * tok822_unlink(TOK822 *)
Definition: tok822_tree.c:191

tok822_parse.c164 行目に定義があります。

#define NO_MISSING_COMMA   0

tok822_parse.c195 行目に定義があります。

#define NON_OPERATOR (   x)
値:
(x->type == TOK822_ATOM || x->type == TOK822_QSTRING \
|| x->type == TOK822_COMMENT || x->type == TOK822_DOMLIT \
|| x->type == TOK822_ADDR)
#define TOK822_ADDR
Definition: tok822.h:46
#define TOK822_ATOM
Definition: tok822.h:42
#define TOK822_DOMLIT
Definition: tok822.h:45
#define TOK822_COMMENT
Definition: tok822.h:44
#define TOK822_QSTRING
Definition: tok822.h:43
#define RESET_NONADDR_LENGTH
値:
{ \
start = VSTRING_LEN(vp); \
addr = 0; \
addr_len = 0; \
}
#define VSTRING_LEN(vp)
Definition: vstring.h:72
#define SKIP (   tp,
  cond 
)
値:
{ \
while (tp->type && (cond)) \
tp = tp->prev; \
}

tok822_parse.c159 行目に定義があります。

#define SKIP_MOVE_COMMENT (   tp,
  cond,
  right 
)
値:
{ \
while (tp->type && (cond)) { \
if (tp->type == TOK822_COMMENT) \
tp = tp->prev; \
} \
}
#define MOVE_COMMENT_AND_CONTINUE(tp, right)
Definition: tok822_parse.c:164
#define TOK822_COMMENT
Definition: tok822.h:44

tok822_parse.c171 行目に定義があります。

関数詳解

VSTRING* tok822_externalize ( VSTRING vp,
TOK822 tree,
int  flags 
)

tok822_parse.c270 行目に定義があります。

VSTRING* tok822_internalize ( VSTRING vp,
TOK822 tree,
int  flags 
)

tok822_parse.c199 行目に定義があります。

TOK822* tok822_parse_limit ( const char *  str,
int  tok_count_limit 
)

tok822_parse.c479 行目に定義があります。

TOK822* tok822_scan_addr ( const char *  addr)

tok822_parse.c648 行目に定義があります。

TOK822* tok822_scan_limit ( const char *  str,
TOK822 **  tailp,
int  tok_count_limit 
)

tok822_parse.c427 行目に定義があります。