| 1 | /* pad.h
|
|---|
| 2 | *
|
|---|
| 3 | * Copyright (C) 2002, 2003, 2005, by Larry Wall and others
|
|---|
| 4 | *
|
|---|
| 5 | * You may distribute under the terms of either the GNU General Public
|
|---|
| 6 | * License or the Artistic License, as specified in the README file.
|
|---|
| 7 | *
|
|---|
| 8 | * This file defines the types and macros associated with the API for
|
|---|
| 9 | * manipulating scratchpads, which are used by perl to store lexical
|
|---|
| 10 | * variables, op targets and constants.
|
|---|
| 11 | */
|
|---|
| 12 |
|
|---|
| 13 |
|
|---|
| 14 |
|
|---|
| 15 |
|
|---|
| 16 | /* a padlist is currently just an AV; but that might change,
|
|---|
| 17 | * so hide the type. Ditto a pad. */
|
|---|
| 18 |
|
|---|
| 19 | typedef AV PADLIST;
|
|---|
| 20 | typedef AV PAD;
|
|---|
| 21 |
|
|---|
| 22 |
|
|---|
| 23 | /* offsets within a pad */
|
|---|
| 24 |
|
|---|
| 25 | #if PTRSIZE == 4
|
|---|
| 26 | typedef U32TYPE PADOFFSET;
|
|---|
| 27 | #else
|
|---|
| 28 | # if PTRSIZE == 8
|
|---|
| 29 | typedef U64TYPE PADOFFSET;
|
|---|
| 30 | # endif
|
|---|
| 31 | #endif
|
|---|
| 32 | #define NOT_IN_PAD ((PADOFFSET) -1)
|
|---|
| 33 |
|
|---|
| 34 |
|
|---|
| 35 | /* flags for the pad_new() function */
|
|---|
| 36 |
|
|---|
| 37 | #define padnew_CLONE 1 /* this pad is for a cloned CV */
|
|---|
| 38 | #define padnew_SAVE 2 /* save old globals */
|
|---|
| 39 | #define padnew_SAVESUB 4 /* also save extra stuff for start of sub */
|
|---|
|
|---|