version 1.66, 2007/02/23 08:03:19 |
version 1.67, 2007/03/18 21:12:27 |
|
|
static struct context_vec *context_vec_end; |
static struct context_vec *context_vec_end; |
static struct context_vec *context_vec_ptr; |
static struct context_vec *context_vec_ptr; |
|
|
#define FUNCTION_CONTEXT_SIZE 41 |
#define FUNCTION_CONTEXT_SIZE 55 |
static char lastbuf[FUNCTION_CONTEXT_SIZE]; |
static char lastbuf[FUNCTION_CONTEXT_SIZE]; |
static int lastline; |
static int lastline; |
static int lastmatchline; |
static int lastmatchline; |
|
|
return (a > b ? a : b); |
return (a > b ? a : b); |
} |
} |
|
|
|
#define begins_with(s, pre) (strncmp(s, pre, sizeof(pre)-1) == 0) |
|
|
static char * |
static char * |
match_function(const long *f, int pos, FILE *file) |
match_function(const long *f, int pos, FILE *file) |
{ |
{ |
|
|
size_t nc; |
size_t nc; |
int last = lastline; |
int last = lastline; |
char *p; |
char *p; |
|
char *state = NULL; |
|
|
lastline = pos; |
lastline = pos; |
while (pos > last) { |
while (pos > last) { |
|
|
if (p != NULL) |
if (p != NULL) |
*p = '\0'; |
*p = '\0'; |
if (isalpha(buf[0]) || buf[0] == '_' || buf[0] == '$') { |
if (isalpha(buf[0]) || buf[0] == '_' || buf[0] == '$') { |
strlcpy(lastbuf, buf, sizeof lastbuf); |
if (begins_with(buf, "private:")) { |
lastmatchline = pos; |
if (!state) |
return lastbuf; |
state = " (private)"; |
|
} else if (begins_with(buf, "protected:")) { |
|
if (!state) |
|
state = " (protected)"; |
|
} else if (begins_with(buf, "public:")) { |
|
if (!state) |
|
state = " (public)"; |
|
} else { |
|
strlcpy(lastbuf, buf, sizeof lastbuf); |
|
if (state) |
|
strlcat(lastbuf, state, |
|
sizeof lastbuf); |
|
lastmatchline = pos; |
|
return lastbuf; |
|
} |
} |
} |
} |
} |
pos--; |
pos--; |