X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/79a0689e17f959bdb246dc37bbbbfeba4c2b3b56..f0fcb5529109ae3ced6c7fbb8cbd77162fa9bfdb:/stab.h diff --git a/stab.h b/stab.h index db2d60c..3025342 100644 --- a/stab.h +++ b/stab.h @@ -1,19 +1,20 @@ -/* $Header: stab.h,v 3.0.1.2 90/03/12 17:00:43 lwall Locked $ +/* $RCSfile: stab.h,v $$Revision: 4.0.1.2 $$Date: 91/11/05 18:36:15 $ * - * Copyright (c) 1989, Larry Wall + * Copyright (c) 1991, Larry Wall * - * You may distribute under the terms of the GNU General Public License - * as specified in the README file that comes with the perl 3.0 kit. + * You may distribute under the terms of either the GNU General Public + * License or the Artistic License, as specified in the README file. * * $Log: stab.h,v $ - * Revision 3.0.1.2 90/03/12 17:00:43 lwall - * patch13: did some ndir straightening up for Xenix + * Revision 4.0.1.2 91/11/05 18:36:15 lwall + * patch11: length($x) was sometimes wrong for numeric $x * - * Revision 3.0.1.1 89/12/21 20:19:53 lwall - * patch7: in stab.h, added some CRIPPLED_CC support for Microport + * Revision 4.0.1.1 91/06/07 11:56:35 lwall + * patch4: new copyright notice + * patch4: length($`), length($&), length($') now optimized to avoid string copy * - * Revision 3.0 89/10/18 15:23:30 lwall - * 3.0 baseline + * Revision 4.0 91/03/20 01:39:49 lwall + * 4.0 baseline. * */ @@ -24,6 +25,7 @@ struct stabptrs { FCMD *stbp_form; /* format value */ ARRAY *stbp_array; /* array value */ HASH *stbp_hash; /* associative array value */ + HASH *stbp_stash; /* symbol table for this stab */ SUBR *stbp_sub; /* subroutine value */ int stbp_lastexpr; /* used by nothing_in_common() */ line_t stbp_line; /* line first declared at (for -w) */ @@ -54,6 +56,7 @@ HASH *stab_hash(); ((STBP*)(stab->str_ptr))->stbp_hash : \ ((STBP*)(hadd(stab)->str_ptr))->stbp_hash) #endif /* Microport 2.4 hack */ +#define stab_stash(stab) (((STBP*)(stab->str_ptr))->stbp_stash) #define stab_sub(stab) (((STBP*)(stab->str_ptr))->stbp_sub) #define stab_lastexpr(stab) (((STBP*)(stab->str_ptr))->stbp_lastexpr) #define stab_line(stab) (((STBP*)(stab->str_ptr))->stbp_line) @@ -66,7 +69,7 @@ HASH *stab_hash(); struct stio { FILE *ifp; /* ifp and ofp are normally the same */ FILE *ofp; /* but sockets need separate streams */ -#ifdef READDIR +#ifdef HAS_READDIR DIR *dirp; /* for opendir, readdir, etc */ #endif long lines; /* $. */ @@ -88,14 +91,19 @@ struct stio { struct sub { CMD *cmd; - char *filename; + int (*usersub)(); + int userindex; + STAB *filestab; long depth; /* >= 2 indicates recursive call */ ARRAY *tosave; }; #define Nullstab Null(STAB*) +STRLEN stab_len(); + #define STAB_STR(s) (tmpstab = (s), stab_flags(tmpstab) & SF_VMAGIC ? stab_str(stab_val(tmpstab)->str_magic) : stab_val(tmpstab)) +#define STAB_LEN(s) (tmpstab = (s), stab_flags(tmpstab) & SF_VMAGIC ? stab_len(stab_val(tmpstab)->str_magic) : str_len(stab_val(tmpstab))) #define STAB_GET(s) (tmpstab = (s), str_get(stab_flags(tmpstab) & SF_VMAGIC ? stab_str(tmpstab->str_magic) : stab_val(tmpstab))) #define STAB_GNUM(s) (tmpstab = (s), str_gnum(stab_flags(tmpstab) & SF_VMAGIC ? stab_str(tmpstab->str_magic) : stab_val(tmpstab))) @@ -112,3 +120,4 @@ EXT int delaymagic INIT(0); STAB *aadd(); STAB *hadd(); +STAB *fstab();