aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontend/type_io.dcl9
-rw-r--r--frontend/type_io.icl54
-rw-r--r--main/compile.icl55
3 files changed, 54 insertions, 64 deletions
diff --git a/frontend/type_io.dcl b/frontend/type_io.dcl
index 15962ca..d9153f3 100644
--- a/frontend/type_io.dcl
+++ b/frontend/type_io.dcl
@@ -3,15 +3,6 @@
*/
definition module type_io
-openTclFile :: !Bool !String !*Files -> (Optional .File, !*Files)
-closeTclFile :: !*(Optional *File) *Files -> *(!Bool,*Files)
-
-baseName :: {#Char} -> {#Char}
-
-directoryName :: {#Char} -> {#Char}
-
-splitBy :: Char {#Char} -> [{#Char}]
-
// WARNING: It is essential to report changes in this module to martijnv@cs.kun.nl
// because the binary format for type-files is used by the dynamic run-time
// system.
diff --git a/frontend/type_io.icl b/frontend/type_io.icl
index 433346f..3c0c5d0 100644
--- a/frontend/type_io.icl
+++ b/frontend/type_io.icl
@@ -472,57 +472,3 @@ where
= write_type_info c2 tcl_file wtis
= (tcl_file,wtis)
-from CoclSystemDependent import DirectorySeparator, ensureCleanSystemFilesExists
-
-openTclFile :: !Bool !String !*Files -> (Optional .File, !*Files)
-openTclFile False icl_mod_pathname files
- = (No,files)
-openTclFile compile_for_dynamics icl_mod_pathname files
- # csf_path
- = directoryName icl_mod_pathname +++ "Clean System Files"
- # tcl_path
- = csf_path +++ {DirectorySeparator} +++ baseName icl_mod_pathname +++ ".tcl"
- # (opened, tcl_file, files)
- = fopen tcl_path FWriteData files
- | opened
- = (Yes tcl_file, files)
- // try again after creating Clean System Files folder
- # (ok, files)
- = ensureCleanSystemFilesExists csf_path files
- | not ok
- = abort ("can't create folder \"" +++ csf_path +++"\"\n")
- # (opened, tcl_file, files)
- = fopen tcl_path FWriteData files
- | opened
- =(Yes tcl_file, files)
- = abort ("couldn't open file \"" +++ tcl_path +++ "\"\n")
-
-closeTclFile :: !*(Optional *File) *Files -> *(!Bool,*Files)
-closeTclFile (Yes tcl_file) files
- = fclose tcl_file files
-closeTclFile _ files
- = (True,files);
-
-// copy from compile.icl ...
-baseName :: {#Char} -> {#Char}
-baseName path
- = last (splitBy DirectorySeparator path)
-
-directoryName :: {#Char} -> {#Char}
-directoryName path
- = foldr (\p ps -> p +++ {DirectorySeparator} +++ ps) "" (init (splitBy DirectorySeparator path))
-
-splitBy :: Char {#Char} -> [{#Char}]
-splitBy char string
- = splitBy` 0 0
- where
- splitBy` frm to
- | to >= stringSize
- = [string % (frm, to-1)]
- | string.[to] == char
- = [string % (frm, to-1) : splitBy` (to+1) (to+1)]
- // otherwise
- = splitBy` frm (to+1)
- stringSize
- = size string
-// ... copy from compile.icl \ No newline at end of file
diff --git a/main/compile.icl b/main/compile.icl
index 980e239..7b04b22 100644
--- a/main/compile.icl
+++ b/main/compile.icl
@@ -10,7 +10,60 @@ import filesystem, CoclSystemDependent
import portToNewSyntax
import compilerSwitches
//import RWSDebug
-from type_io import openTclFile, closeTclFile, baseName, directoryName, splitBy
+
+from CoclSystemDependent import DirectorySeparator, ensureCleanSystemFilesExists
+
+baseName :: {#Char} -> {#Char}
+baseName path
+ = last (splitBy DirectorySeparator path)
+
+directoryName :: {#Char} -> {#Char}
+directoryName path
+ = foldr (\p ps -> p +++ {DirectorySeparator} +++ ps) "" (init (splitBy DirectorySeparator path))
+
+splitBy :: Char {#Char} -> [{#Char}]
+splitBy char string
+ = splitBy` 0 0
+ where
+ splitBy` frm to
+ | to >= stringSize
+ = [string % (frm, to-1)]
+ | string.[to] == char
+ = [string % (frm, to-1) : splitBy` (to+1) (to+1)]
+ // otherwise
+ = splitBy` frm (to+1)
+ stringSize
+ = size string
+
+openTclFile :: !Bool !String !*Files -> (Optional .File, !*Files)
+openTclFile False icl_mod_pathname files
+ = (No,files)
+openTclFile compile_for_dynamics icl_mod_pathname files
+ # csf_path
+ = directoryName icl_mod_pathname +++ "Clean System Files"
+ # tcl_path
+ = csf_path +++ {DirectorySeparator} +++ baseName icl_mod_pathname +++ ".tcl"
+ # (opened, tcl_file, files)
+ = fopen tcl_path FWriteData files
+ | opened
+ = (Yes tcl_file, files)
+ // try again after creating Clean System Files folder
+ # (ok, files)
+ = ensureCleanSystemFilesExists csf_path files
+ | not ok
+ = abort ("can't create folder \"" +++ csf_path +++"\"\n")
+ # (opened, tcl_file, files)
+ = fopen tcl_path FWriteData files
+ | opened
+ =(Yes tcl_file, files)
+ = abort ("couldn't open file \"" +++ tcl_path +++ "\"\n")
+
+closeTclFile :: !*(Optional *File) *Files -> *(!Bool,*Files)
+closeTclFile (Yes tcl_file) files
+ = fclose tcl_file files
+closeTclFile _ files
+ = (True,files);
+
:: CoclOptions =