Annotation of researchv9/jtools/src/pads/pads.h, revision 1.1

1.1     ! root        1: #ifndef PADS_H
        !             2: #define PADS_H
        !             3: 
        !             4: typedef unsigned short Attrib;
        !             5: >pri
        !             6: #define PADS_VERSION 0x851021          /* YYMMDD */
        !             7: #define CARTE    0x80
        !             8: #define NUMERIC  1
        !             9: >
        !            10: #undef major
        !            11: #undef minor
        !            12: #ifndef PADS_TERM
        !            13: int    strlen(char*),
        !            14:        strcmp(char*,char*),
        !            15:        read(int,char*,int),
        !            16:        write(int,char*,int),
        !            17:        ioctl(int,int ...);
        !            18: char   *strcpy(char*,char*),
        !            19:        *sbrk(int);
        !            20: 
        !            21: #define PRINTF_TYPES char * ...
        !            22: #define PRINTF_ARGS char *fmt ...
        !            23: #define FMT(i) ( ((int*)&fmt)[i] )
        !            24: #define PRINTF_COPY\
        !            25:        (fmt?fmt:""), FMT(1),FMT(2),FMT(3),FMT(4),FMT(5),FMT(6),FMT(7),FMT(8)
        !            26: 
        !            27: #ifdef TRACE
        !            28: #define OK(x)          if( !ok() ) PadsError(__SRC__);
        !            29: #define VOK            if( !ok() ) PadsError(__SRC__);
        !            30: #define IF_LIVE(x)     { if( x )   PadsError(__SRC__); } if(0)
        !            31: #define SRCFILE(f)     static __SRC__ = f;
        !            32: typedef int  (*PFI)();
        !            33: PFI trace_fcn(char*,int), trace_ptr;
        !            34: #define trace  (!(trace_ptr=trace_fcn(__SRC__,__LINE__))) ? 0 : (*trace_ptr)
        !            35: #else
        !            36: #define OK(x)          { if( !ok() ) return x; }
        !            37: #define VOK            { if( !ok() ) return ;  }
        !            38: #define IF_LIVE(x)       if( x )
        !            39: #define SRCFILE(f)
        !            40: #define trace  if( 0 )
        !            41: #endif
        !            42: 
        !            43: class Index {
        !            44: public:
        !            45: unsigned char  major;
        !            46: unsigned char  minor;
        !            47:                Index()                 { major = minor = 0;            }
        !            48:                Index(int i)            { major = i>>8; minor = i&0xFF; }
        !            49:                Index(int j, int n )    { major = j;    minor = n;      }
        !            50:        short   sht();          /* don't inline sht() - sht() etc */
        !            51:        int     null();
        !            52: };
        !            53: extern Index ZIndex;
        !            54: >pri
        !            55: class Carte {
        !            56: public:
        !            57:        unsigned char   size;           /* host.size != term.size */
        !            58:        unsigned char   attrib;
        !            59:        unsigned char   items;
        !            60:        unsigned char   width;
        !            61:        struct Index    bin[1];
        !            62:                        Carte() {};
        !            63: };
        !            64: >
        !            65: #else
        !            66: typedef unsigned short Index;
        !            67: #define MJR(i) ((i)>>8)
        !            68: #define MNR(i) ((i)&0xFF)
        !            69: typedef struct Carte Carte;
        !            70: typedef enum Protocol Protocol;
        !            71: struct Carte {
        !            72:        unsigned char   size;           /* host.size != term.size */
        !            73:        unsigned char   attrib;
        !            74:        short           width;
        !            75:        Index           bin[1];
        !            76: };
        !            77: #endif
        !            78: 
        !            79: #define        SELECTLINE      ((Attrib)0x0001)
        !            80: #define SORTED         ((Attrib)0x0002)
        !            81: #define ACCEPT_KBD     ((Attrib)0x0004)
        !            82: #define FOLD           ((Attrib)0x0008)
        !            83: #define TRUNCATE       ((Attrib)0x0010)
        !            84: #define USERCLOSE      ((Attrib)0x0020)
        !            85: #define DONT_CUT       ((Attrib)0x0040)
        !            86: #define FLUSHLINE      ((Attrib)0x0080)        /* should not be required */
        !            87: #define FAKELINE       ((Attrib)0x0100)
        !            88: #define USERCUT                ((Attrib)0x0200)
        !            89: #define DONT_CLOSE     ((Attrib)0x0400)
        !            90: #define NO_TILDE       ((Attrib)0x0800)
        !            91: #define DONT_DIRTY     ((Attrib)0x1000)
        !            92: 
        !            93: #ifndef PADS_TERM
        !            94: char *sf(PRINTF_TYPES);
        !            95: char *PadsInit(char* = 0);
        !            96: void PadsServe(long = 0);
        !            97: void NewHelp();
        !            98: void NewPadStats();
        !            99: class PadRcv;
        !           100: typedef void (PadRcv::*Action)(...);
        !           101: void Pick(char*,Action,long);
        !           102: long UniqueKey();
        !           103: Index NumericRange(short,short);
        !           104: void PadsWarn(PRINTF_TYPES);
        !           105: //extern char *TapTo;
        !           106: >pri
        !           107: void PadsError(PRINTF_TYPES);
        !           108: >
        !           109: 
        !           110: class PadRcv { friend Remote; friend Pad;
        !           111:        short   oid;
        !           112:        short   magic;
        !           113:        int     isvalid();
        !           114: public:
        !           115:                PadRcv();
        !           116:                ~PadRcv();
        !           117:        void    invalidate();
        !           118: virtual        int     disc();
        !           119: virtual        char    *kbd(char*);
        !           120: virtual        char    *help();
        !           121: virtual        void    numeric(long);
        !           122: virtual        void    userclose();
        !           123: virtual        void    cycle();
        !           124: virtual        void    linereq(long,Attrib=0);
        !           125: virtual        int     accept(Action);
        !           126: virtual        void    usercut();
        !           127: };
        !           128: 
        !           129: class Pad {
        !           130: >pub
        !           131:        char    pub_filler[24];
        !           132: >pri
        !           133:        PadRcv  *_object;
        !           134:        char    *_name;
        !           135:        char    *_banner;
        !           136:        Attrib  _attributes;
        !           137:        char    _unused[2];
        !           138:        long    _lines;
        !           139:        void    termop(enum Protocol);
        !           140:        long    errorkey;
        !           141:        void    nameorbanner(enum Protocol, PRINTF_TYPES);
        !           142: >
        !           143: public:
        !           144:        int     ok();
        !           145:                Pad(PadRcv *);
        !           146:                ~Pad();
        !           147:        void    alarm(short=0);
        !           148:        void    banner(PRINTF_TYPES);
        !           149:        void    clear();
        !           150:        void    dump();
        !           151:        void    error(PRINTF_TYPES);
        !           152:        void    insert(class Line&);
        !           153:        void    insert(long, Attrib, PadRcv*, Index, PRINTF_TYPES);
        !           154:        void    insert(long, Attrib, PadRcv*, class Menu&, PRINTF_TYPES);
        !           155:        void    insert(long, Attrib, PRINTF_TYPES);
        !           156:        void    insert(long, PRINTF_TYPES);
        !           157:        void    lines(long);
        !           158:        void    makecurrent();
        !           159:        void    makegap(long,long);
        !           160:        void    menu(Index);
        !           161:        void    menu(class Menu&);
        !           162:        void    name(PRINTF_TYPES);
        !           163:        void    options(Attrib, Attrib=0);
        !           164:        void    tabs(short);
        !           165:        void    removeline(long);
        !           166:        void    createline(long,long);
        !           167:        void    createline(long);
        !           168: };
        !           169: 
        !           170: class Line {
        !           171: public:
        !           172:        int     ok();
        !           173:                Line();
        !           174:        PadRcv  *object;
        !           175:        char    *text;
        !           176:        long    key;
        !           177:        Attrib  attributes;
        !           178:        Index   carte;
        !           179: };
        !           180: >pri
        !           181: class IList {
        !           182:        friend  Menu;
        !           183:        Index   index;
        !           184:        IList   *next;
        !           185: public:
        !           186:                IList(Index i, IList *n) { index = i; next = n; }
        !           187: };
        !           188: 
        !           189: class Item {
        !           190: public:
        !           191:        char    *text;
        !           192:        Action  action;
        !           193:        long    opand;
        !           194:                Item(char*,Action,long);
        !           195:                Item();                 /* ever used ? */
        !           196: };
        !           197: >
        !           198: class Menu {
        !           199: >pub
        !           200:        char    pub_filler[8];
        !           201: >pri
        !           202:        IList   *list;
        !           203:        int     size;
        !           204:        void    dump();
        !           205: >
        !           206: public:
        !           207:                Menu();
        !           208:                ~Menu();
        !           209:                Menu( char*, Action=0, long=0 );
        !           210:        Index   index( char* =0, Action=0, long=0 );
        !           211:        void    first( char*, Action=0, long=0 );
        !           212:        void    first( Index );
        !           213:        void    last( char*, Action=0, long=0 );        
        !           214:        void    last( Index );  
        !           215:        void    sort( char*, Action=0, long=0 );
        !           216:        void    sort( Index );
        !           217: };
        !           218: 
        !           219: >pri
        !           220: class Binary {
        !           221: public:
        !           222:        Binary  *left;
        !           223:        Binary  *right;
        !           224:        Index   index;
        !           225:                Binary()        {}
        !           226: };
        !           227: 
        !           228: class Cache {
        !           229:        friend  ItemCache;
        !           230:        friend  CarteCache;
        !           231:        Binary  *root;
        !           232:        Index   current;
        !           233:        Index   SIZE;
        !           234: public:
        !           235:                Cache(unsigned char,unsigned char);
        !           236:        int     ok();
        !           237: };
        !           238: 
        !           239: class ItemCache : public Cache {
        !           240:        Item    ***cache;
        !           241: public:
        !           242:                ItemCache();
        !           243:        Index   place(Item);
        !           244:        Item    *take(Index);
        !           245: };
        !           246: 
        !           247: class CarteCache : public Cache {
        !           248:        Carte   ***cache;
        !           249: public:
        !           250:                CarteCache();
        !           251:        Index   place(Carte*);
        !           252:        Carte   *take(Index);
        !           253:        Index   numeric(short,short);
        !           254:        void    cartelimits(Carte*);
        !           255: };
        !           256: 
        !           257: extern ItemCache  *ICache;
        !           258: extern CarteCache *CCache;
        !           259: >
        !           260: #endif
        !           261: 
        !           262: >pri
        !           263: #define CARTESIZE(s) (sizeof(Carte) + (s)*sizeof(Index))
        !           264: 
        !           265: enum Protocol {
        !           266:        P_UCHAR         = 1,
        !           267:        P_SHORT         = 2,
        !           268:        P_LONG          = 4,
        !           269: 
        !           270:        P_CACHEOP       = 0x10,
        !           271:        P_I_DEFINE      = 0x11,
        !           272:        P_I_CACHE       = 0x12,
        !           273:        P_C_DEFINE      = 0x13,
        !           274:        P_C_CACHE       = 0x14,
        !           275: 
        !           276:        P_STRING        = 0x20,
        !           277:        P_INDEX         = 0x21,
        !           278: 
        !           279:        P_PADDEF        = 0x30,
        !           280:        P_ATTRIBUTE     = 0x31,
        !           281:        P_BANNER        = 0x32,
        !           282:        P_CARTE         = 0x33,
        !           283:        P_LINES         = 0x34,
        !           284:        P_NAME          = 0x35,
        !           285:        P_TABS          = 0x36,
        !           286: 
        !           287:        P_PADOP         = 0x40,
        !           288:        P_ACTION        = 0x41,
        !           289:        P_ALARM         = 0x42,
        !           290:        P_CLEAR         = 0x43,
        !           291:        P_CYCLE         = 0x44,
        !           292:        P_DELETE        = 0x45,
        !           293:        P_KBDSTR        = 0x46,
        !           294:        P_LINE          = 0x47,
        !           295:        P_LINEREQ       = 0x48,
        !           296:        P_MAKECURRENT   = 0x49,
        !           297:        P_MAKEGAP       = 0x4A,
        !           298:        P_NEXTLINE      = 0x4B,
        !           299:        P_NUMERIC       = 0x4C,
        !           300:        P_USERCLOSE     = 0x4D,
        !           301:        P_CREATELINE    = 0x4E,
        !           302:        P_REMOVELINE    = 0x4F,
        !           303: 
        !           304:        P_HOSTSTATE     = 0x50,
        !           305:        P_BUSY          = 0x51,
        !           306:        P_IDLE          = 0x52,
        !           307: 
        !           308:        P_USERCUT       = 0x5F,
        !           309: 
        !           310:        P_PICK          = 0x60,
        !           311: 
        !           312:        P_HELPSTR       = 0x70,
        !           313:        P_SHELL         = 0x71,
        !           314: 
        !           315:        P_VERSION       = 0x80,
        !           316: };
        !           317: 
        !           318: #ifdef PADS_TERM
        !           319: long           RcvLong();
        !           320: short          RcvShort();
        !           321: unsigned char  RcvUChar();
        !           322: char           *RcvString();
        !           323: 
        !           324: void           SendLong();
        !           325: void           SendShort();
        !           326: void           SendUChar();
        !           327: void           SendString();
        !           328: #else
        !           329: #include <CC/stdio.h>
        !           330: FILE *Popen(char*,char*);
        !           331: int Pclose(FILE*);
        !           332: 
        !           333: class Remote {
        !           334: public:
        !           335:        int     fd;
        !           336:        int     pktbase;
        !           337:        int     pktsize;
        !           338: unsigned char  writebuffer[2048];
        !           339: 
        !           340:        long    shiftin(int);
        !           341:        void    shiftout(int, long);
        !           342:        int     writesize;
        !           343:        void    err(char * = 0);
        !           344:        int     get();
        !           345:        void    checkproto(int p);
        !           346:        void    put(char c);
        !           347:        void    proto(int p);
        !           348: 
        !           349:        long    rcvlong();
        !           350:        short   rcvshort();
        !           351: unsigned char  rcvuchar();
        !           352:        PadRcv  *rcvobj();
        !           353: 
        !           354:        void    sendlong(long);
        !           355:        void    sendobj(PadRcv*);
        !           356:        void    sendshort(short);
        !           357:        void    senduchar(unsigned char);
        !           358:        char    *rcvstring(char*);
        !           359:        void    sendstring(char*);
        !           360: 
        !           361:        void    pktstart(char);
        !           362:        void    pktend();
        !           363:        void    pktflush();
        !           364: 
        !           365:        void    share();
        !           366: 
        !           367:                Remote(char*);
        !           368:                Remote(int);
        !           369: };
        !           370: 
        !           371: extern Remote *R;
        !           372: 
        !           373: #endif
        !           374: >
        !           375: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.