Constant.t for EBCDIC platforms
[p5sagit/p5-mst-13.2.git] / perliol.h
index 487a7ff..250a015 100644 (file)
--- a/perliol.h
+++ b/perliol.h
@@ -16,7 +16,7 @@ struct PerlIO_list_s {
 struct _PerlIO_funcs {
     char *name;
     Size_t size;
-    IV kind;
+    U32 kind;
     IV (*Pushed) (pTHX_ PerlIO *f, const char *mode, SV *arg);
     IV (*Popped) (pTHX_ PerlIO *f);
     PerlIO *(*Open) (pTHX_ PerlIO_funcs *tab,
@@ -90,6 +90,7 @@ struct _PerlIO {
 #define PerlIOBase(f)      (*(f))
 #define PerlIOSelf(f,type) ((type *)PerlIOBase(f))
 #define PerlIONext(f)      (&(PerlIOBase(f)->next))
+#define PerlIOValid(f)     ((f) && *(f))
 
 /*--------------------------------------------------------------------------------------*/
 /* Data exports - EXT rather than extern is needed for Cygwin */
@@ -153,12 +154,20 @@ typedef struct {
     IV oneword;                        /* Emergency buffer */
 } PerlIOBuf;
 
+extern int PerlIO_apply_layera(pTHX_ PerlIO *f, const char *mode,
+                   PerlIO_list_t *layers, IV n, IV max);
+extern int PerlIO_parse_layers(pTHX_ PerlIO_list_t *av, const char *names);
+extern void PerlIO_list_free(pTHX_ PerlIO_list_t *list);
+extern PerlIO_funcs *PerlIO_layer_fetch(pTHX_ PerlIO_list_t *av, IV n, PerlIO_funcs *def);
+
+
 extern SV *PerlIO_sv_dup(pTHX_ SV *arg, CLONE_PARAMS *param);
 extern PerlIO *PerlIOBuf_open(pTHX_ PerlIO_funcs *self,
                              PerlIO_list_t *layers, IV n,
                              const char *mode, int fd, int imode,
                              int perm, PerlIO *old, int narg, SV **args);
 extern IV PerlIOBuf_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg);
+extern IV PerlIOBuf_popped(pTHX_ PerlIO *f);
 extern PerlIO *PerlIOBuf_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags);
 extern SSize_t PerlIOBuf_read(pTHX_ PerlIO *f, void *vbuf, Size_t count);
 extern SSize_t PerlIOBuf_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count);