Browse Source

+ initial check-in

michael 20 years ago
parent
commit
02f85d2f9b
6 changed files with 213 additions and 0 deletions
  1. 101 0
      docs/strutex/Makefile
  2. 4 0
      docs/strutex/README
  3. 66 0
      docs/strutex/ex1.pp
  4. 25 0
      docs/strutex/ex2.pp
  5. 9 0
      docs/strutex/newex
  6. 8 0
      docs/strutex/template.pp

+ 101 - 0
docs/strutex/Makefile

@@ -0,0 +1,101 @@
+#######################################################################
+#
+# Makefile to compile all examples and convert them to LaTeX
+# 
+#######################################################################
+
+# Compiler
+
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPC:=$(shell $(FPCPROG) -PB)
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=ppc386
+endif
+else
+override FPC=ppc386
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+
+# Unit directory
+# UNITDIR=/usr/lib/ppc/0.99.0/linuxunits
+
+
+# Any options you wish to pass.
+PPOPTS=
+
+# Script to convert the programs to LaTeX examples which can be included.
+PP2TEX=../pp2tex
+
+# Script to collect all examples in 1 file.
+MAKETEX=make1tex
+
+#######################################################################
+# No need to edit after this line.
+#######################################################################
+
+ifdef UNITDIR
+PPOPTS:=$(PPOPTS) -Up$(UNITDIR);
+endif
+
+.SUFFIXES: .pp .tex
+
+.PHONY: all tex clean execute
+
+OBJECTS=ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 ex10 ex11 ex12\
+        ex13 ex14 ex15 ex16 ex17 ex18 ex19 ex20 ex21 ex22 ex23 ex24\
+        ex25 ex26 ex27 ex28 ex29 ex30 ex31 ex32 ex33 ex34 ex35 ex36\
+        ex37 ex38 ex39 ex40 ex41 ex42 ex43 ex44 ex45 ex46 ex47\
+        ex48 ex49 ex50 ex51 ex52 ex53 ex54 ex55 ex56 ex57 ex58\
+        ex59 ex60 ex61 ex62 ex63 ex64 ex65 ex66 ex67 ex68 ex69 ex70\
+        ex71 ex72 ex73 ex74 ex75 ex76 ex77 ex78 ex79 ex80 \
+        ex81 ex82 ex83 ex84 ex85 ex86 ex87 ex88 ex89 ex90 ex91 ex92 \
+        ex93
+        
+# This might not be the same list as objects, since some of the
+# tests might be interactive.
+TOTEST=ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 ex10 ex11 ex12\
+        ex13 ex14 ex15 ex16 ex17 ex18 ex19 ex20 ex21 ex22 ex23 ex24\
+        ex25 ex26 ex27 ex28 ex29 ex30 ex31 ex32 ex35 ex36\
+        ex37 ex39 ex41 ex42 ex43 ex44 ex45 ex46 ex47\
+        ex48 ex49 ex50 ex51 ex52 ex53 ex54 ex55 ex56 ex57 ex58\
+        ex59 ex60 ex61 ex62 ex63 ex64 ex65 ex66 ex67 ex68 ex69 ex70\
+        ex72 ex73 ex74 ex75 ex76 ex77 ex78 ex79 ex80 \
+        ex81 ex82 ex83 ex84 ex85 ex86 ex87 ex88 ex89 ex90 ex91 ex92 \
+        ex93    
+
+LOGFILE=$(addsuffix .log, $(TOTEST))
+        
+
+TEXOBJECTS=$(addsuffix .tex, $(OBJECTS))
+
+all : $(OBJECTS)
+
+execute: $(LOGFILE)
+
+tex : $(TEXOBJECTS)
+
+onetex : tex
+	$(MAKETEX) $(TEXOBJECTS)
+
+clean : 
+	rm -f *.o *.s $(OBJECTS) $(TEXOBJECTS)
+	rm -f *.ow *.sw *.exe *.dll *.ppw *.tmp *.log *.dat
+ 
+$(OBJECTS): %: %.pp
+	$(FPC) $(PPOPTS) $*
+
+$(TEXOBJECTS): %.tex: %.pp head.tex foot.tex
+	$(PP2TEX) $*
+
+$(LOGFILE): %.log: %.exe 
+	$* > $*.log

+ 4 - 0
docs/strutex/README

@@ -0,0 +1,4 @@
+This directory contains the examples for the strutils unit.
+
+ex1.pp contains an example of the SearchBuf function.
+ex2.pp contains an example of the WordCount,ExtractWordPos,WordPosition functions.

+ 66 - 0
docs/strutex/ex1.pp

@@ -0,0 +1,66 @@
+{$ifdef fpc}
+{$mode objfpc}
+{$h+}
+{$endif}
+Program ex1;
+
+uses StrUtils;
+
+Const
+  S : PChar = 'Some very long string with some words in it';
+  Starts : Array[1..3] of Integer = (0,10,41);
+
+Procedure DoTest(Sub:String; Start : Integer; O : TStringSearchOptions);
+
+Var
+  Res : String;
+  P : PChar;
+
+begin
+  Write('Searching for "',Sub,'" starting at pos ',Start,' : ');
+  P:=SearchBuf(Pchar(S),Length(S),Start,0,Sub,O);
+  if (P=Nil) then
+      Writeln('Not found')
+  else
+    begin
+    Res:=StringOfChar(' ',Length(Sub));
+    SetLength(Res,Length(Sub));
+    Move(P^,Res[1],Length(Sub));
+    Writeln('Found at pos ',(P-PChar(S)),' : ',Res);
+    end;
+end;  
+
+Procedure DoTests(Sub : String; O : TStringSearchOptions);
+
+Var
+  I : Integer;
+
+begin
+  Writeln('Searching up');
+  For I:=1 to 3 do
+    DoTest(Sub,Starts[i],O);
+  Include(O,soDown);
+  Writeln('Searching down');
+  For I:=1 to 3 do
+    DoTest(Sub,Starts[i],O);
+end;
+
+Procedure DoAllTests(S : String);
+
+begin
+  Writeln('No options');
+  DoTests(S,[]);
+  Writeln('Match case:');
+  DoTests(S,[soMatchCase]);
+  Writeln('Whole word:');
+  DoTests(S,[soWholeWord]);
+  Writeln('Match case, whole word:');
+  DoTests(S,[soMatchCase,soWholeWord]);
+end;
+
+begin
+  DoAllTests('very');
+  DoAllTests('Very');
+  DoAllTests('in');
+  DoAllTests('In'); 
+end.

+ 25 - 0
docs/strutex/ex2.pp

@@ -0,0 +1,25 @@
+{$mode objfpc}
+{$h+}
+Program testp;
+
+uses sysutils,strutils;
+
+Const
+  Count = 10000000;
+  Delims = [' ','.'];
+Var
+  S,T : String;
+  I,N : Integer;
+  
+begin
+  S:='THE CAT WAS NEVER SMART ENOUGH TO CATCH THIS FAST LITTLE MOUSE.';
+  For I:=1 to 8 do
+    Write('1234567890');
+  Writeln;  
+  Writeln(S);
+  For I:=1 to WordCount(S,Delims) do
+    begin
+    T:=ExtractWordPos(I,S,Delims,N);
+    Writeln('Word ',I:2,' starts at ',N:2,'(',WordPosition(I,S,Delims):2,') : ',T);
+    end;
+end.                                                

+ 9 - 0
docs/strutex/newex

@@ -0,0 +1,9 @@
+#!/bin/sh
+if [ -e ex${1}.pp ]; then
+  mv ex${1}.pp ex${1}.pp.orig
+fi
+sed -e s/Example/Example$1/ -e s/\\\*\\\*\\\*/$2/ <template.pp >ex${1}.pp
+echo "ex${1}.pp contains an example of the $2 function." >>README
+joe ex${1}.pp
+ppc386 ex${1}.pp && ex${1}
+rm ex${1}.o

+ 8 - 0
docs/strutex/template.pp

@@ -0,0 +1,8 @@
+Program Example;
+
+{ This program demonstrates the *** function }
+
+Uses strutils;
+
+Begin
+End.