Annotation of q_a/samples/guigrep/guigrep.h, revision 1.1

1.1     ! root        1: 
        !             2: #define IDM_ABOUT 100
        !             3: #define IDM_DEFGREP 101
        !             4: #define IDM_INSTALL 102
        !             5: #define IDM_STRINGEDIT 103
        !             6: #define IDM_TERMBOX 104
        !             7: #define IDM_STARTGREP 105
        !             8: #define IDM_UNINSTALL 106
        !             9: #define IDM_SORTBOX 107
        !            10: #define IDM_CASESENS 108
        !            11: #define IDM_CANCEL 109
        !            12: 
        !            13: #define WM_INQUIREFILES WM_USER+0xc001
        !            14: #define WM_LAUNCH       WM_USER+0xc002
        !            15: #define WM_FREEAGAIN    WM_USER+0xc003
        !            16: #define WM_ADDITEM      WM_USER+0xc004
        !            17: #define WM_TELLHANDLE   WM_USER+0xc005
        !            18: #define WM_STARTSYNC    WM_USER+0xc006
        !            19: 
        !            20: 
        !            21: #define MAXLINELEN      256
        !            22: #define FILBUFSIZE      16384
        !            23: #define MAX_CONCURRENT_THREADS 30
        !            24: 
        !            25: 
        !            26: BOOL InitApplication(HANDLE);
        !            27: BOOL InitInstance(HANDLE, int);
        !            28: long FAR PASCAL MainWndProc(HWND, UINT, UINT, LONG);
        !            29: BOOL FAR PASCAL About(HWND, UINT, UINT, LONG);
        !            30: 
        !            31: 
        !            32: typedef struct tagTHREADPBLOCK
        !            33: {
        !            34:  int  iLoop;
        !            35:  HWND hWndGlobal;
        !            36:  HWND hWndFileBox;
        !            37: } THREADPBLOCK, *LPTHREADPBLOCK;
        !            38: 
        !            39: 
        !            40: /*********************************************************************/
        !            41: /*                                                                   */
        !            42: /*     C++ declarations here                                         */
        !            43: /*                                                                   */
        !            44: /*********************************************************************/
        !            45: 
        !            46: /*********************************************************************/
        !            47: /*                                                                   */
        !            48: /*     The memory class is a simple fast allocator. It provides      */
        !            49: /*     one static memory block from which little chunks are          */
        !            50: /*     allocated by each thread.                                     */
        !            51: /*                                                                   */
        !            52: /*********************************************************************/
        !            53: 
        !            54: class memory
        !            55: {
        !            56: private:  LPSTR lpBasePointer;  /* Probably don't need this one at all... */
        !            57:          LPSTR lpCurrentPointer;
        !            58:          LPSTR lpReturnPointer;
        !            59:          int iCurrentPointer;
        !            60:          int iActualBlockSize;
        !            61:          HANDLE hBlock;
        !            62:          CRITICAL_SECTION csAllocGuard;
        !            63: public:   memory(int);
        !            64:          ~memory(void);
        !            65:          LPSTR Alloc (int iSize)
        !            66:          {      EnterCriticalSection(&csAllocGuard);
        !            67: #ifdef MIPS
        !            68:        /* MIPS requires all DWORDs to be aligned on DWORD boundaries.
        !            69:           That's why under MIPS, we round up all alignments to
        !            70:           multiples of sizeof(DWORD).   */
        !            71:           if (iSize != (int)((iSize / sizeof (DWORD)) * sizeof (DWORD)))
        !            72:              iSize = (1 + (iSize / sizeof (DWORD))) * sizeof (DWORD);
        !            73: #endif
        !            74:             if (iSize + iCurrentPointer > iActualBlockSize)
        !            75:                {               MessageBox(GetFocus(),"No memory left",
        !            76:                                        "Grepper",MB_OK);
        !            77:                                    return((LPSTR)0);
        !            78:                };
        !            79:                iCurrentPointer+= iSize;
        !            80:                lpReturnPointer = lpCurrentPointer;
        !            81:        _try {
        !            82:                lpCurrentPointer = &lpCurrentPointer[iSize];
        !            83:                }
        !            84:                _except (EXCEPTION_EXECUTE_HANDLER) {
        !            85:                 MessageBox(GetFocus(),"Access Violation","Memory Allocator",MB_OK);
        !            86:                };
        !            87:                LeaveCriticalSection(&csAllocGuard);
        !            88:                return (lpReturnPointer);
        !            89:           };
        !            90:           void Reset()
        !            91:           {lpCurrentPointer = lpBasePointer;
        !            92:            iCurrentPointer = 0;
        !            93:           };
        !            94:           void Free (LPSTR lpBlockPt)
        !            95:           {};
        !            96: };
        !            97: 
        !            98: memory::memory(int iSize)
        !            99: {
        !           100:   hBlock = LocalAlloc(LMEM_MOVEABLE | LMEM_ZEROINIT,iSize);
        !           101:   lpBasePointer = (LPSTR) LocalLock(hBlock);
        !           102:   lpCurrentPointer = lpBasePointer;
        !           103:   iActualBlockSize = iSize;
        !           104:   iCurrentPointer = 0;
        !           105:   InitializeCriticalSection(&csAllocGuard);
        !           106: }
        !           107: 
        !           108: memory::~memory()
        !           109: { LocalUnlock(hBlock);
        !           110:   LocalFree(hBlock);
        !           111:   DeleteCriticalSection(&csAllocGuard);
        !           112: }
        !           113: 
        !           114: /*********************************************************************/
        !           115: /*                                                                   */
        !           116: /*     GrowMemory provides a growable block of memory.               */
        !           117: /*     It is used for the local handle of the edit box that          */
        !           118: /*     accomodates the hits.
        !           119: /*                                                                   */
        !           120: /*********************************************************************/
        !           121: 
        !           122: class growmemory
        !           123: {
        !           124: private: int iCurrentSize,iCurrentPt,iIncrement;
        !           125:                 HANDLE hCurrentBlock;
        !           126:                 LPSTR lpStartPt;
        !           127:                 CRITICAL_SECTION csAllocGuard;
        !           128:         char lpszCRLF[3];
        !           129:         int ilpszCRLF;
        !           130: 
        !           131: public: growmemory(int iInitSize, int iInc);
        !           132:            ~growmemory(void);
        !           133:            BOOL add(LPSTR lpSource, int iSize)
        !           134: /* watch out here: We assume that the requested size is never bigger than
        !           135:    the increment. This is safe with the hardcoded values but may fail in
        !           136:    the general case. */
        !           137: 
        !           138:                   { int iSizeOld = iSize;
        !           139:                     EnterCriticalSection(&csAllocGuard);
        !           140: /* adjust the size for the line feed to follow */
        !           141:                             iSize+=ilpszCRLF;
        !           142:                     if (iCurrentPt+iSize > iCurrentSize)
        !           143:                      {iCurrentSize+=iIncrement;
        !           144:                   hCurrentBlock = LocalReAlloc(hCurrentBlock,iCurrentSize,LMEM_MOVEABLE);
        !           145:                                  };
        !           146:                                  lpStartPt = (LPSTR)LocalLock(hCurrentBlock);
        !           147:                                  if (!lpStartPt)
        !           148:                                   { MessageBeep(0);
        !           149:                                     return(FALSE);     };
        !           150:                                  strncpy(&lpStartPt[iCurrentPt],lpSource,iSizeOld);
        !           151: /* add the CRLF at the end. */
        !           152:                                  strncpy(&lpStartPt[iCurrentPt+iSizeOld],lpszCRLF,ilpszCRLF);
        !           153:                                  LocalUnlock(hCurrentBlock);
        !           154:                                  iCurrentPt+=iSize;
        !           155:                                  LeaveCriticalSection(&csAllocGuard);
        !           156:                                  return(TRUE);
        !           157:                            };
        !           158:                HANDLE GetHandle(void)
        !           159:                        { return (hCurrentBlock);
        !           160:                        };
        !           161: };
        !           162: 
        !           163: growmemory::growmemory(int iInitSize, int iInc)
        !           164:                   { iIncrement=iInc;
        !           165:                     iCurrentPt=0;
        !           166:                     iCurrentSize=iInitSize;
        !           167:                     hCurrentBlock = LocalAlloc(LMEM_MOVEABLE,iCurrentSize);
        !           168:                                 InitializeCriticalSection(&csAllocGuard);
        !           169:                                 strcpy(lpszCRLF,"\r\n");
        !           170:                                 ilpszCRLF=strlen(lpszCRLF);
        !           171:                   }
        !           172: growmemory::~growmemory(void)
        !           173:                   {DeleteCriticalSection(&csAllocGuard);
        !           174:                    LocalFree(hCurrentBlock);
        !           175:                   }

unix.superglobalmegacorp.com

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