Browse Source

+ imported the win16 local memory management functions

git-svn-id: trunk@31544 -
nickysn 10 years ago
parent
commit
0abe2cddd6
2 changed files with 45 additions and 0 deletions
  1. 25 0
      rtl/win16/winprocs.pp
  2. 20 0
      rtl/win16/wintypes.pp

+ 25 - 0
rtl/win16/winprocs.pp

@@ -163,6 +163,26 @@ procedure LimitEmsPages(Kbytes: DWORD); external 'KERNEL';
 
 procedure ValidateFreeSpaces; external 'KERNEL';
 
+{ Local Memory Management }
+
+function LocalDiscard(h: HLOCAL): HLOCAL; inline;
+
+function LocalAlloc(Flags, Bytes: UINT): HLOCAL; external 'KERNEL';
+function LocalReAlloc(Mem: HLOCAL; Bytes, Flags: UINT): HLOCAL; external 'KERNEL';
+function LocalFree(Mem: HLOCAL): HLOCAL; external 'KERNEL';
+
+function LocalLock(Mem: HLOCAL): NearPointer; external 'KERNEL';
+function LocalUnlock(Mem: HLOCAL): BOOL; external 'KERNEL';
+
+function LocalSize(Mem: HLOCAL): UINT; external 'KERNEL';
+function LocalHandle(Mem: NearPointer): HLOCAL; external 'KERNEL';
+
+function LocalFlags(Mem: HLOCAL): UINT; external 'KERNEL';
+
+function LocalInit(Segment, Start, EndPos: UINT): BOOL; external 'KERNEL';
+function LocalCompact(MinFree: UINT): UINT; external 'KERNEL';
+function LocalShrink(Seg: HLOCAL; Size: UINT): UINT; external 'KERNEL';
+
 implementation
 
 function LOBYTE(w: Word): Byte;
@@ -230,4 +250,9 @@ begin
   UnlockSegment(UINT(-1));
 end;
 
+function LocalDiscard(h: HLOCAL): HLOCAL;
+begin
+  LocalDiscard := LocalReAlloc(h, 0, LMEM_MOVEABLE);
+end;
+
 end.

+ 20 - 0
rtl/win16/wintypes.pp

@@ -144,6 +144,26 @@ const
 type
   GNOTIFYPROC = function(hGlbl: HGLOBAL): BOOL; far;
 
+const
+{ Local Memory Flags }
+  LMEM_FIXED       = $0000;
+  LMEM_MOVEABLE    = $0002;
+  LMEM_NOCOMPACT   = $0010;
+  LMEM_NODISCARD   = $0020;
+  LMEM_ZEROINIT    = $0040;
+  LMEM_MODIFY      = $0080;
+  LMEM_DISCARDABLE = $0F00;
+
+  LHND             = LMEM_MOVEABLE or LMEM_ZEROINIT;
+  LPTR             = LMEM_FIXED or LMEM_ZEROINIT;
+
+  NONZEROLHND      = LMEM_MOVEABLE;
+  NONZEROLPTR      = LMEM_FIXED;
+
+{ LocalFlags return flags (in addition to LMEM_DISCARDABLE) }
+  LMEM_DISCARDED   = $4000;
+  LMEM_LOCKCOUNT   = $00FF;
+
 implementation
 
 end.