aboutsummaryrefslogtreecommitdiffstats
path: root/SAHP/SAHP.internal-portable.scm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2025-02-24 18:40:55 -0500
committerGravatar Peter McGoron 2025-02-24 18:40:55 -0500
commitc8293105bac4b81903acaeb7235c0516e8bad429 (patch)
tree51f7c75d5563527cd0f62d29611e38d9ce4cec35 /SAHP/SAHP.internal-portable.scm
parentfix subtyping insertion for global tables (diff)
make library hierarchy
Diffstat (limited to 'SAHP/SAHP.internal-portable.scm')
-rw-r--r--SAHP/SAHP.internal-portable.scm34
1 files changed, 34 insertions, 0 deletions
diff --git a/SAHP/SAHP.internal-portable.scm b/SAHP/SAHP.internal-portable.scm
new file mode 100644
index 0000000..3174f4c
--- /dev/null
+++ b/SAHP/SAHP.internal-portable.scm
@@ -0,0 +1,34 @@
+#| Copyright 2024 Peter McGoron
+ |
+ | Licensed under the Apache License, Version 2.0 (the "License");
+ |
+ | you may not use this file except in compliance with the License.
+ | You may obtain a copy of the License at
+ |
+ | http://www.apache.org/licenses/LICENSE-2.0
+ |
+ | Unless required by applicable law or agreed to in writing, software
+ | distributed under the License is distributed on an "AS IS" BASIS,
+ | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ | See the License for the specific language governing permissions and
+ | limitations under the License.
+ |#
+
+#| A portable implementation of `extract-SAHP-descriptor`, `make-new-SAHP`
+ using a unexported sentinel object.
+|#
+
+(define SAHP-sentinel-value
+ (vector #f))
+
+(define (extract-SAHP-descriptor SAHP)
+ (SAHP SAHP-sentinel-value))
+
+(define (make-new-SAHP)
+ (let ((SAHP (make-SAHP-descriptor (make-symbol-mapping)
+ (make-parameter (make-symbol-mapping))
+ (make-symbol-hash-table)))))
+ (lambda (arg1 . arg-rest)
+ (if (eq? arg1 SAHP-sentinel-value)
+ SAHP
+ (call-SAHP SAHP (type-of arg1) (cons arg1 arg-rest)))))