]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/include/regexp.h
ssh: document thumbfile options
[plan9front.git] / sys / include / regexp.h
old mode 100755 (executable)
new mode 100644 (file)
index a574674..7709428
@@ -1,15 +1,29 @@
-#pragma        src     "/sys/src/libregexp"
-#pragma        lib     "libregexp.a"
+#pragma src "/sys/src/libregexp"
+#pragma lib "libregexp.a"
+enum
+{
+       OANY = 0,
+       OBOL,
+       OCLASS,
+       OEOL,
+       OJMP,
+       ONOTNL,
+       ORUNE,
+       OSAVE,
+       OSPLIT,
+       OUNSAVE,
+};
+
+typedef struct Resub Resub;
+typedef struct Reinst Reinst;
+typedef struct Reprog Reprog;
+typedef struct Rethread Rethread;
 
-typedef struct Resub           Resub;
-typedef struct Reclass         Reclass;
-typedef struct Reinst          Reinst;
-typedef struct Reprog          Reprog;
+#pragma incomplete Reinst
+#pragma incomplete Rethread
 
-/*
- *     Sub expression matches
- */
-struct Resub{
+struct Resub
+{
        union
        {
                char *sp;
@@ -21,46 +35,21 @@ struct Resub{
                Rune *rep;
        };
 };
-
-/*
- *     character class, each pair of rune's defines a range
- */
-struct Reclass{
-       Rune    *end;
-       Rune    spans[64];
-};
-
-/*
- *     Machine instructions
- */
-struct Reinst{
-       int     type;
-       union   {
-               Reclass *cp;            /* class pointer */
-               Rune    r;              /* character */
-               int     subid;          /* sub-expression id for RBRA and LBRA */
-               Reinst  *right;         /* right child of OR */
-       };
-       union { /* regexp relies on these two being in the same union */
-               Reinst *left;           /* left child of OR */
-               Reinst *next;           /* next instruction for CAT & LBRA */
-       };
-};
-
-/*
- *     Reprogram definition
- */
-struct Reprog{
-       Reinst  *startinst;     /* start pc */
-       Reclass class[16];      /* .data */
-       Reinst  firstinst[5];   /* .text */
+struct Reprog
+{
+       Reinst *startinst;
+       Rethread *threads;
+       char *regstr;
+       int len;
+       int nthr;
 };
 
-extern Reprog  *regcomp(char*);
-extern Reprog  *regcomplit(char*);
-extern Reprog  *regcompnl(char*);
-extern void    regerror(char*);
-extern int     regexec(Reprog*, char*, Resub*, int);
-extern void    regsub(char*, char*, int, Resub*, int);
-extern int     rregexec(Reprog*, Rune*, Resub*, int);
-extern void    rregsub(Rune*, Rune*, int, Resub*, int);
+Reprog*        regcomp(char*);
+Reprog*        regcomplit(char*);
+Reprog*        regcompnl(char*);
+void   regerror(char*);
+int    regexec(Reprog*, char*, Resub*, int);
+void   regsub(char*, char*, int, Resub*, int);
+int    rregexec(Reprog*, Rune*, Resub*, int);
+void   rregsub(Rune*, Rune*, int, Resub*, int);
+int    reprogfmt(Fmt *);