Przeglądaj źródła

+ more documentation of basic unit

carl 23 lat temu
rodzic
commit
2b00253b7b
1 zmienionych plików z 28 dodań i 65 usunięć
  1. 28 65
      compiler/cutils.pas

+ 28 - 65
compiler/cutils.pas

@@ -5,8 +5,8 @@
     This unit implements some support functions
 
     This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
+    it under the terms of the GNU General Public License as published 
+    by the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.
 
     This program is distributed in the hope that it will be useful,
@@ -18,8 +18,12 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
- ****************************************************************************
+ 
+****************************************************************************
 }
+{# This unit contains some generic support functions which are used
+   in the different parts of the compiler.
+}   
 unit cutils;
 
 {$i defines.inc}
@@ -35,11 +39,17 @@ interface
     type
        pstring = ^string;
 
+    {# Returns the minimal value between @var(a) and @var(b) }
     function min(a,b : longint) : longint;
+    {# Returns the maximum value between @var(a) and @var(b) }
     function max(a,b : longint) : longint;
+    {# Returns the value in @var(x) swapped to different endian }
     function SwapLong(x : longint): longint;
+    {# Returns the value in @va(x) swapped to different endian }
     function SwapWord(x : word): word;
+    {# Return value @var(i) aligned on @var(a) boundary }
     function align(i,a:longint):longint;
+    
     function used_align(varalign,minalign,maxalign:longint):longint;
     function size_2_align(len : longint) : longint;
     procedure Replace(var s:string;s1:string;const s2:string);
@@ -56,7 +66,11 @@ interface
     function int64tostr(i : int64) : string;
     function tostr_with_plus(i : longint) : string;
     procedure valint(S : string;var V : longint;var code : integer);
+    {# Returns true if the string s is a number }
     function is_number(const s : string) : boolean;
+    {# Returns true if value is a power of 2, the actual  
+       exponent value is returned in power.
+    }
     function ispowerof2(value : int64;var power : longint) : boolean;
     function maybequoted(const s:string):string;
     function CompareText(S1, S2: string): longint;
@@ -70,12 +84,16 @@ interface
     { a pointer to this mem                                           }
     function stringdup(const s : string) : pstring;
 
-    { allocates memory for s and copies s as zero terminated string
-      to that mem and returns a pointer to that mem }
+    {# Allocates memory for the string @var(s) and copies s as zero 
+       terminated string to that allocated memory and returns a pointer 
+       to that mem 
+    }
     function  strpnew(const s : string) : pchar;
     procedure strdispose(var p : pchar);
 
-    { makes a char lowercase, with spanish, french and german char set }
+    {# makes the character @var(c) lowercase, with spanish, french and german 
+       character set 
+    }
     function lowercase(c : char) : char;
 
     { makes zero terminated string to a pascal string }
@@ -685,7 +703,7 @@ uses
     { 0 means equal }
     { 1 means p1 > p2 }
     { -1 means p1 < p2 }
-    function compareansistrings(p1,p2 : pchar;length1,length2 : longint) : longint;
+    function compareansistrings(p1,p2 : pchar;length1,length2 :  longint) : longint;
       var
          i,j : longint;
       begin
@@ -747,63 +765,8 @@ initialization
 end.
 {
   $Log$
-  Revision 1.13  2002-04-02 17:11:28  peter
-    * tlocation,treference update
-    * LOC_CONSTANT added for better constant handling
-    * secondadd splitted in multiple routines
-    * location_force_reg added for loading a location to a register
-      of a specified size
-    * secondassignment parses now first the right and then the left node
-      (this is compatible with Kylix). This saves a lot of push/pop especially
-      with string operations
-    * adapted some routines to use the new cg methods
-
-  Revision 1.12  2001/11/18 18:43:13  peter
-    * overloading supported in child classes
-    * fixed parsing of classes with private and virtual and overloaded
-      so it is compatible with delphi
-
-  Revision 1.11  2001/09/05 15:20:26  jonas
-    * ispowerf2 now works with 64bit ints and should be faster
-
-  Revision 1.10  2001/08/04 11:06:30  peter
-    * browcol has no depends on ide/fv
-
-  Revision 1.9  2001/07/30 20:59:27  peter
-    * m68k updates from v10 merged
-
-  Revision 1.8  2001/07/01 20:16:15  peter
-    * alignmentinfo record added
-    * -Oa argument supports more alignment settings that can be specified
-      per type: PROC,LOOP,VARMIN,VARMAX,CONSTMIN,CONSTMAX,RECORDMIN
-      RECORDMAX,LOCALMIN,LOCALMAX. It is possible to set the mimimum
-      required alignment and the maximum usefull alignment. The final
-      alignment will be choosen per variable size dependent on these
-      settings
-
-  Revision 1.7  2001/06/18 20:36:23  peter
-    * -Ur switch (merged)
-    * masm fixes (merged)
-    * quoted filenames for go32v2 and win32
-
-  Revision 1.6  2001/05/09 14:11:10  jonas
-    * range check error fixes from Peter
-
-  Revision 1.5  2000/12/24 12:25:31  peter
-    + cstreams unit
-    * dynamicarray object to class
-
-  Revision 1.4  2000/11/28 00:17:43  pierre
-   + int64tostr function added
-
-  Revision 1.3  2000/11/07 20:47:35  peter
-    * use tables for upper/lower
-
-  Revision 1.2  2000/09/24 15:06:14  peter
-    * use defines.inc
-
-  Revision 1.1  2000/08/27 16:11:50  peter
-    * moved some util functions from globals,cobjects to cutils
-    * splitted files into finput,fmodule
+  Revision 1.14  2002-04-12 17:16:35  carl
+  + more documentation of basic unit
 
 }
+