├── .clang-format ├── .dir-locals.el ├── .dockerignore ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── extension-request.md │ └── feature_request.md ├── dependabot.yml └── workflows │ ├── docker.yml │ ├── pkg.yml │ └── test.yml ├── .gitignore ├── .identifiers ├── .mailmap ├── CONTRIBUTING.md ├── README.md ├── RELEASE_NOTES.md ├── SECURITY.md ├── analyze ├── apptainer ├── build-cando-apptainer-arch ├── cando-arch.def ├── clasp.def ├── old-build-cando-apptainer └── old-cando.def ├── bin ├── debug ├── debug-snapshot ├── lldb-tty ├── setenv ├── sigusr1 ├── udb-tty └── udb-tui ├── cscript.lisp ├── debian ├── changelog ├── control ├── copyright ├── rules └── source │ ├── format │ └── options ├── debugger-tools ├── .gitignore ├── README.md ├── backends │ ├── gdb.py │ └── lldb.py ├── clasp_inspect │ └── __init__.py ├── dot-files │ ├── dot_gdbinit │ ├── dot_lldbinit │ └── dot_udbinit ├── extend_lldb │ ├── __init__.py │ ├── globals.py │ ├── loadperf.py │ └── print_function.py ├── gdb-loader.py ├── lldb_loader.py └── run │ ├── gdb-tty │ ├── gdb-tui │ ├── lldb-tty │ ├── setenv │ ├── sigusr1 │ ├── udb-tty │ ├── udb-tui │ └── unsetenv ├── docker └── clasp │ └── Dockerfile ├── docs ├── Doxyfile ├── bootstrap.rst ├── clasp.1 ├── filterSrc ├── filterSrc.m4 ├── filterSrc1.m4 ├── fli-concept.text ├── fli-notes.md ├── sbcl-macros-to-learn.txt └── userDocs.pdf ├── gentoo ├── ebuild.template └── metadata.xml ├── guix ├── cando.scm └── clasp.scm ├── include ├── clasp │ ├── asttooling │ │ ├── astExpose.h │ │ ├── asttoolingPackage.h │ │ ├── asttooling_scrape_flag.h │ │ ├── clangCompilePkg.h │ │ ├── clangTooling.h │ │ ├── example.h │ │ ├── tools.h │ │ └── translators.h │ ├── cffi-old │ │ ├── cffi.fwd.h │ │ ├── cffi.h │ │ ├── cffiPackage.h │ │ └── cffi_scrape_flag.h │ ├── clasp.h │ ├── clbind │ │ ├── adapter.fwd.h │ │ ├── adapter.h │ │ ├── allHeaders.h │ │ ├── apply.h │ │ ├── apply_impl.h │ │ ├── cl_include.h │ │ ├── class.h │ │ ├── class_registry.h │ │ ├── class_rep.h │ │ ├── clbind.h │ │ ├── clbindPackage.h │ │ ├── clbind_scrape_flag.h │ │ ├── clbind_wrappers.h │ │ ├── config.h │ │ ├── constructor.h │ │ ├── derivable.h │ │ ├── derivable_class.h │ │ ├── details.h │ │ ├── enum_maker.h │ │ ├── external_policies.h │ │ ├── function.h │ │ ├── getterBot.h │ │ ├── getterTop.h │ │ ├── inheritance.fwd.h │ │ ├── inheritance.h │ │ ├── iteratorMemberFunction.h │ │ ├── link_compatibility.h │ │ ├── memberFunction.h │ │ ├── names.h │ │ ├── nil.h │ │ ├── open.h │ │ ├── policies.h │ │ ├── primitives.h │ │ ├── property.h │ │ ├── scope.h │ │ ├── setterBot.h │ │ ├── setterTop.h │ │ ├── typeid.h │ │ └── wrapped_iterator.h │ ├── core │ │ ├── allClSymbols.h │ │ ├── arguments.h │ │ ├── array.fwd.h │ │ ├── array.h │ │ ├── array_bit.h │ │ ├── array_double.h │ │ ├── array_fixnum.h │ │ ├── array_float.h │ │ ├── array_int16.h │ │ ├── array_int2.h │ │ ├── array_int32.h │ │ ├── array_int4.h │ │ ├── array_int64.h │ │ ├── array_int8.h │ │ ├── array_long_float.h │ │ ├── array_short_float.h │ │ ├── array_size_t.h │ │ ├── array_specialized_template.h │ │ ├── array_t.h │ │ ├── backquote.h │ │ ├── backtrace.h │ │ ├── bformat.h │ │ ├── bignum.fwd.h │ │ ├── bignum.h │ │ ├── binder.fwd.h │ │ ├── bits.h │ │ ├── bootStrapCoreSymbolMap.h │ │ ├── bundle.h │ │ ├── bytecode.h │ │ ├── bytecode_compiler.h │ │ ├── candoOpenMp.h │ │ ├── character.fwd.h │ │ ├── character.h │ │ ├── clasp_ffi_package.fwd.h │ │ ├── clasp_ffi_package.h │ │ ├── clasp_gmpxx.h │ │ ├── claspconfig.h │ │ ├── cleavirEnvPackage.fwd.h │ │ ├── cleavirPrimopsPackage.fwd.h │ │ ├── cleavirPrimopsPackage.h │ │ ├── closPackage.fwd.h │ │ ├── closPackage.h │ │ ├── commandLineOptions.h │ │ ├── common.h │ │ ├── commonLispPackage.fwd.h │ │ ├── commonLispPackage.h │ │ ├── commonLispUserPackage.fwd.h │ │ ├── commonLispUserPackage.h │ │ ├── compPackage.fwd.h │ │ ├── compPackage.h │ │ ├── compiler.h │ │ ├── configure_clasp.h │ │ ├── cons.fwd.h │ │ ├── cons.h │ │ ├── core.h │ │ ├── corePackage.fwd.h │ │ ├── corePackage.h │ │ ├── core_globals.h │ │ ├── coretypes.h │ │ ├── creator.h │ │ ├── cxxObject.h │ │ ├── debugger.h │ │ ├── debugger2.h │ │ ├── derivableCxxObject.h │ │ ├── designators.h │ │ ├── documentation.h │ │ ├── eclector_readtable.fwd.h │ │ ├── eclector_readtable.h │ │ ├── environment.fwd.h │ │ ├── evaluator.fwd.h │ │ ├── evaluator.h │ │ ├── exceptions.h │ │ ├── extensionPackage.fwd.h │ │ ├── extensionPackage.h │ │ ├── externalObject.fwd.h │ │ ├── externalObject.h │ │ ├── external_wrappers.h │ │ ├── fileSystem.fwd.h │ │ ├── fileSystem.h │ │ ├── fli.fwd.h │ │ ├── fli.h │ │ ├── float_to_digits.h │ │ ├── float_to_string.h │ │ ├── float_util.h │ │ ├── foundation.h │ │ ├── funcallableInstance.h │ │ ├── function.h │ │ ├── gcInterface.h │ │ ├── glue.fwd.h │ │ ├── glue.h │ │ ├── grayPackage.fwd.h │ │ ├── grayPackage.h │ │ ├── hashTable.fwd.h │ │ ├── hashTable.h │ │ ├── hashTableCustom.h │ │ ├── hashTableEq.h │ │ ├── hashTableEql.h │ │ ├── hashTableEqual.h │ │ ├── hashTableEqualp.h │ │ ├── hwinfo.h │ │ ├── instance.fwd.h │ │ ├── instance.h │ │ ├── intStackQueue.h │ │ ├── iterator.fwd.h │ │ ├── iterator.h │ │ ├── keywordPackage.fwd.h │ │ ├── keywordPackage.h │ │ ├── lambdaListHandler.fwd.h │ │ ├── lambdaListHandler.h │ │ ├── lightProfiler.h │ │ ├── lisp.fwd.h │ │ ├── lisp.h │ │ ├── lispCallingConvention.h │ │ ├── lispDefinitions.h │ │ ├── lispList.h │ │ ├── lispReader.h │ │ ├── lispStream.fwd.h │ │ ├── lispStream.h │ │ ├── load.h │ │ ├── loadTimeValues.fwd.h │ │ ├── loadTimeValues.h │ │ ├── metaClass.fwd.h │ │ ├── metaClass.h │ │ ├── mpPackage.fwd.h │ │ ├── mpPackage.h │ │ ├── multipleValues.fwd.h │ │ ├── multipleValues.h │ │ ├── myReadLine.h │ │ ├── nativeVector.fwd.h │ │ ├── nativeVector.h │ │ ├── newhash.h │ │ ├── null.h │ │ ├── num_arith.h │ │ ├── num_co.h │ │ ├── numberToString.h │ │ ├── numbers.fwd.h │ │ ├── numbers.h │ │ ├── numerics.h │ │ ├── object.fwd.h │ │ ├── object.h │ │ ├── package.fwd.h │ │ ├── package.h │ │ ├── pathname.fwd.h │ │ ├── pathname.h │ │ ├── pointer.fwd.h │ │ ├── pointer.h │ │ ├── posixTime.h │ │ ├── predicates.h │ │ ├── primitives.fwd.h │ │ ├── primitives.h │ │ ├── print.h │ │ ├── ql.h │ │ ├── random.h │ │ ├── reader.fwd.h │ │ ├── readtable.fwd.h │ │ ├── readtable.h │ │ ├── record.h │ │ ├── scrape.h │ │ ├── seqPackage.fwd.h │ │ ├── seqPackage.h │ │ ├── sequence.fwd.h │ │ ├── sequence.h │ │ ├── sharpEqualWrapper.h │ │ ├── singleDispatch.fwd.h │ │ ├── singleDispatchGenericFunction.fwd.h │ │ ├── singleDispatchGenericFunction.h │ │ ├── singleDispatchMethod.fwd.h │ │ ├── singleDispatchMethod.h │ │ ├── smallMap.h │ │ ├── smallMultimap.h │ │ ├── sort.h │ │ ├── sourceFileInfo.fwd.h │ │ ├── sourceFileInfo.h │ │ ├── stackmap.h │ │ ├── stacks.fwd.h │ │ ├── string.h │ │ ├── symbol.fwd.h │ │ ├── symbol.h │ │ ├── symbolTable.h │ │ ├── symbolToEnumConverter.fwd.h │ │ ├── symbolToEnumConverter.h │ │ ├── symbolVector.fwd.h │ │ ├── sysprop.h │ │ ├── translators.h │ │ ├── unix.h │ │ ├── unixfsys.h │ │ ├── unwind.h │ │ ├── userData.h │ │ ├── weakPointer.h │ │ ├── wrappedPointer.h │ │ ├── wrappers.h │ │ ├── write_array.h │ │ ├── write_object.h │ │ ├── write_symbol.h │ │ └── write_ugly.h │ ├── external │ │ ├── PicoSHA2 │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── example │ │ │ │ ├── hasher.cpp │ │ │ │ └── interactive_hasher.cpp │ │ │ ├── picosha2.h │ │ │ └── test │ │ │ │ └── test.cpp │ │ ├── bloom │ │ │ └── bloom_filter.h │ │ ├── hash-library │ │ │ ├── crc32.cpp │ │ │ ├── crc32.h │ │ │ ├── digest.cpp │ │ │ ├── hash.h │ │ │ ├── hmac.h │ │ │ ├── keccak.cpp │ │ │ ├── keccak.h │ │ │ ├── md5.cpp │ │ │ ├── md5.h │ │ │ ├── sha1.cpp │ │ │ ├── sha1.h │ │ │ ├── sha256.cpp │ │ │ ├── sha256.h │ │ │ ├── sha3.cpp │ │ │ ├── sha3.h │ │ │ └── tests │ │ │ │ └── tests.cpp │ │ └── thread-pool │ │ │ └── thread_pool.h │ ├── gctools │ │ ├── boehmGarbageCollection.h │ │ ├── boehm_config.h │ │ ├── cast.h │ │ ├── configure_memory.h │ │ ├── containers.h │ │ ├── exposeCommon.h │ │ ├── exposeFunctions.h │ │ ├── gcFunctions.h │ │ ├── gcSmallMap.h │ │ ├── gcSmallMultimap.h │ │ ├── gcSmallSet.h │ │ ├── gcStack.h │ │ ├── gc_boot.h │ │ ├── gc_interface.fwd.h │ │ ├── gc_interface.h │ │ ├── gcalloc.h │ │ ├── gcalloc_boehm.h │ │ ├── gcalloc_mmtk.h │ │ ├── gcalloc_mps.h │ │ ├── gcarray.h │ │ ├── gcbitarray.h │ │ ├── gctoolsPackage.fwd.h │ │ ├── gctoolsPackage.h │ │ ├── gctools_scrape_flag.h │ │ ├── gcvector.h │ │ ├── gcweak.h │ │ ├── generated │ │ │ └── .gitignore │ │ ├── globals.h │ │ ├── hardErrors.h │ │ ├── interrupt.h │ │ ├── memoryManagement.h │ │ ├── mmtkGarbageCollection.h │ │ ├── mpsGarbageCollection.h │ │ ├── multiple_value_pointers.h │ │ ├── park.h │ │ ├── pointer_tagging.h │ │ ├── smart_pointers.h │ │ ├── snapshotSaveLoad.fwd.h │ │ ├── snapshotSaveLoad.h │ │ ├── source_info.h │ │ ├── tagged_cast.h │ │ ├── threadLocalStacks.h │ │ ├── threadlocal.fwd.h │ │ └── threadlocal.h │ ├── llvmo │ │ ├── claspLinkPass.h │ │ ├── clbindLlvmExpose.h │ │ ├── code.h │ │ ├── debugInfoExpose.fwd.h │ │ ├── debugInfoExpose.h │ │ ├── debugLoc.fwd.h │ │ ├── debugLoc.h │ │ ├── insertPoint.fwd.h │ │ ├── insertPoint.h │ │ ├── intrinsics.fwd.h │ │ ├── intrinsics.h │ │ ├── jit.h │ │ ├── llvmoDwarf.h │ │ ├── llvmoExpose.fwd.h │ │ ├── llvmoExpose.h │ │ ├── llvmoPackage.h │ │ ├── llvmo_scrape_flag.h │ │ ├── metaClass.h │ │ ├── read-stamp.cc │ │ └── translators.h │ ├── mpip │ │ ├── claspMpi.h │ │ └── mpiPackage.h │ ├── serveEvent │ │ ├── serveEvent.h │ │ ├── serveEventPackage.h │ │ └── serveEvent_scrape_flag.h │ └── sockets │ │ ├── allHeaders.h │ │ ├── sockets.h │ │ ├── socketsPackage.h │ │ └── sockets_scrape_flag.h └── cscript.lisp ├── koga ├── licenses ├── LGPL ├── clasp_Copyright ├── ecl_Copyright └── mps_license.txt ├── repos.sexp ├── src ├── analysis │ ├── clasp_gc.sif │ ├── clasp_gc_cando.sif │ └── cscript.lisp ├── asttooling │ ├── .gitignore │ ├── astExpose0.cc │ ├── astExpose1.cc │ ├── asttoolingPackage.cc │ ├── clangCompiler.cc │ ├── clangTooling.cc │ ├── configure_symbol_scrape.py │ ├── cscript.lisp │ └── example.cc ├── clbind │ ├── .gitignore │ ├── adapter.cc │ ├── class.cc │ ├── class_registry.cc │ ├── class_rep.cc │ ├── clbind.cc │ ├── clbindPackage.cc │ ├── configure_symbol_scrape.py │ ├── cscript.lisp │ ├── derivable_class.cc │ ├── inheritance.cc │ ├── link_compatibility.cc │ ├── open.cc │ └── scope.cc ├── core │ ├── .gitignore │ ├── activationFrame.cc │ ├── allClSymbols.cc │ ├── arguments.cc │ ├── array.cc │ ├── array_bit.cc │ ├── backquote.cc │ ├── backtrace.cc │ ├── bformat.cc │ ├── bignum.cc │ ├── bits.cc │ ├── bootStrapCoreSymbolMap.cc │ ├── bundle.cc │ ├── bytecode.cc │ ├── bytecode_compiler.cc │ ├── candoMpiDisabled.cc │ ├── candoOpenMp.cc │ ├── character-generated.cc │ ├── character.cc │ ├── clasp_ffi_package.cc │ ├── cleavirEnvPackage.cc │ ├── cleavirPrimopsPackage.cc │ ├── closPackage.cc │ ├── commandLineOptions.cc │ ├── commonLispPackage.cc │ ├── commonLispUserPackage.cc │ ├── compPackage.cc │ ├── compiler.cc │ ├── configure_symbol_scrape.py │ ├── cons.cc │ ├── corePackage.cc │ ├── core_globals.cc │ ├── creator.cc │ ├── cscript.lisp │ ├── debug_macosx.cc │ ├── debug_unixes.cc │ ├── debugger.cc │ ├── debugger2.cc │ ├── dense_specialized_array_dispatch.cc │ ├── derivableCxxObject.cc │ ├── designators.cc │ ├── documentation.cc │ ├── dtree-interpreter.cc │ ├── dummy.cc │ ├── eclector_readtable.cc │ ├── evaluator.cc │ ├── exceptions.cc │ ├── extensionPackage.cc │ ├── externalObject.cc │ ├── fileSystem.cc │ ├── fli-notes.text │ ├── fli.cc │ ├── float_to_digits.cc │ ├── float_to_string.cc │ ├── foundation.cc │ ├── funcallableInstance.cc │ ├── function.cc │ ├── grayPackage.cc │ ├── hashTable.cc │ ├── hashTableCustom.cc │ ├── hashTableEq.cc │ ├── hashTableEql.cc │ ├── hashTableEqual.cc │ ├── hashTableEqualp.cc │ ├── hwinfo.cc │ ├── instance.cc │ ├── iterator.cc │ ├── keywordPackage.cc │ ├── lambdaListHandler.cc │ ├── lightProfiler.cc │ ├── lisp.cc │ ├── lispList.cc │ ├── lispReader.cc │ ├── lispStream.cc │ ├── load.cc │ ├── loadTimeValues.cc │ ├── loadltv.cc │ ├── metaClass.cc │ ├── mpPackage.cc │ ├── multipleValues.cc │ ├── myReadLine.cc │ ├── nativeVector.cc │ ├── null.cc │ ├── num_arith.cc │ ├── num_co.cc │ ├── numberToString.cc │ ├── numbers.cc │ ├── numerics.cc │ ├── object.cc │ ├── package.cc │ ├── pathname.cc │ ├── pointer.cc │ ├── posixTime.cc │ ├── predicates.cc │ ├── primitives.cc │ ├── print.cc │ ├── profiler.cc │ ├── random.cc │ ├── readtable.cc │ ├── record.cc │ ├── seqPackage.cc │ ├── sequence.cc │ ├── sharpEqualWrapper.cc │ ├── singleDispatchGenericFunction.cc │ ├── singleDispatchMethod.cc │ ├── smallMap.cc │ ├── smallMultimap.cc │ ├── sourceFileInfo.cc │ ├── stackmap.cc │ ├── string.cc │ ├── symbol.cc │ ├── symbolToEnumConverter.cc │ ├── sysprop.cc │ ├── trampoline │ │ └── trampoline.cc │ ├── unixfsys.cc │ ├── unixsys.cc │ ├── unwind.cc │ ├── weakPointer.cc │ ├── wrappedPointer.cc │ ├── write_array.cc │ ├── write_list.cc │ ├── write_object.cc │ ├── write_symbol.cc │ └── write_ugly.cc ├── cscript.lisp ├── fork-server │ ├── fork-client.c │ ├── makefile │ ├── start-fork-server-icando-boehm.sh │ └── start-fork-server-icando-mps.sh ├── gctools │ ├── .gitignore │ ├── boehmGarbageCollection.cc │ ├── configure_symbol_scrape.py │ ├── cons_scan.cc │ ├── cscript.lisp │ ├── exposeClasses0.cc │ ├── exposeClasses1.cc │ ├── exposeClasses2.cc │ ├── exposeClasses3.cc │ ├── exposeFunctions0.cc │ ├── exposeFunctions1.cc │ ├── exposeFunctions2.cc │ ├── exposeFunctions3.cc │ ├── gcFunctions.cc │ ├── gcStack.cc │ ├── gc_boot.cc │ ├── gc_interface.cc │ ├── gcalloc.cc │ ├── gctoolsPackage.cc │ ├── gcweak.cc │ ├── globals.cc │ ├── hardErrors.cc │ ├── interrupt.cc │ ├── memoryManagement.cc │ ├── mmtkGarbageCollection.cc │ ├── mygc.c │ ├── obj_scan.cc │ ├── park.cc │ ├── snapshotSaveLoad.cc │ ├── source_info.cc │ ├── startRunStop.cc │ └── threadlocal.cc ├── koga │ ├── archive.lisp │ ├── compile-commands.lisp │ ├── config-header.lisp │ ├── configure.lisp │ ├── header.lisp │ ├── help.lisp │ ├── koga.asd │ ├── ninja.lisp │ ├── packages.lisp │ ├── scripts.lisp │ ├── setup.lisp │ ├── source.lisp │ ├── target-sources.lisp │ ├── units.lisp │ └── utilities.lisp ├── lisp │ ├── .gitignore │ ├── clasp-asdf-registry.conf │ ├── compile-commands.lisp │ ├── cscript.lisp │ ├── extract-gc-builder.lisp │ ├── gc-builder-new.lisp │ ├── gc-builder.lisp │ ├── gc-builder_new.lisp │ ├── gc-kind.lisp │ ├── generated │ │ ├── .gitignore │ │ └── clasp │ │ │ └── .gitignore │ ├── kernel │ │ ├── clasp-builder.lisp │ │ ├── cleavir │ │ │ ├── ast.lisp │ │ │ ├── auto-compile.lisp │ │ │ ├── bir-to-bmir.lisp │ │ │ ├── bir.lisp │ │ │ ├── blir.lisp │ │ │ ├── bmir-to-blir.lisp │ │ │ ├── bmir.lisp │ │ │ ├── bytecode-adaptor.lisp │ │ │ ├── clasp-cleavir.asd │ │ │ ├── compile-bytecode.lisp │ │ │ ├── convert-form.lisp │ │ │ ├── convert-special.lisp │ │ │ ├── fold.lisp │ │ │ ├── hooks.lisp │ │ │ ├── inline-prep.lisp │ │ │ ├── inline.lisp │ │ │ ├── interval.lisp │ │ │ ├── ir.lisp │ │ │ ├── jit.lisp │ │ │ ├── landing-pad.lisp │ │ │ ├── packages.lisp │ │ │ ├── policy.lisp │ │ │ ├── primop.lisp │ │ │ ├── proclamations.lisp │ │ │ ├── questions.txt │ │ │ ├── reader.lisp │ │ │ ├── representation-selection.lisp │ │ │ ├── satiation.lisp │ │ │ ├── sbcl-workbench.lisp │ │ │ ├── setup.lisp │ │ │ ├── system.lisp │ │ │ ├── tools.lisp │ │ │ ├── transform.lisp │ │ │ ├── translate-btb.lisp │ │ │ ├── translate.lisp │ │ │ ├── translation-environment.lisp │ │ │ ├── type.lisp │ │ │ ├── unwind-notes.md │ │ │ ├── vaslist.lisp │ │ │ ├── workbench-fastgf.lisp │ │ │ └── workbench-load.lisp │ │ ├── clos │ │ │ ├── README │ │ │ ├── boot.lisp │ │ │ ├── builtin.lisp │ │ │ ├── change.lisp │ │ │ ├── closfastgf.lisp │ │ │ ├── combin.lisp │ │ │ ├── conditions.lisp │ │ │ ├── cpl.lisp │ │ │ ├── defclass.lisp │ │ │ ├── discriminate.lisp │ │ │ ├── dtree-graphviz.lisp │ │ │ ├── dtree.lisp │ │ │ ├── effective-accessor.lisp │ │ │ ├── fastgf.lisp │ │ │ ├── fixup.lisp │ │ │ ├── generic.lisp │ │ │ ├── hierarchy.lisp │ │ │ ├── inspect.lisp │ │ │ ├── kernel.lisp │ │ │ ├── method.lisp │ │ │ ├── outcome.lisp │ │ │ ├── package.lisp │ │ │ ├── print.lisp │ │ │ ├── satiation.lisp │ │ │ ├── sequences.lisp │ │ │ ├── slot.lisp │ │ │ ├── slotvalue.lisp │ │ │ ├── standard.lisp │ │ │ ├── static-gfs │ │ │ │ ├── README │ │ │ │ ├── allocate-instance.lisp │ │ │ │ ├── cell.lisp │ │ │ │ ├── change-class.lisp │ │ │ │ ├── changer.lisp │ │ │ │ ├── compiler-macros.lisp │ │ │ │ ├── compute-constructor.lisp │ │ │ │ ├── constructor.lisp │ │ │ │ ├── dependents.lisp │ │ │ │ ├── effective-method.lisp │ │ │ │ ├── flag.lisp │ │ │ │ ├── initialize-instance.lisp │ │ │ │ ├── make-instance.lisp │ │ │ │ ├── package.lisp │ │ │ │ ├── reinitialize-instance.lisp │ │ │ │ ├── reinitializer.lisp │ │ │ │ ├── shared-initialize.lisp │ │ │ │ ├── static-gfs.asd │ │ │ │ ├── svuc.lisp │ │ │ │ └── update-instance-for-different-class.lisp │ │ │ ├── std-accessors.lisp │ │ │ ├── std-slot-value.lisp │ │ │ ├── stdmethod.lisp │ │ │ ├── streams.lisp │ │ │ └── telemetry.lisp │ │ ├── clsymbols.lisp │ │ ├── cmp │ │ │ ├── activate-clasp-readtables-for-eclector.lisp │ │ │ ├── arguments.lisp │ │ │ ├── bytecode-machines.lisp │ │ │ ├── bytecode-reference.lisp │ │ │ ├── cmpbundle.lisp │ │ │ ├── cmpexports.lisp │ │ │ ├── cmpintrinsics.lisp │ │ │ ├── cmpir.lisp │ │ │ ├── cmpliteral.lisp │ │ │ ├── cmpltv.lisp │ │ │ ├── cmprunall.lisp │ │ │ ├── cmpsetup.lisp │ │ │ ├── cmputil.lisp │ │ │ ├── cmpwalk.lisp │ │ │ ├── codegen-special-form.lisp │ │ │ ├── compile-file-parallel.lisp │ │ │ ├── compile-file.lisp │ │ │ ├── compile.lisp │ │ │ ├── compiler-conditions.lisp │ │ │ ├── debuginfo.lisp │ │ │ ├── define-unicode-tables.lisp │ │ │ ├── disassemble.lisp │ │ │ ├── disltv.lisp │ │ │ ├── eclector-client.lisp │ │ │ ├── external-clang.lisp │ │ │ ├── fixup-eclector-readtables.lisp │ │ │ ├── jit-setup.lisp │ │ │ ├── opt │ │ │ │ ├── opt-array.lisp │ │ │ │ ├── opt-character.lisp │ │ │ │ ├── opt-cons.lisp │ │ │ │ ├── opt-control.lisp │ │ │ │ ├── opt-number.lisp │ │ │ │ ├── opt-object.lisp │ │ │ │ ├── opt-print.lisp │ │ │ │ ├── opt-sequence.lisp │ │ │ │ ├── opt-type.lisp │ │ │ │ └── opt.lisp │ │ │ ├── primitives.lisp │ │ │ ├── runtime-info.lisp │ │ │ ├── startup-primitives.lisp │ │ │ ├── typeq.lisp │ │ │ └── workbench.lisp │ │ ├── cmpexports.lisp │ │ ├── export-cl-symbols.lisp │ │ ├── init.lisp │ │ ├── lsp │ │ │ ├── .gitignore │ │ │ ├── all-cl-symbols.lisp │ │ │ ├── arraylib.lisp │ │ │ ├── assert.lisp │ │ │ ├── assorted.lisp │ │ │ ├── atomics.lisp │ │ │ ├── bytecode-introspect.lisp │ │ │ ├── cdr-5.lisp │ │ │ ├── claspmacros.lisp │ │ │ ├── cltl2.lisp │ │ │ ├── cmuutil.lisp │ │ │ ├── debug.lisp │ │ │ ├── defmacro.lisp │ │ │ ├── defpackage.lisp │ │ │ ├── defstruct.lisp │ │ │ ├── defvirtual.lisp │ │ │ ├── describe.lisp │ │ │ ├── encodings.lisp │ │ │ ├── evalmacros.lisp │ │ │ ├── export.lisp │ │ │ ├── exportcore.lisp │ │ │ ├── fli.lisp │ │ │ ├── format-pprint.lisp │ │ │ ├── format.lisp │ │ │ ├── foundation.lisp │ │ │ ├── generated-encodings.lisp │ │ │ ├── helpfile.lisp │ │ │ ├── iolib.lisp │ │ │ ├── listlib.lisp │ │ │ ├── loadltv.lisp │ │ │ ├── loop2.lisp │ │ │ ├── macroexpand-all.lisp │ │ │ ├── mislib.lisp │ │ │ ├── module.lisp │ │ │ ├── mp.lisp │ │ │ ├── numlib.lisp │ │ │ ├── packages.lisp │ │ │ ├── packlib.lisp │ │ │ ├── packlib2.lisp │ │ │ ├── posix.lisp │ │ │ ├── pprint.lisp │ │ │ ├── predlib.lisp │ │ │ ├── process.lisp │ │ │ ├── profiling.lisp │ │ │ ├── prologue.lisp │ │ │ ├── queue.lisp │ │ │ ├── seq.lisp │ │ │ ├── seqlib.lisp │ │ │ ├── seqmacros.lisp │ │ │ ├── setf.lisp │ │ │ ├── sharpmacros.lisp │ │ │ ├── shiftf-rotatef.lisp │ │ │ ├── source-location.lisp │ │ │ ├── source-transformations.lisp │ │ │ ├── source-transformations2.lisp │ │ │ ├── top-hook.lisp │ │ │ ├── top.lisp │ │ │ ├── trace.lisp │ │ │ ├── util.lisp │ │ │ └── xref.lisp │ │ └── stage │ │ │ ├── base │ │ │ ├── 0-begin.lisp │ │ │ ├── 0-end.lisp │ │ │ ├── 1-begin.lisp │ │ │ ├── 1-end.lisp │ │ │ ├── 2-begin.lisp │ │ │ └── 2-end.lisp │ │ │ └── extension │ │ │ ├── 0-begin.lisp │ │ │ └── 0-end.lisp │ ├── local-asdf-config.lisp │ ├── modules │ │ ├── asdf-groveler │ │ │ ├── asdf-groveler.asd │ │ │ ├── groveler.lisp │ │ │ └── packages.lisp │ │ ├── clang-tool │ │ │ ├── clang-tool.asd │ │ │ ├── clang-tool.lisp │ │ │ ├── embed-cxx.lisp │ │ │ ├── fix-rules.lisp │ │ │ ├── narrowing-matchers-13.txt │ │ │ ├── narrowing-matchers.txt │ │ │ ├── node-matchers-13.txt │ │ │ ├── node-matchers.txt │ │ │ ├── packages.lisp │ │ │ ├── rules-13.lisp │ │ │ ├── rules.lisp │ │ │ ├── traversal-matchers-13.txt │ │ │ ├── traversal-matchers.txt │ │ │ └── wb-clang-tool.lisp │ │ ├── clasp-analyzer │ │ │ ├── clasp-analyzer.asd │ │ │ ├── clasp-analyzer.lisp │ │ │ └── packages.lisp │ │ ├── cxx-refactor │ │ │ ├── expose-methods.lisp │ │ │ ├── rewrite-source.lisp │ │ │ ├── rewrites.txt │ │ │ └── workbench.lisp │ │ ├── docker-swank │ │ │ └── start-swank.lisp │ │ ├── docs │ │ │ ├── clasp-docs.asd │ │ │ ├── docs.lisp │ │ │ ├── documentation.md │ │ │ └── workbench.org │ │ ├── fork-server │ │ │ └── fork-server.lisp │ │ ├── ninja │ │ │ ├── line-wrapping-stream.lisp │ │ │ ├── logical-translations.lisp │ │ │ ├── ninja.asd │ │ │ ├── ninja.lisp │ │ │ ├── packages.lisp │ │ │ └── timestamp-preserving-stream.lisp │ │ ├── serve-event │ │ │ └── serve-event.lisp │ │ ├── sockets │ │ │ ├── example-server.lisp │ │ │ └── sockets.lisp │ │ └── unicode-data │ │ │ ├── packages.lisp │ │ │ ├── unicode-data.asd │ │ │ └── unicode.lisp │ ├── prof.lisp │ ├── refactor.lisp │ ├── refactoring-tools.lisp │ ├── regression-tests │ │ ├── .gitignore │ │ ├── array0.lisp │ │ ├── bit-array0.lisp │ │ ├── bit-array1.lisp │ │ ├── btb.lisp │ │ ├── cffi-defcallback.lisp │ │ ├── character0.lisp │ │ ├── clos.lisp │ │ ├── conditions.lisp │ │ ├── cons01.lisp │ │ ├── control01.lisp │ │ ├── debug.lisp │ │ ├── defcallback-native.lisp │ │ ├── eh.lisp │ │ ├── ehkiller.lisp │ │ ├── encodings.lisp │ │ ├── environment.lisp │ │ ├── environment01.lisp │ │ ├── extensions.lisp │ │ ├── external-process-programs.lisp │ │ ├── fastgf.lisp │ │ ├── finalizers.lisp │ │ ├── float-features.lisp │ │ ├── framework.lisp │ │ ├── hash-tables0.lisp │ │ ├── interrupt.lisp │ │ ├── iteration.lisp │ │ ├── latin2-check.lisp │ │ ├── loop.lisp │ │ ├── lowlevel-source.lisp │ │ ├── lowlevel.lisp │ │ ├── misc.lisp │ │ ├── mop.lisp │ │ ├── mp.lisp │ │ ├── numbers-core.lisp │ │ ├── numbers.lisp │ │ ├── package.lisp │ │ ├── posix.lisp │ │ ├── printer01.lisp │ │ ├── read01.lisp │ │ ├── run-all.lisp │ │ ├── run-program.lisp │ │ ├── sequences01.lisp │ │ ├── set-unexpected-failures.lisp │ │ ├── snapshot.lisp │ │ ├── stamps.lisp │ │ ├── streams01.lisp │ │ ├── string-comparison0.lisp │ │ ├── strings01.lisp │ │ ├── structures.lisp │ │ ├── symbol0.lisp │ │ ├── system-construction.lisp │ │ ├── test-compile-file.lisp │ │ ├── tests01.lisp │ │ ├── time-ctak.lisp │ │ ├── types01.lisp │ │ ├── unicode.lisp │ │ ├── unwind.lisp │ │ └── update-instance-abort.lisp │ ├── serialize.lisp │ ├── serialize │ │ ├── module.lisp │ │ └── old-serialize.lisp │ ├── swank-loader-docker.lisp │ └── swank-loader.lisp ├── llvmo │ ├── .gitignore │ ├── builtins.cc │ ├── claspLinkPass.cc │ ├── clbindLlvmExpose.cc │ ├── code.cc │ ├── configure_symbol_scrape.py │ ├── cscript.lisp │ ├── debugInfoExpose.cc │ ├── debugLoc.cc │ ├── demo.cc │ ├── insertPoint.cc │ ├── intrinsic-api.txt │ ├── intrinsics.cc │ ├── irtests.cc │ ├── link_intrinsics.cc │ ├── llvmoDwarf.cc │ ├── llvmoExpose.cc │ ├── llvmoPackage.cc │ ├── runtimeJit.cc │ └── simple.cc ├── main │ ├── cscript.lisp │ └── main.cc ├── mpip │ ├── .gitignore │ ├── claspMpi.cc │ └── cscript.lisp ├── profiler │ ├── callers │ ├── cleanup-stacks │ ├── code-weight │ │ ├── code-weight.asd │ │ ├── code-weight.lisp │ │ └── packages.lisp │ ├── collapse │ ├── count-calls │ ├── count-tips │ ├── do-dtrace │ ├── do-dtrace-allocation-number-counter │ ├── do-dtrace-allocation-size-counter │ ├── do-flame │ ├── do-flame-allocate │ ├── do-flame-interp │ ├── do-flame-invert │ ├── do-flame-throw │ ├── do-perf │ ├── do-perf-only │ ├── dot_sbclrc │ ├── dtrace-trigger │ ├── flame │ ├── invert │ ├── perf2dtrace │ ├── prune │ ├── prune-count │ ├── scripts │ │ ├── iosnoop │ │ ├── onefunc.d │ │ ├── profile_allocate │ │ ├── profile_interp │ │ ├── profile_throw │ │ ├── time_dynamic_cast.d │ │ └── trigger.d │ ├── split-ir.awk │ ├── stacks.lisp │ ├── strip-address.awk │ ├── symbolicate.lisp │ ├── test-profiler │ ├── time-isl │ └── trigger.d ├── scraper │ ├── clasp-scraper.asd │ ├── code-generator.lisp │ ├── coder.lisp │ ├── conditions.lisp │ ├── csubst.lisp │ ├── extract-tags.lisp │ ├── format.lisp │ ├── foundation.lisp │ ├── interpret-tags.lisp │ ├── packages.lisp │ ├── parse.lisp │ ├── scraper.lisp │ ├── sif-file.lisp │ ├── sourcepos.lisp │ ├── tags.lisp │ └── tests │ │ └── workbench.lisp ├── serveEvent │ ├── .gitignore │ ├── configure_symbol_scrape.py │ ├── cscript.lisp │ ├── serveEvent.cc │ └── serveEventPackage.cc ├── sockets │ ├── .gitignore │ ├── configure_symbol_scrape.py │ ├── cscript.lisp │ ├── sockets.cc │ └── socketsPackage.cc └── tests │ ├── clasp-ffi.tests.asd │ ├── cxx │ └── testR.cc │ └── fli │ ├── Makefile │ ├── bindings.lisp │ ├── defcfun.lisp │ ├── defpackage.lisp │ ├── execute-tests.lisp │ ├── funcall.lisp │ ├── libfsbv.c │ ├── libtest.c │ ├── libtest2.c │ ├── memory.lisp │ └── memtest.lisp ├── tools-for-build ├── ansi-test-expected-failures.sexp ├── arch-cando.sh ├── arch-clasp.sh ├── asdf-system-groveler.lisp ├── cando.sh ├── character-names.sexp ├── clasp.sh ├── cleavir-file-list.lisp ├── deb-cando.sh ├── deb-clasp.sh ├── encodingdata.txt ├── nightly-version-bump └── regenerate-cleavir-file-list.lisp ├── tools ├── analyzeLldbBacktrace.py ├── copywrite.lisp ├── debug-tools │ └── clasp.py ├── dot_lldbinit ├── gdb-tools │ ├── dot_gdbinit │ ├── pygdb-logg.gdb │ └── pygdb-logg.py ├── metering-allocations.lisp └── peakMemory.cc └── version.sexp /.clang-format: -------------------------------------------------------------------------------- 1 | --- 2 | Language: Cpp 3 | BasedOnStyle: LLVM 4 | ColumnLimit: 132 5 | SortIncludes: false 6 | DerivePointerAlignment: false 7 | PointerAlignment: Left 8 | WhitespaceSensitiveMacros: 9 | - CL_BEGIN_ENUM_TAG 10 | - CL_DECLARE 11 | - CL_DECLARE_TAG 12 | - CL_DEFMETHOD_TAG 13 | - CL_DEFMETHOD_TAG 14 | - CL_DEFUN_SETF_TAG 15 | - CL_DEFUN_TAG 16 | - CL_DEF_CLASS_METHOD_TAG 17 | - CL_DOCSTRING_LONG_TAG 18 | - CL_DOCSTRING_TAG 19 | - CL_END_ENUM_TAG 20 | - CL_EXPOSE_TAG 21 | - CL_EXTERN_DEFMETHOD_TAG 22 | - CL_EXTERN_DEFUN_TAG 23 | - CL_INITIALIZER_TAG 24 | - CL_LAMBDA 25 | - CL_LAMBDA_TAG 26 | - CL_LISPIFY_NAME 27 | - CL_LISPIFY_NAME_TAG 28 | - CL_METHOD_OVERLOAD_TAG 29 | - CL_NAME 30 | - CL_NAME_TAG 31 | - CL_PKG_NAME 32 | - CL_PKG_NAME_TAG 33 | - CL_PRE_GC_STARTUP_TAG 34 | - CL_PRIORITY_TAG 35 | - CL_TERMINATOR_TAG 36 | - CL_UNWIND_COOP_TAG 37 | - CL_VALUE_ENUM_TAG 38 | - DETAILED_SYMBOL_EXTERNAL 39 | - GC_MANAGED_TYPE 40 | - GC_MANAGED_TYPE_TAG 41 | - LISP_CLASS_TAG 42 | - LISP_EXTERNAL_CLASS_TAG 43 | - META_CLASS_TAG 44 | - NAMESPACE_PACKAGE_ASSOCIATION_TAG 45 | - PACKAGE_NICKNAME_TAG 46 | - PACKAGE_SHADOW_TAG 47 | - PACKAGE_USE_TAG 48 | - SYMBOL_EXTERNAL 49 | - SYMBOL_INTERN 50 | - SYMBOL_INTERNAL 51 | - SYMBOL_SHADOW_EXTERNAL 52 | ... 53 | -------------------------------------------------------------------------------- /.dir-locals.el: -------------------------------------------------------------------------------- 1 | ;;; Directory Local Variables 2 | ;;; For more information see (info "(emacs) Directory Variables") 3 | 4 | ((nil 5 | (compile-command . "ninja -C build") 6 | (indent-tabs-mode . nil) ; Make sure to disable smart-tabs-mode if you're using it. 7 | (whitespace-action . nil) 8 | (whitespace-style . '(face trailing empty tabs)) 9 | (c-basic-offset . 2) 10 | (c-auto-align-backslashes . nil) 11 | (c-file-offsets 12 | ( innamespace . 0 ) 13 | ( substatement-open . 0 ) 14 | ( c . c-lineup-dont-change ) 15 | ( inextern-lang . 0 ) 16 | ( comment-intro . c-lineup-dont-change ) 17 | ;; If this gets to be too much of a pain, switch to 18 | ;; c-lineup-dont-change and rely on clang-format 19 | ( arglist-cont-nonempty . c-lineup-arglist ) 20 | ( block-close . 0 ) 21 | ( statement-case-intro . ++ ) 22 | ( brace-list-intro . ++ ) 23 | ( cpp-define-intro . + )))) 24 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | GPATH 2 | GRTAGS 3 | GTAGS 4 | .waf*/ 5 | .svn/ 6 | *~ 7 | .#* 8 | *.log 9 | *.dSYM/ 10 | *.i 11 | *.a 12 | *.dylib 13 | \#*\# 14 | *.bundle 15 | *.out 16 | boost_build_v2/b2 17 | boost_build_v2/bjam 18 | wscript.config 19 | boost_build_v2/engine/bin.linuxx86_64 20 | boost_build_v2/engine/bootstrap 21 | build/* 22 | # ensure the clasp-build run artifact can be ADDed to clasp 23 | !build/clasp.tgz 24 | projects/ 25 | build2/ 26 | /.lock-waf_linux*_build 27 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | src/lisp/swank-loader-docker.lisp linguist-language=Common Lisp 2 | tools-for-build/cleavir-file-list.lisp linguist-language=Common Lisp -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/extension-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Extension request 3 | about: Suggest Clasp support a defined Lisp language extension 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | Briefly describe the extension, and where to get information on its definition. Include links to documentation and/or portability libraries for reference. 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "github-actions" 4 | directory: "/.github/workflows/" 5 | schedule: 6 | interval: "weekly" 7 | 8 | -------------------------------------------------------------------------------- /.github/workflows/docker.yml: -------------------------------------------------------------------------------- 1 | name: Docker 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: 7 | - docker 8 | schedule: 9 | - cron: '0 12 * * 1' 10 | 11 | jobs: 12 | build-and-push-image: 13 | runs-on: ubuntu-latest 14 | permissions: 15 | contents: read 16 | packages: write 17 | 18 | steps: 19 | - name: Checkout repository 20 | uses: actions/checkout@v4 21 | 22 | - name: Log in to the Container registry 23 | uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 24 | with: 25 | registry: ghcr.io 26 | username: ${{ github.actor }} 27 | password: ${{ secrets.GITHUB_TOKEN }} 28 | 29 | - name: Extract metadata (tags, labels) for Docker 30 | id: meta 31 | uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 32 | with: 33 | images: ghcr.io/clasp-developers/clasp 34 | tags: | 35 | type=raw,value=latest 36 | 37 | - name: Build and push Docker image 38 | uses: docker/build-push-action@14487ce63c7a62a4a324b0bfb37086795e31c6c1 39 | with: 40 | context: docker/clasp/ 41 | push: true 42 | tags: ${{ steps.meta.outputs.tags }} 43 | labels: ${{ steps.meta.outputs.labels }} 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | src/lisp/kernel/contrib/ 2 | src/lisp/modules/asdf/ 3 | src/mps/ 4 | src/bdwgc/ 5 | src/libatomic_ops/ 6 | src/schubfach/ 7 | GPATH 8 | GRTAGS 9 | GTAGS 10 | TAGS 11 | .lock-waf_darwin_build 12 | .waf*/ 13 | .svn/ 14 | .git/ 15 | *~ 16 | .#* 17 | *.log 18 | *.dSYM/ 19 | *.i 20 | *.a 21 | *.dylib 22 | \#*\# 23 | *.fasobc 24 | *.faspbc 25 | *.faspll 26 | *.fasoll 27 | *.fasl 28 | *.fasp 29 | *.faso 30 | *.ll 31 | *.dwarf 32 | *.info 33 | *.bundle 34 | *.out 35 | boost_build_v2/b2 36 | boost_build_v2/bjam 37 | wscript.config 38 | boost_build_v2/engine/bin.linuxx86_64 39 | boost_build_v2/engine/bootstrap 40 | /*build*/ 41 | projects/ 42 | local.config 43 | /.lock-waf_linux*_build 44 | local.config 45 | f0 46 | /dependencies/ 47 | config.sexp 48 | extensions/*/ 49 | .debhelper 50 | debhelper-build-stamp 51 | clasp.substvars 52 | debian/clasp 53 | debian/files 54 | gentoo/clasp 55 | src/lisp/regression-tests/*.txt 56 | src/lisp/regression-tests/*.bc 57 | src/lisp/regression-tests/*.newfasl 58 | src/analysis/*.lst 59 | src/analysis/*.cc 60 | bench/ 61 | repos-*.sexp 62 | *__pycache__* 63 | -------------------------------------------------------------------------------- /.identifiers: -------------------------------------------------------------------------------- 1 | CL_DEFMETHOD 2 | CL_DEFUN 3 | CL_LAMBDA+ 4 | DOCGROUP+ -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | All. | :white_check_mark: | 11 | 12 | 13 | ## Reporting a Vulnerability 14 | 15 | For security issues contact meister@temple.edu 16 | -------------------------------------------------------------------------------- /analyze: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | NINJA_OPTIONS="" 4 | 5 | for i in "$@"; do 6 | if [[ $i == --jobs=* ]]; then 7 | NINJA_OPTIONS="-j ${i#*=}" 8 | fi 9 | done 10 | 11 | ./koga --build-path=build-analysis --clean --no-extensions --no-jupyter "$@" 12 | ninja -C build-analysis $NINJA_OPTIONS analyze 13 | 14 | ./koga --build-path=build-analysis --clean --extensions=cando --no-jupyter "$@" 15 | ninja -C build-analysis $NINJA_OPTIONS analyze 16 | 17 | rm -rf build-analysis 18 | -------------------------------------------------------------------------------- /apptainer/build-cando-apptainer-arch: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # In the clasp toplevel directory use... 4 | # make -f apptainer/makefile 5 | # 6 | 7 | rm -rf build-apptainer/* 8 | tar --exclude-vcs -cvf systems.tar -C $HOME ./common-lisp 9 | apptainer build -F --bind $PWD:/mnt cando.sif apptainer/cando-arch.def 10 | -------------------------------------------------------------------------------- /apptainer/clasp.def: -------------------------------------------------------------------------------- 1 | BootStrap: docker 2 | From: ubuntu:lunar 3 | 4 | %post 5 | apt-get update 6 | apt-get upgrade -y 7 | apt-get install -y -o Dpkg::Options::="--force-overwrite" nano wget sudo git locales curl python3-pip nodejs npm binutils-gold clang-15 libclang-15-dev libfmt-dev libboost-dev libclang-cpp15-dev libelf-dev libgmp-dev libunwind-dev llvm-15 ninja-build sbcl pkg-config libnetcdf-dev libczmq-dev libexpat1-dev 8 | echo 'en_US.UTF-8 UTF-8' >/etc/locale.gen 9 | locale-gen 10 | cd /mnt 11 | ./koga --build-path=build-apptainer/ 12 | ninja -C build-apptainer 13 | ninja -C build-apptainer install 14 | 15 | %environment 16 | export CLASP_QUICKLISP_DIRECTORY=/home/cando/quicklisp/ 17 | -------------------------------------------------------------------------------- /apptainer/old-build-cando-apptainer: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # In the clasp toplevel directory use... 4 | # make -f apptainer/makefile 5 | # 6 | 7 | rm -rf build-apptainer/* 8 | tar --exclude-vcs -cvf systems.tar -C $HOME ./common-lisp ./work/spiros/data ./work/data ~/common-lisp/amber-protein/products/ 9 | apptainer build -F --bind $PWD:/mnt cando.sif apptainer/cando.def 10 | -------------------------------------------------------------------------------- /bin/debug: -------------------------------------------------------------------------------- 1 | 2 | # Run under the debugger 3 | #export CLASP_DEBUG_OBJECT_FILES=save 4 | #export CLASP_DEBUG_OBJECT_FILES=1 5 | #export CLASP_DEBUG_SNAPSHOT=1 6 | export CLASP_DEBUGGER_SUPPORT=1 7 | #export CLASP_ENABLE_TRAMPOLINES=1 8 | export CLASP_DONT_HANDLE_CRASH_SIGNALS=1 9 | #export CLASP_PAUSE_INIT=1 10 | export CLASP_PAUSE_STARTUP=1 11 | #export CLASP_PAUSE_OBJECTS_ADDED=1 12 | #export CLASP_PAUSE_EXIT=1 13 | 14 | printenv | grep CLASP_ 15 | 16 | $* 17 | -------------------------------------------------------------------------------- /bin/debug-snapshot: -------------------------------------------------------------------------------- 1 | 2 | # Run so that we can connect in a debugger 3 | # Pause once object files are all added because udb/gdb do that very slowly 4 | # 5 | 6 | 7 | #export CLASP_DEBUG_OBJECT_FILES=save 8 | #export CLASP_DEBUG_OBJECT_FILES=1 9 | #export CLASP_DEBUG_SNAPSHOT=1 10 | export CLASP_DEBUGGER_SUPPORT=1 11 | #export CLASP_ENABLE_TRAMPOLINES=1 12 | export CLASP_DONT_HANDLE_CRASH_SIGNALS=1 13 | #export CLASP_PAUSE_INIT=1 14 | #export CLASP_PAUSE_STARTUP=1 15 | export CLASP_PAUSE_OBJECTS_ADDED=1 16 | #export CLASP_PAUSE_EXIT=1 17 | 18 | printenv | grep CLASP_ 19 | 20 | $* 21 | -------------------------------------------------------------------------------- /bin/lldb-tty: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | lldb -p `cat /tmp/clasp_pid_$USER` 8 | -------------------------------------------------------------------------------- /bin/setenv: -------------------------------------------------------------------------------- 1 | 2 | # Run under the debugger 3 | export CLASP_DEBUG_SNAPSHOT=1 4 | export CLASP_DEBUGGER_SUPPORT=1 5 | export CLASP_DONT_HANDLE_CRASH_SIGNALS=1 6 | #export CLASP_PAUSE_INIT=1 7 | export CLASP_PAUSE_STARTUP=1 8 | #export CLASP_PAUSE_EXIT=1 9 | 10 | printenv | grep CLASP_ 11 | 12 | $* 13 | -------------------------------------------------------------------------------- /bin/sigusr1: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | kill -SIGUSR1 `cat /tmp/clasp_pid_$USER` 8 | -------------------------------------------------------------------------------- /bin/udb-tty: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | udb -p `cat /tmp/clasp_pid_$USER` --init-eval-command="set dir $CLASP_HOME/debugger-tools" 8 | -------------------------------------------------------------------------------- /bin/udb-tui: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | udb --tui -p `cat /tmp/clasp_pid_$USER` --init-eval-command="set dir $CLASP_HOME/debugger-tools" 8 | -------------------------------------------------------------------------------- /cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:recurse #P"include/" 2 | #P"src/") 3 | 4 | (k:includes #~"") 5 | 6 | (k:library "fmt" :required t :min-version "7.1.0") 7 | 8 | (k:library "gmpxx" :required t :min-version "6.0.0") 9 | 10 | #-darwin (k:library "libelf" :required t :min-version #+bsd "0.8.13" #-bsd ".183") 11 | -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | clasp-cl (2.7.0) bookworm jammy; urgency=medium 2 | 3 | * Initial release 4 | 5 | -- Tarn W. Burton Sun, 21 Nov 2021 20:58:28 +0000 6 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ 2 | Upstream-Name: clasp-cl 3 | Upstream-Contact: Christian E. Schafmeister 4 | Source: https://github.com/clasp-developers/clasp 5 | 6 | Files: * 7 | Copyright: 2014-2022 Christian E. Schafmeister 8 | License: GPL-2+ 9 | 10 | License: GPL-2+ 11 | This program is free software; you can redistribute it and/or modify 12 | it under the terms of the GNU General Public License as published by 13 | the Free Software Foundation; either version 2 of the License, or 14 | (at your option) any later version. 15 | . 16 | This program is distributed in the hope that it will be useful, 17 | but WITHOUT ANY WARRANTY; without even the implied warranty of 18 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 | GNU General Public License for more details. 20 | . 21 | You should have received a copy of the GNU General Public License along 22 | with this program; if not, write to the Free Software Foundation, Inc., 23 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 24 | . 25 | On Debian systems, the full text of the GNU General Public 26 | License version 2 can be found in the file 27 | '/usr/share/common-licenses/GPL-2'. 28 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /debian/source/options: -------------------------------------------------------------------------------- 1 | tar-ignore = waf 2 | tar-ignore = wscript* 3 | tar-ignore = build 4 | tar-ignore = extensions/* 5 | tar-ignore = dependencies 6 | tar-ignore = src/lisp/kernel/contrib/Acclimation 7 | tar-ignore = src/lisp/kernel/contrib/alexandria 8 | tar-ignore = src/lisp/kernel/contrib/Cleavir 9 | tar-ignore = src/lisp/kernel/contrib/closer-mop 10 | tar-ignore = src/lisp/kernel/contrib/Concrete-Syntax-Tree 11 | tar-ignore = src/lisp/kernel/contrib/Eclector 12 | tar-ignore = src/lisp/modules/asdf 13 | tar-ignore = src/mps 14 | tar-ignore = src/scrapper/dependencies 15 | tar-ignore = .git 16 | tar-ignore = .github 17 | tar-ignore = .gitignore 18 | tar-ignore = .lock-waf_linux_build 19 | tar-ignore = .waf3* 20 | -------------------------------------------------------------------------------- /debugger-tools/.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__* -------------------------------------------------------------------------------- /debugger-tools/dot-files/dot_gdbinit: -------------------------------------------------------------------------------- 1 | source -s -v debugger-tools/gdb-loader.py 2 | 3 | set pagination off 4 | 5 | #b core__gdb 6 | #b cl__error 7 | handle SIGPWR nostop noprint 8 | handle SIGXCPU nostop noprint 9 | handle SIGXFSZ nostop noprint 10 | handle SIGSEGV nostop noprint 11 | 12 | set python print-stack full 13 | 14 | 15 | #set complaints 100 16 | 17 | #set confirm off 18 | 19 | -------------------------------------------------------------------------------- /debugger-tools/dot-files/dot_udbinit: -------------------------------------------------------------------------------- 1 | source -s -v debugger-tools/gdb-loader.py 2 | 3 | set pagination off 4 | 5 | #b core__gdb 6 | #b cl__error 7 | handle SIGPWR nostop noprint 8 | handle SIGXCPU nostop noprint 9 | handle SIGXFSZ nostop noprint 10 | handle SIGSEGV nostop noprint 11 | 12 | set python print-stack full 13 | 14 | 15 | #set complaints 100 16 | 17 | #set confirm off 18 | 19 | -------------------------------------------------------------------------------- /debugger-tools/extend_lldb/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | import extend_lldb.print_function 3 | import extend_lldb.loadperf 4 | import extend_lldb.globals 5 | 6 | def do_lldb_init_module(debugger, internal_dict,prefix): 7 | prefix = "%s.extend_lldb" % prefix 8 | extend_lldb.print_function.do_lldb_init_module(debugger,internal_dict,prefix) 9 | extend_lldb.loadperf.do_lldb_init_module(debugger,internal_dict,prefix) 10 | extend_lldb.globals.do_lldb_init_module(debugger,internal_dict,prefix) 11 | 12 | -------------------------------------------------------------------------------- /debugger-tools/run/gdb-tty: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | gdb -p `cat /tmp/clasp_pid_$USER` --init-eval-command="set dir $CLASP_HOME/debugger-tools" 8 | -------------------------------------------------------------------------------- /debugger-tools/run/gdb-tui: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | gdb --tui -p `cat /tmp/clasp_pid_$USER` --init-eval-command="set dir $CLASP_HOME/debugger-tools" 8 | -------------------------------------------------------------------------------- /debugger-tools/run/lldb-tty: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | lldb -p `cat /tmp/clasp_pid_$USER` 8 | -------------------------------------------------------------------------------- /debugger-tools/run/setenv: -------------------------------------------------------------------------------- 1 | 2 | export CLASP_DEBUG_SNAPSHOT=1 3 | export CLASP_DEBUGGER_SUPPORT=1 4 | export CLASP_DONT_HANDLE_CRASH_SIGNALS=1 5 | #export CLASP_PAUSE_INIT=1 6 | export CLASP_PAUSE_STARTUP=1 7 | #export CLASP_PAUSE_EXIT=1 8 | 9 | printenv | grep CLASP_ 10 | 11 | -------------------------------------------------------------------------------- /debugger-tools/run/sigusr1: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | kill -SIGUSR1 `cat /tmp/clasp_pid_$USER` 8 | -------------------------------------------------------------------------------- /debugger-tools/run/udb-tty: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | udb -p `cat /tmp/clasp_pid_$USER` --init-eval-command="set dir $CLASP_HOME/debugger-tools" 8 | -------------------------------------------------------------------------------- /debugger-tools/run/udb-tui: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | 3 | export CLASP_HOME=${PWD%} 4 | 5 | echo CLASP_HOME = $CLASP_HOME 6 | 7 | udb --tui -p `cat /tmp/clasp_pid_$USER` --init-eval-command="set dir $CLASP_HOME/debugger-tools" 8 | -------------------------------------------------------------------------------- /debugger-tools/run/unsetenv: -------------------------------------------------------------------------------- 1 | 2 | unset CLASP_DEBUG_SNAPSHOT 3 | unset CLASP_DEBUGGER_SUPPORT 4 | unset CLASP_DONT_HANDLE_CRASH_SIGNALS 5 | unset CLASP_PAUSE_INIT 6 | unset CLASP_PAUSE_STARTUP 7 | unset CLASP_PAUSE_EXIT 8 | 9 | printenv | grep CLASP_ 10 | 11 | -------------------------------------------------------------------------------- /docker/clasp/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ghcr.io/yitzchak/archlinux-makepkg:latest 2 | 3 | RUN sudo pacman-key --init && \ 4 | sudo pacman -Syu --noconfirm sbcl 5 | 6 | RUN git clone https://aur.archlinux.org/clasp-cl.git && \ 7 | cd clasp-cl && \ 8 | makepkg --noconfirm --syncdeps --install --nocheck && \ 9 | cd .. && \ 10 | rm -rf clasp-cl 11 | 12 | USER root 13 | WORKDIR /root 14 | 15 | ENV XDG_CONFIG_HOME=/root/.config 16 | ENV XDG_DATA_HOME=/root/.local/share 17 | ENV XDG_CACHE_HOME=/root/.cache 18 | 19 | RUN curl -kLO https://beta.quicklisp.org/quicklisp.lisp && \ 20 | sbcl --non-interactive --load quicklisp.lisp --eval "(quicklisp-quickstart:install)" --eval "(ql-util:without-prompting (ql:add-to-init-file))" && \ 21 | clasp --non-interactive --load ~/quicklisp/setup.lisp --eval "(ql-util:without-prompting (ql:add-to-init-file))" && \ 22 | rm quicklisp.lisp 23 | 24 | -------------------------------------------------------------------------------- /docs/filterSrc: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | m4 filterSrc1.m4 $1 3 | -------------------------------------------------------------------------------- /docs/filterSrc.m4: -------------------------------------------------------------------------------- 1 | define(`__BEGIN_CLASS_DEFINITION', 2 | typedef boost::shared_ptr<$2> RP$3; 3 | typedef boost::weak_ptr<$2> WP$3; 4 | class $2 : public $4 { 5 | public: 6 | static boost::shared_ptr<$1> nil() { return rootClassManager().nilFromClassId<$1>($1::_classId()); }; 7 | virtual bool isNil() const { return this==$1::nil().get(); }; 8 | public: 9 | typedef $4 Base; 10 | typedef boost::shared_ptr<$2> shared_ptr; 11 | typedef boost::weak_ptr<$2> weak_ptr; 12 | public: 13 | static string _className() { return "$3";}; 14 | static string _baseClassName() { return $4::_className();}; 15 | static uint _classId() { return $2::___classId; }; 16 | static uint _baseClassId() { return $4::___classId; }; 17 | static void ___setClassId(uint i) { $2::___classId = i; }; 18 | static uint ___classId; 19 | ) 20 | 21 | define(`__END_CLASS_DEFINITION',}) 22 | -------------------------------------------------------------------------------- /docs/filterSrc1.m4: -------------------------------------------------------------------------------- 1 | define(CL_DOCSTRING, //! @brief $1) 2 | define(CL_DOCSTRING_LONG,` /** 3 | $1 4 | \n 5 | */') 6 | define(DOCGROUP, `//! @ingroup '$1) 7 | define(CL_LAMBDA, //! Lambda-list: ($1)) 8 | define(CL_LISPIFY_NAME, //! Lispify name: $1) 9 | define(CL_DEFUN,) 10 | define(R,$1) 11 | changequote(`"dx(',`)dx"') 12 | -------------------------------------------------------------------------------- /docs/sbcl-macros-to-learn.txt: -------------------------------------------------------------------------------- 1 | SBCL macros involved in optimization of generated code. 2 | declare-vop - virtual instruction set for sbcl 3 | defknown 4 | defoptimizer 5 | deftransform 6 | 7 | Read: arm-port-log-2.txt? 8 | This is nyef's log on porting sbcl to arm 9 | 10 | Read: SYS:SRC;COMPILER;ALIENCOMP.LISP 11 | There may be some ideas about merging the Clasp C++ function prototype type information with Common Lisp type inference. 12 | "Oh, you're doing an %ALIEN-FUNCALL. First, blow up if the type information is not available and constant. Second, here's the return type!" 13 | 14 | http://www.pvk.ca/Blog/2014/08/16/how-to-define-new-intrinsics-in-sbcl/ 15 | -------------------------------------------------------------------------------- /docs/userDocs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/docs/userDocs.pdf -------------------------------------------------------------------------------- /include/clasp/asttooling/asttooling_scrape_flag.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/include/clasp/asttooling/asttooling_scrape_flag.h -------------------------------------------------------------------------------- /include/clasp/asttooling/example.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: example.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | #include 31 | 32 | namespace asttooling {}; 33 | -------------------------------------------------------------------------------- /include/clasp/cffi-old/cffi.fwd.h: -------------------------------------------------------------------------------- 1 | /* 2 | File: cffi.fwd.h 3 | */ 4 | 5 | /* 6 | Copyright (c) 2014, Christian E. Schafmeister 7 | 8 | CLASP is free software; you can redistribute it and/or 9 | modify it under the terms of the GNU Library General Public 10 | License as published by the Free Software Foundation; either 11 | version 2 of the License, or (at your option) any later version. 12 | 13 | See directory 'clasp/licenses' for full details. 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | */ 26 | /* -^- */ 27 | #ifndef _cffi_fwd_H 28 | #define _cffi_fwd_H 29 | 30 | namespace cffi { 31 | FORWARD(Pointer); 32 | }; 33 | #endif // _cffi_fwd_H 34 | -------------------------------------------------------------------------------- /include/clasp/cffi-old/cffi_scrape_flag.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/include/clasp/cffi-old/cffi_scrape_flag.h -------------------------------------------------------------------------------- /include/clasp/clbind/allHeaders.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: allHeaders.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | #include 31 | #include 32 | #include 33 | -------------------------------------------------------------------------------- /include/clasp/clbind/cl_include.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: cl_include.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | #include 31 | #include 32 | -------------------------------------------------------------------------------- /include/clasp/clbind/clbind_scrape_flag.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/include/clasp/clbind/clbind_scrape_flag.h -------------------------------------------------------------------------------- /include/clasp/clbind/inheritance.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace clbind { 4 | namespace detail { 5 | 6 | typedef void* (*cast_function)(void*); 7 | 8 | class edge { 9 | public: 10 | edge(class_id target, cast_function cast) : target(target), cast(cast) {} 11 | edge(){}; 12 | class_id target; 13 | cast_function cast; 14 | }; 15 | 16 | inline bool operator<(edge const& x, edge const& y) { return x.target < y.target; } 17 | 18 | class vertex { 19 | public: 20 | vertex(class_id id) : id(id) {} 21 | 22 | class_id id; 23 | gctools::Vec0 edges; 24 | }; 25 | 26 | }; // namespace detail 27 | }; // namespace clbind 28 | -------------------------------------------------------------------------------- /include/clasp/core/backquote.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: backquote.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | 31 | namespace core { 32 | 33 | void initialize_backquote(); 34 | }; // namespace core 35 | -------------------------------------------------------------------------------- /include/clasp/core/bignum.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: bignum.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | 31 | FORWARD(Bignum); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/core/binder.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: binder.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(FormBinder); 30 | FORWARD(Binder); 31 | } // namespace core 32 | -------------------------------------------------------------------------------- /include/clasp/core/bits.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace core { 4 | 5 | typedef enum { 6 | boole_clr = 0, 7 | boole_and = 1, 8 | boole_andc2 = 2, 9 | boole_1 = 3, 10 | boole_andc1 = 4, 11 | boole_2 = 5, 12 | boole_xor = 6, 13 | boole_ior = 7, 14 | boole_nor = 8, 15 | boole_eqv = 9, 16 | boole_c2 = 10, 17 | boole_orc2 = 11, 18 | boole_c1 = 12, 19 | boole_orc1 = 13, 20 | boole_nand = 14, 21 | boole_set = 15 22 | } boole_ops; 23 | 24 | #define boolOpsMax 16 25 | 26 | void initialize_bits(); 27 | 28 | Integer_sp cl__logior(List_sp integers); 29 | Integer_sp core__logior_2op(Integer_sp, Integer_sp); 30 | Integer_sp cl__logand(List_sp integers); 31 | Integer_sp core__logand_2op(Integer_sp, Integer_sp); 32 | Integer_sp cl__logandc2(Integer_sp, Integer_sp); 33 | Integer_sp cl__lognot(Integer_sp); 34 | bool cl__logbitp(Integer_sp, Integer_sp); 35 | 36 | }; // namespace core 37 | -------------------------------------------------------------------------------- /include/clasp/core/clasp_ffi_package.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: clasp_ffiPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | PACKAGE_USE("COMMON-LISP"); 30 | NAMESPACE_PACKAGE_ASSOCIATION(clasp_ffi, Clasp_ffi_pkg, "CLASP-FFI") 31 | -------------------------------------------------------------------------------- /include/clasp/core/clasp_gmpxx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: clasp_gmpxx.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | /* Define a C++ GMP wrapper */ 30 | 31 | #include 32 | 33 | typedef mpz_class Bignum; 34 | -------------------------------------------------------------------------------- /include/clasp/core/cleavirEnvPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: cleavirEnvPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | NAMESPACE_PACKAGE_ASSOCIATION(cleavirEnv, CleavirEnvPkg, "CLEAVIR-ENVIRONMENT") 30 | 31 | SYMBOL_EXPORT_SC_(CleavirEnvPkg, macroFunction); 32 | SYMBOL_EXPORT_SC_(CleavirEnvPkg, symbolMacroExpansion); 33 | -------------------------------------------------------------------------------- /include/clasp/core/cleavirPrimopsPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: cleavirPrimopsPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | // PACKAGE_USE("COMMON-LISP"); 30 | NAMESPACE_PACKAGE_ASSOCIATION(cleavirPrimop, CleavirPrimopPkg, "CLEAVIR-PRIMOP") 31 | -------------------------------------------------------------------------------- /include/clasp/core/cleavirPrimopsPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: cleavirPrimopsPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace cleavirPrimop { 33 | 34 | void initialize_cleavirPrimopPackage(); 35 | }; 36 | -------------------------------------------------------------------------------- /include/clasp/core/closPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: closPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | PACKAGE_USE("COMMON-LISP"); 30 | NAMESPACE_PACKAGE_ASSOCIATION(clos, ClosPkg, "CLOS") 31 | -------------------------------------------------------------------------------- /include/clasp/core/closPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: closPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace clos { 33 | 34 | void initialize_closPackage(); 35 | }; 36 | -------------------------------------------------------------------------------- /include/clasp/core/common.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: common.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | #include 34 | -------------------------------------------------------------------------------- /include/clasp/core/commonLispPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: commonLispPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | PACKAGE_NICKNAME("CL"); 29 | NAMESPACE_PACKAGE_ASSOCIATION(cl, ClPkg, "COMMON-LISP") 30 | -------------------------------------------------------------------------------- /include/clasp/core/commonLispPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: commonLispPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace cl {}; 33 | -------------------------------------------------------------------------------- /include/clasp/core/commonLispUserPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: commonLispUserPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | PACKAGE_NICKNAME("CL-USER"); 30 | PACKAGE_USE("COMMON-LISP"); 31 | NAMESPACE_PACKAGE_ASSOCIATION(cluser, CommonLispUserPkg, "COMMON-LISP-USER") 32 | 33 | #define CLUserPkg CommonLispUserPkg 34 | -------------------------------------------------------------------------------- /include/clasp/core/commonLispUserPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: commonLispUserPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace cluser { 33 | 34 | void initialize_commonLispUserPackage(); 35 | }; 36 | -------------------------------------------------------------------------------- /include/clasp/core/compPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: compPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | PACKAGE_NICKNAME("CMP"); 30 | PACKAGE_USE("COMMON-LISP"); 31 | NAMESPACE_PACKAGE_ASSOCIATION(comp, CompPkg, "COMPILER") 32 | -------------------------------------------------------------------------------- /include/clasp/core/compPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: compPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace comp { 33 | 34 | void initialize_compPackage(); 35 | }; 36 | -------------------------------------------------------------------------------- /include/clasp/core/cons.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: cons.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(Cons); 30 | } 31 | -------------------------------------------------------------------------------- /include/clasp/core/corePackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: corePackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | PACKAGE_NICKNAME("SYS"); 30 | PACKAGE_NICKNAME("SYSTEM"); 31 | PACKAGE_NICKNAME("SI"); 32 | PACKAGE_USE("COMMON-LISP"); 33 | NAMESPACE_PACKAGE_ASSOCIATION(core, CorePkg, "CORE") 34 | -------------------------------------------------------------------------------- /include/clasp/core/core_globals.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: core_globals.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | extern "C" { 30 | extern core::LispPtr _lisp; 31 | }; 32 | -------------------------------------------------------------------------------- /include/clasp/core/debugger2.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | namespace core { 8 | 9 | T_mv early_debug(T_sp condition, bool can_continue); 10 | 11 | }; // namespace core 12 | -------------------------------------------------------------------------------- /include/clasp/core/documentation.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: documentation.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | 31 | namespace core { 32 | 33 | T_mv ext__annotate(T_sp object, T_sp key, T_sp sub_key, T_sp value); 34 | 35 | }; // namespace core 36 | -------------------------------------------------------------------------------- /include/clasp/core/eclector_readtable.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: eclector_readtable.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2019, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | NAMESPACE_PACKAGE_ASSOCIATION(eclector_readtable, EclectorReadtablePkg, "ECLECTOR.READTABLE") 30 | -------------------------------------------------------------------------------- /include/clasp/core/eclector_readtable.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: eclector_readtable.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2019, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | #include 31 | #include 32 | -------------------------------------------------------------------------------- /include/clasp/core/extensionPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: extensionPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | PACKAGE_USE("COMMON-LISP"); 30 | NAMESPACE_PACKAGE_ASSOCIATION(ext, ExtPkg, "EXT") 31 | -------------------------------------------------------------------------------- /include/clasp/core/extensionPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: extensionPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace ext {}; 33 | -------------------------------------------------------------------------------- /include/clasp/core/externalObject.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: externalObject.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | // FORWARD(ExternalObjectManager); -- frgo, 2016-08-09: Nowhere implemented... 30 | FORWARD(ExternalObject); 31 | } // namespace core 32 | -------------------------------------------------------------------------------- /include/clasp/core/fileSystem.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: fileSystem.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(Path); 30 | FORWARD(DirectoryIterator); 31 | FORWARD(RecursiveDirectoryIterator); 32 | FORWARD(DirectoryEntry); 33 | FORWARD(FileStatus); 34 | } // namespace core 35 | -------------------------------------------------------------------------------- /include/clasp/core/fli.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: fli.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace clasp_ffi { 30 | FORWARD(ForeignData); 31 | }; 32 | -------------------------------------------------------------------------------- /include/clasp/core/float_to_digits.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: float_to_digits.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace core { 33 | 34 | T_mv core__float_to_digits(T_sp tdigits, Float_sp number, T_sp position, T_sp relativep); 35 | 36 | }; 37 | -------------------------------------------------------------------------------- /include/clasp/core/float_to_string.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace core { 4 | T_sp core_float_to_string_free(Float_sp number, Number_sp e_min, Number_sp e_max); 5 | }; 6 | -------------------------------------------------------------------------------- /include/clasp/core/gcInterface.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: gcInterface.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #define GC_(x) x 30 | -------------------------------------------------------------------------------- /include/clasp/core/glue.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: glue.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(); 30 | } 31 | -------------------------------------------------------------------------------- /include/clasp/core/grayPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: grayPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | PACKAGE_USE("COMMON-LISP"); 30 | NAMESPACE_PACKAGE_ASSOCIATION(gray, GrayPkg, "GRAY") 31 | -------------------------------------------------------------------------------- /include/clasp/core/grayPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: grayPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace gray { 33 | 34 | void initialize_grayPackage(); 35 | }; 36 | -------------------------------------------------------------------------------- /include/clasp/core/hashTable.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: hashTable.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(HashTable); 30 | FORWARD(HashTableEq); 31 | FORWARD(HashTableEql); 32 | FORWARD(HashTableEqual); 33 | FORWARD(HashTableEqualp); 34 | } // namespace core 35 | -------------------------------------------------------------------------------- /include/clasp/core/instance.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: instance.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | 31 | FORWARD(Instance); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/core/iterator.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: iterator.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(Iterator); 30 | } 31 | -------------------------------------------------------------------------------- /include/clasp/core/keywordPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: keywordPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | NAMESPACE_PACKAGE_ASSOCIATION(kw, KeywordPkg, "KEYWORD") 30 | -------------------------------------------------------------------------------- /include/clasp/core/keywordPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: keywordPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | 32 | namespace kw { 33 | 34 | }; 35 | -------------------------------------------------------------------------------- /include/clasp/core/lambdaListHandler.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: lambdaListHandler.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core {}; 30 | -------------------------------------------------------------------------------- /include/clasp/core/lisp.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: lisp.fwd.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | -------------------------------------------------------------------------------- /include/clasp/core/loadTimeValues.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: loadTimeValues.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | FORWARD(LoadTimeValues); 31 | // FORWARD(MemoryLockedLoadTimeValuesPointer); 32 | }; // namespace core 33 | -------------------------------------------------------------------------------- /include/clasp/core/metaClass.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: metaClass.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | -------------------------------------------------------------------------------- /include/clasp/core/multipleValues.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: multipleValues.fwd.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | -------------------------------------------------------------------------------- /include/clasp/core/myReadLine.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: myReadLine.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | #include 29 | #include 30 | 31 | namespace core { 32 | string myReadLine(const string& prompt, bool& end_of_transmission); 33 | }; 34 | -------------------------------------------------------------------------------- /include/clasp/core/nativeVector.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | namespace core { 6 | FORWARD(NativeVector_int); 7 | }; 8 | -------------------------------------------------------------------------------- /include/clasp/core/numberToString.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: numberToString.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | namespace core { 31 | 32 | StrNs_sp core__integer_to_string(StrNs_sp buffer, Integer_sp integer, Fixnum_sp base, bool radix = false, bool decimalp = false); 33 | 34 | }; 35 | -------------------------------------------------------------------------------- /include/clasp/core/object.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: object.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | FORWARD(T); 31 | } 32 | -------------------------------------------------------------------------------- /include/clasp/core/package.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: package.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(Package); 30 | } 31 | -------------------------------------------------------------------------------- /include/clasp/core/pathname.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: pathname.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | FORWARD(Pathname); 31 | FORWARD(LogicalPathname); 32 | }; // namespace core 33 | -------------------------------------------------------------------------------- /include/clasp/core/pointer.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: pointer.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | 31 | namespace core { 32 | FORWARD(Pointer); 33 | }; 34 | -------------------------------------------------------------------------------- /include/clasp/core/primitives.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: primitives.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | 31 | T_sp cl__make_condition(T_sp datum, List_sp initializers); 32 | void af_error(T_sp datum, List_sp args); 33 | }; // namespace core 34 | -------------------------------------------------------------------------------- /include/clasp/core/reader.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: reader.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(Reader); 30 | } 31 | -------------------------------------------------------------------------------- /include/clasp/core/readtable.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: readtable.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | FORWARD(Readtable); 31 | }; 32 | -------------------------------------------------------------------------------- /include/clasp/core/seqPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: seqPackage.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2019, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | NAMESPACE_PACKAGE_ASSOCIATION(seqext, SequencePkg, "SEQUENCE") 30 | -------------------------------------------------------------------------------- /include/clasp/core/seqPackage.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: seqPackage.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2019, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #include 30 | #include 31 | -------------------------------------------------------------------------------- /include/clasp/core/singleDispatch.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: singleDispatch.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | -------------------------------------------------------------------------------- /include/clasp/core/singleDispatchGenericFunction.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: singleDispatchGenericFunction.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | FORWARD(SingleDispatchGenericFunction); 31 | }; 32 | -------------------------------------------------------------------------------- /include/clasp/core/singleDispatchMethod.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: singleDispatchMethod.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | namespace core { 30 | FORWARD(SingleDispatchMethod); 31 | }; 32 | -------------------------------------------------------------------------------- /include/clasp/core/stackmap.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | struct smHeader { 8 | uint8_t version; 9 | uint8_t reserved0; 10 | uint16_t reserved1; 11 | }; 12 | 13 | struct smStkSizeRecord { 14 | uint64_t FunctionAddress; 15 | int64_t StackSize; 16 | uint64_t RecordCount; 17 | }; 18 | 19 | struct smLocation { 20 | uint8_t Type; 21 | uint8_t Reserved0; 22 | uint16_t LocationSize; 23 | uint16_t DwarfRegNum; 24 | uint16_t Reserved1; 25 | int32_t OffsetOrSmallConstant; 26 | }; 27 | 28 | struct smLiveOut { 29 | uint16_t DwarfRegNum; 30 | uint8_t Reserved; 31 | uint8_t SizeInBytes; 32 | }; 33 | 34 | struct smStkMapRecord { 35 | uint64_t PatchPointID; 36 | uint32_t InstructionOffset; 37 | uint16_t Reserved; 38 | std::vector Locations; 39 | std::vector LiveOuts; 40 | }; 41 | 42 | /* Return true if the patchPointId corresponds to a register_save_area and 43 | mask out the arity_code into arity_code */ 44 | bool is_entry_point_arity(int64_t patchPointId, int64_t& arity_code); 45 | 46 | void walk_one_llvm_stackmap(std::function, uintptr_t&, uintptr_t); 47 | -------------------------------------------------------------------------------- /include/clasp/core/stacks.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: stacks.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | -------------------------------------------------------------------------------- /include/clasp/core/symbol.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: symbol.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(Symbol); 30 | } 31 | -------------------------------------------------------------------------------- /include/clasp/core/symbolTable.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: symbolTable.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | 29 | #ifndef SCRAPING 30 | #define EXTERN_ALL_SYMBOLS 31 | #include SYMBOLS_SCRAPED_INC_H 32 | #undef EXTERN_ALL_SYMBOLS 33 | #endif 34 | -------------------------------------------------------------------------------- /include/clasp/core/symbolToEnumConverter.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: symbolToEnumConverter.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(SymbolToEnumConverter); 30 | } 31 | -------------------------------------------------------------------------------- /include/clasp/core/symbolVector.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: symbolVector.fwd.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | namespace core { 29 | FORWARD(SymbolVector); 30 | FORWARD(SymbolVectorMap); 31 | } // namespace core 32 | -------------------------------------------------------------------------------- /include/clasp/core/unix.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | /* 3 | File: unix.h 4 | */ 5 | 6 | /* 7 | Copyright (c) 2014, Christian E. Schafmeister 8 | 9 | CLASP is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU Library General Public 11 | License as published by the Free Software Foundation; either 12 | version 2 of the License, or (at your option) any later version. 13 | 14 | See directory 'clasp/licenses' for full details. 15 | 16 | The above copyright notice and this permission notice shall be included in 17 | all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 25 | THE SOFTWARE. 26 | */ 27 | /* -^- */ 28 | -------------------------------------------------------------------------------- /include/clasp/external/PicoSHA2/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 okdshin 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /include/clasp/external/PicoSHA2/example/hasher.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "../picosha2.h" 3 | 4 | void CalcAndOutput(const std::string& src){ 5 | std::cout << "src : \"" << src << "\"\n"; 6 | std::cout << "hash: " << picosha2::hash256_hex_string(src) << "\n" << std::endl; 7 | } 8 | 9 | int main(int argc, char* argv[]) 10 | { 11 | if(argc == 1){ 12 | CalcAndOutput(""); 13 | } 14 | else{ 15 | for(int i = 1; i < argc; ++i){ 16 | CalcAndOutput(argv[i]); 17 | } 18 | } 19 | 20 | return 0; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /include/clasp/external/PicoSHA2/example/interactive_hasher.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include "../picosha2.h" 3 | 4 | int main(int argc, char* argv[]) 5 | { 6 | std::cout << "Input freely. To get hash, input \"hash!\". " << std::endl; 7 | picosha2::hash256_one_by_one hasher; 8 | while(true){ 9 | hasher.init(); //reset hasher state 10 | while(true){ 11 | std::string line; 12 | std::getline(std::cin, line); 13 | if(line == "hash!"){ 14 | break; 15 | } 16 | hasher.process(line.begin(), line.end()); 17 | } 18 | hasher.finish(); 19 | std::string hex_str; 20 | picosha2::get_hash_hex_string(hasher, hex_str); 21 | std::cout << hex_str << std::endl; 22 | } 23 | 24 | return 0; 25 | } 26 | 27 | -------------------------------------------------------------------------------- /include/clasp/external/hash-library/hash.h: -------------------------------------------------------------------------------- 1 | // ////////////////////////////////////////////////////////// 2 | // hash.h 3 | // Copyright (c) 2014,2015 Stephan Brumme. All rights reserved. 4 | // see http://create.stephan-brumme.com/disclaimer.html 5 | // 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | /// abstract base class 12 | class Hash 13 | { 14 | public: 15 | /// compute hash of a memory block 16 | virtual std::string operator()(const void* data, size_t numBytes) = 0; 17 | /// compute hash of a string, excluding final zero 18 | virtual std::string operator()(const std::string& text) = 0; 19 | 20 | /// add arbitrary number of bytes 21 | virtual void add(const void* data, size_t numBytes) = 0; 22 | 23 | /// return latest hash as hex characters 24 | virtual std::string getHash() = 0; 25 | 26 | /// restart 27 | virtual void reset() = 0; 28 | }; 29 | -------------------------------------------------------------------------------- /include/clasp/gctools/gcFunctions.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace gctools { 4 | core::T_sp core__instance_stamp(core::T_sp obj); 5 | }; 6 | 7 | namespace gctools { 8 | /*! Return true if any debugging flags are set and a description of all debugging flag 9 | settings in string stream */ 10 | bool debugging_configuration(bool setFeatures, bool buildReport, stringstream& ss); 11 | 12 | void gctools__garbage_collect(); 13 | 14 | void initialize_gc_functions(); 15 | 16 | core::T_mv gctools__ensure_valid_object(core::T_mv obj); 17 | 18 | void cl__room(core::Symbol_sp x); 19 | 20 | bool memory_test(); 21 | 22 | }; // namespace gctools 23 | -------------------------------------------------------------------------------- /include/clasp/gctools/gctoolsPackage.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: gctoolsPackage.fwd.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | PACKAGE_USE("COMMON-LISP"); 30 | NAMESPACE_PACKAGE_ASSOCIATION(gctools, GcToolsPkg, "GCTOOLS") 31 | -------------------------------------------------------------------------------- /include/clasp/gctools/gctools_scrape_flag.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/include/clasp/gctools/gctools_scrape_flag.h -------------------------------------------------------------------------------- /include/clasp/gctools/generated/.gitignore: -------------------------------------------------------------------------------- 1 | symbols_scraped_inc.h -------------------------------------------------------------------------------- /include/clasp/gctools/interrupt.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace gctools { 4 | 5 | template void handle_all_queued_interrupts(); 6 | 7 | template <> 8 | inline void handle_all_queued_interrupts(){ 9 | // Do nothing 10 | }; 11 | 12 | void initialize_signals(); 13 | 14 | // Use the following mechanism to pause clasp 15 | #define USE_USER_SIGNAL 1 16 | extern bool global_user_signal; 17 | void wait_for_user_signal(const char* message); 18 | void setup_user_signal(); 19 | 20 | }; // namespace gctools 21 | -------------------------------------------------------------------------------- /include/clasp/gctools/mmtkGarbageCollection.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: mmtkGarbageCollection.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | namespace gctools { 31 | 32 | int initializeMmtk(int argc, char* argv[], bool mpiEnabled, int mpiRank, int mpiSize); 33 | 34 | }; // namespace gctools 35 | -------------------------------------------------------------------------------- /include/clasp/gctools/source_info.h: -------------------------------------------------------------------------------- 1 | 2 | 3 | void initialize_source_info(); 4 | -------------------------------------------------------------------------------- /include/clasp/gctools/threadLocalStacks.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | // #include 5 | namespace core { 6 | struct BignumExportBuffer { 7 | BignumExportBuffer() : buffer(NULL), bufferSize(0){}; 8 | ~BignumExportBuffer() { 9 | if (this->buffer) 10 | free(this->buffer); 11 | }; 12 | unsigned int* buffer = NULL; 13 | size_t bufferSize = 0; 14 | unsigned int* getOrAllocate(const mpz_class& bignum, int nail); 15 | }; 16 | 17 | #pragma GCC visibility push(default) 18 | class DynamicBindingStack { 19 | public: 20 | DynamicBindingStack() 21 | : _ThreadLocalBindings(true) // don't allocate GC memory ctor 22 | {}; // 23 | public: 24 | mutable gctools::Vec0 _ThreadLocalBindings; 25 | 26 | public: 27 | size_t new_binding_index() const; 28 | void release_binding_index(size_t index) const; 29 | // Access 30 | T_sp thread_local_value(uint32_t index) const; 31 | void set_thread_local_value(T_sp, uint32_t); 32 | bool thread_local_boundp(uint32_t index) const; 33 | 34 | public: 35 | T_sp* thread_local_reference(const uint32_t) const; 36 | }; 37 | #pragma GCC visibility pop 38 | 39 | }; // namespace core 40 | -------------------------------------------------------------------------------- /include/clasp/llvmo/claspLinkPass.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: claspLinkPass.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | namespace llvmo { 30 | 31 | void initialize_claspLinkPass(); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/llvmo/clbindLlvmExpose.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: clbindLlvmExpose.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | namespace llvmo { 30 | 31 | void initialize_clbind_llvm_expose(); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/llvmo/debugLoc.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: debugLoc.fwd.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | namespace llvmo { 31 | FORWARD(DebugLoc); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/llvmo/insertPoint.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: insertPoint.fwd.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | namespace llvmo { 31 | FORWARD(InsertPoint); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/llvmo/intrinsics.fwd.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: intrinsics.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | extern "C" { 31 | NOINLINE void cc_wrong_number_of_arguments(core::T_O* tfunction, std::size_t nargs, std::size_t min, std::size_t max); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/llvmo/llvmoDwarf.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: llvmoDwarf.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | namespace llvmo { 31 | 32 | void initialize_dwarf_constants(); 33 | }; 34 | -------------------------------------------------------------------------------- /include/clasp/llvmo/llvmo_scrape_flag.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/include/clasp/llvmo/llvmo_scrape_flag.h -------------------------------------------------------------------------------- /include/clasp/llvmo/metaClass.h: -------------------------------------------------------------------------------- 1 | /* 2 | File: metaClass.h 3 | */ 4 | 5 | /* 6 | Copyright (c) 2014, Christian E. Schafmeister 7 | 8 | CLASP is free software; you can redistribute it and/or 9 | modify it under the terms of the GNU Library General Public 10 | License as published by the Free Software Foundation; either 11 | version 2 of the License, or (at your option) any later version. 12 | 13 | See directory 'clasp/licenses' for full details. 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | */ 26 | /* -^- */ 27 | 0 28 | -------------------------------------------------------------------------------- /include/clasp/serveEvent/serveEvent.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: serveEvent.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | 30 | namespace serveEvent { 31 | 32 | void initialize_serveEvent_globals(); 33 | }; 34 | -------------------------------------------------------------------------------- /include/clasp/serveEvent/serveEvent_scrape_flag.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/include/clasp/serveEvent/serveEvent_scrape_flag.h -------------------------------------------------------------------------------- /include/clasp/sockets/allHeaders.h: -------------------------------------------------------------------------------- 1 | /* 2 | File: allHeaders.h 3 | */ 4 | 5 | /* 6 | Copyright (c) 2014, Christian E. Schafmeister 7 | 8 | CLASP is free software; you can redistribute it and/or 9 | modify it under the terms of the GNU Library General Public 10 | License as published by the Free Software Foundation; either 11 | version 2 of the License, or (at your option) any later version. 12 | 13 | See directory 'clasp/licenses' for full details. 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | */ 26 | /* -^- */ 27 | #include 28 | #include 29 | #include 30 | -------------------------------------------------------------------------------- /include/clasp/sockets/sockets.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | /* 4 | File: sockets.h 5 | */ 6 | 7 | /* 8 | Copyright (c) 2014, Christian E. Schafmeister 9 | 10 | CLASP is free software; you can redistribute it and/or 11 | modify it under the terms of the GNU Library General Public 12 | License as published by the Free Software Foundation; either 13 | version 2 of the License, or (at your option) any later version. 14 | 15 | See directory 'clasp/licenses' for full details. 16 | 17 | The above copyright notice and this permission notice shall be included in 18 | all copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 26 | THE SOFTWARE. 27 | */ 28 | /* -^- */ 29 | namespace sockets { 30 | 31 | void initialize_sockets_globals(); 32 | }; 33 | -------------------------------------------------------------------------------- /include/clasp/sockets/sockets_scrape_flag.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/include/clasp/sockets/sockets_scrape_flag.h -------------------------------------------------------------------------------- /include/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:includes #~"") 2 | 3 | (k:sources :install-code 4 | #~"clasp/asttooling/" 5 | #~"clasp/cffi-old/" 6 | #~"clasp/clbind/" 7 | #~"clasp/cffi-old/" 8 | #~"clasp/core/" 9 | #~"clasp/external/" 10 | #~"clasp/gctools/" 11 | #~"clasp/llvmo/" 12 | #~"clasp/mpip/" 13 | #~"clasp/serveEvent/" 14 | #~"clasp/sockets/" 15 | #~"clasp/clasp.h") 16 | 17 | (k:sources :gtags 18 | #~"clasp/asttooling/" 19 | #~"clasp/cffi-old/" 20 | #~"clasp/clbind/" 21 | #~"clasp/cffi-old/" 22 | #~"clasp/core/" 23 | #~"clasp/external/" 24 | #~"clasp/gctools/" 25 | #~"clasp/llvmo/" 26 | #~"clasp/mpip/" 27 | #~"clasp/serveEvent/" 28 | #~"clasp/sockets/" 29 | #~"clasp/clasp.h") 30 | -------------------------------------------------------------------------------- /src/analysis/cscript.lisp: -------------------------------------------------------------------------------- 1 | (if (member :cando k:*extensions*) 2 | (k:sources :libclasp #~"clasp_gc_cando.sif") 3 | (k:sources :libclasp #~"clasp_gc.sif")) 4 | -------------------------------------------------------------------------------- /src/asttooling/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ -------------------------------------------------------------------------------- /src/asttooling/configure_symbol_scrape.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | packageName = "AstToolingPkg" 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/asttooling/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:sources :libclasp 2 | #~"astExpose0.cc" 3 | #~"astExpose1.cc" 4 | #~"clangTooling.cc" 5 | #~"asttoolingPackage.cc" 6 | #~"clangCompiler.cc") 7 | -------------------------------------------------------------------------------- /src/clbind/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | -------------------------------------------------------------------------------- /src/clbind/clbind.cc: -------------------------------------------------------------------------------- 1 | /* 2 | File: clbind.cc 3 | */ 4 | 5 | /* 6 | Copyright (c) 2014, Christian E. Schafmeister 7 | 8 | CLASP is free software; you can redistribute it and/or 9 | modify it under the terms of the GNU Library General Public 10 | License as published by the Free Software Foundation; either 11 | version 2 of the License, or (at your option) any later version. 12 | 13 | See directory 'clasp/licenses' for full details. 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | */ 26 | /* -^- */ 27 | 28 | #include 29 | #include 30 | #include 31 | #include 32 | #include 33 | -------------------------------------------------------------------------------- /src/clbind/configure_symbol_scrape.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | packageName = "ClbindPkg" 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/clbind/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:sources :libclasp 2 | #~"adapter.cc" 3 | #~"class_rep.cc" 4 | #~"open.cc" 5 | #~"class_registry.cc" 6 | #~"link_compatibility.cc" 7 | #~"scope.cc" 8 | #~"inheritance.cc" 9 | #~"clbind.cc" 10 | #~"clbindPackage.cc" 11 | #~"class.cc" 12 | #~"derivable_class.cc") 13 | -------------------------------------------------------------------------------- /src/core/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | logfile 3 | -------------------------------------------------------------------------------- /src/core/activationFrame.cc: -------------------------------------------------------------------------------- 1 | /* 2 | */ 3 | 4 | /* 5 | Copyright (c) 2014, Christian E. Schafmeister 6 | 7 | CLASP is free software; you can redistribute it and/or 8 | modify it under the terms of the GNU Library General Public 9 | License as published by the Free Software Foundation; either 10 | version 2 of the License, or (at your option) any later version. 11 | 12 | See directory 'clasp/licenses' for full details. 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | */ 25 | /* -^- */ 26 | 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | -------------------------------------------------------------------------------- /src/core/candoMpiDisabled.cc: -------------------------------------------------------------------------------- 1 | /* 2 | File: candoMpiDisabled.cc 3 | */ 4 | 5 | /* 6 | Copyright (c) 2014, Christian E. Schafmeister 7 | 8 | CLASP is free software; you can redistribute it and/or 9 | modify it under the terms of the GNU Library General Public 10 | License as published by the Free Software Foundation; either 11 | version 2 of the License, or (at your option) any later version. 12 | 13 | See directory 'clasp/licenses' for full details. 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | */ 26 | /* -^- */ 27 | 28 | #undef USE_MPI 29 | #include 30 | -------------------------------------------------------------------------------- /src/core/configure_symbol_scrape.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | packageName = "CorePkg" 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/core/dense_specialized_array_dispatch.cc: -------------------------------------------------------------------------------- 1 | #ifdef CODING 2 | unsigned char coding[] = "@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$"; 3 | #endif 4 | #ifdef DISPATCHES 5 | DISPATCH(float, float, "sf"); 6 | DISPATCH(double, double, "df"); 7 | DISPATCH(byte8_t, byte8_t, "b1"); 8 | DISPATCH(int8_t, int8_t, "i1"); 9 | DISPATCH(byte16_t, byte16_t, "b2"); 10 | DISPATCH(int16_t, int16_t, "i2"); 11 | DISPATCH(byte32_t, byte32_t, "b4"); 12 | DISPATCH(int32_t, int32_t, "i4"); 13 | DISPATCH(byte64_t, byte64_t, "b8"); 14 | DISPATCH(int64_t, int64_t, "i8"); 15 | DISPATCH(size_t, size_t, "st"); 16 | DISPATCH(fixnum, Fixnum, "fn"); 17 | #endif 18 | -------------------------------------------------------------------------------- /src/core/dummy.cc: -------------------------------------------------------------------------------- 1 | /* This is a dummy .cc file */ 2 | -------------------------------------------------------------------------------- /src/core/nativeVector.cc: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | // This is header only code at the moment 6 | -------------------------------------------------------------------------------- /src/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:includes #~"bdwgc/" 2 | #~"bdwgc/include/" 3 | #~"libatomic_ops/src/") 4 | 5 | (k:recurse #P"analysis/" 6 | #P"gctools/" 7 | #P"clbind/" 8 | #P"serveEvent/" 9 | #P"sockets/" 10 | #P"llvmo/" 11 | #P"mpip/" 12 | #P"asttooling/" 13 | #P"main/" 14 | #P"core/" 15 | #P"lisp/") 16 | 17 | (k:sources :scraper 18 | #@"clasp_gc.cc" 19 | ;#@"cl-wrappers.lisp" 20 | #@"c-wrappers.h" 21 | #@"enum_inc.h" 22 | #@"expose_inc.h" 23 | #@"header_includes_inc.h" 24 | #@"init_classes_inc.h" 25 | #@"init_functions_inc.h" 26 | #@"initializers_inc.h" 27 | #@"pre_gc_startup_inc.h" 28 | #@"rename-methods.sexp" 29 | #@"source_info_inc.h" 30 | #@"symbols_scraped_inc.h" 31 | #@"terminators_inc.h") 32 | 33 | (k:sources :install-code 34 | #~"bdwgc/include/" 35 | #~"schubfach/") 36 | -------------------------------------------------------------------------------- /src/fork-server/makefile: -------------------------------------------------------------------------------- 1 | 2 | fork-client: fork-client.c 3 | clang -o ../../build/fork-client -g fork-client.c -lreadline 4 | -------------------------------------------------------------------------------- /src/fork-server/start-fork-server-icando-boehm.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | exec ../../build/boehm/icando-boehm -f no-auto-lparallel -f cando-jupyter -e "(ql:quickload :cando-jupyter)" -e "(cando-user:jupyterlab-fork-server \"/tmp/clasp-fork-server/\")" 3 | -------------------------------------------------------------------------------- /src/fork-server/start-fork-server-icando-mps.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | exec ../../build/mps/icando-mps -f no-auto-lparallel -f cando-jupyter -e "(ql:quickload :cando-jupyter)" -e "(cando-user:jupyterlab-fork-server \"/tmp/clasp-fork-server/\")" 3 | -------------------------------------------------------------------------------- /src/gctools/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | -------------------------------------------------------------------------------- /src/gctools/configure_symbol_scrape.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | packageName = "ClangSysPkg" 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/gctools/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:sources :libclasp 2 | #~"gc_interface.cc" 3 | #~"exposeFunctions0.cc" 4 | #~"exposeFunctions1.cc" 5 | #~"exposeFunctions2.cc" 6 | #~"exposeFunctions3.cc" 7 | #~"exposeClasses0.cc" 8 | #~"exposeClasses1.cc" 9 | #~"exposeClasses2.cc" 10 | #~"exposeClasses3.cc" 11 | #~"boehmGarbageCollection.cc" 12 | #~"mmtkGarbageCollection.cc" 13 | #~"hardErrors.cc" 14 | #~"source_info.cc" 15 | #~"threadlocal.cc" 16 | #~"gc_boot.cc" 17 | #~"interrupt.cc" 18 | #~"park.cc" 19 | #~"gcFunctions.cc" 20 | #~"snapshotSaveLoad.cc" 21 | #~"gctoolsPackage.cc" 22 | #~"globals.cc" 23 | #~"gcStack.cc" 24 | #~"gcalloc.cc" 25 | #~"gcweak.cc" 26 | #~"memoryManagement.cc" 27 | #~"startRunStop.cc" 28 | #~"mygc.c") 29 | -------------------------------------------------------------------------------- /src/gctools/mygc.c: -------------------------------------------------------------------------------- 1 | // Don't do static analysis on the garbage collector code 2 | #ifndef RUNNING_GC_BUILDER 3 | #include 4 | #include 5 | 6 | #ifdef USE_BOEHM 7 | // Configure Boehm GC 8 | #include "clasp/gctools/boehm_config.h" 9 | #include "extra/gc.c" 10 | #endif 11 | 12 | #endif // #ifndef RUNNING_GC_BUILDER 13 | -------------------------------------------------------------------------------- /src/gctools/park.cc: -------------------------------------------------------------------------------- 1 | #include // bunch of transitive includes FIXME 2 | #include // my_thread 3 | #include // handle_all_queued_interrupts 4 | 5 | namespace gctools { 6 | 7 | void begin_park() { 8 | handle_all_queued_interrupts(); 9 | my_thread->set_blockingp(true); 10 | } 11 | 12 | void end_park() { 13 | my_thread->set_blockingp(false); 14 | } 15 | 16 | }; // namespace gctools 17 | -------------------------------------------------------------------------------- /src/koga/header.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:koga) 2 | 3 | (defun write-ifndef (output-stream name) 4 | "Write a C ifndef preprocessor instruction." 5 | (format output-stream "#ifndef ~a~%" name)) 6 | 7 | (defun write-endif (output-stream) 8 | "Write a C endif preprocessor instruction." 9 | (write-line "#endif" output-stream)) 10 | 11 | (defun write-defines (output-stream &rest rest) 12 | "Write a C define preprocessor instructions from a plist. Values that are NIL 13 | will be skipped. Values that are eq to T will defined with no value. Symbol values 14 | will be serialized without quotes. All other values will be serialized using 15 | WRITE-TO-STRING." 16 | (loop for (name value) on rest by #'cddr 17 | when value 18 | do (format output-stream "#define ~a~@[ ~a~]~%" 19 | name (cond ((eq t value) 20 | nil) 21 | ((symbolp value) 22 | value) 23 | (t 24 | (write-to-string value)))))) 25 | 26 | -------------------------------------------------------------------------------- /src/koga/koga.asd: -------------------------------------------------------------------------------- 1 | (asdf:defsystem "koga" 2 | :description "A lisp based metabuilder for Clasp." 3 | :depends-on ("alexandria" 4 | "asdf-groveler" 5 | "clasp-scraper" 6 | "closer-mop" 7 | "ninja" 8 | "shasht" 9 | "trivial-features" 10 | "split-sequence") 11 | :serial t 12 | :components ((:file "packages") 13 | (:file "utilities") 14 | (:file "header") 15 | (:file "source") 16 | (:file "configure") 17 | (:file "setup") 18 | (:file "help") 19 | (:file "target-sources") 20 | (:file "units") 21 | (:file "scripts") 22 | (:file "config-header") 23 | (:file "ninja") 24 | (:file "compile-commands") 25 | (:file "archive"))) 26 | -------------------------------------------------------------------------------- /src/koga/packages.lisp: -------------------------------------------------------------------------------- 1 | (defpackage #:koga 2 | (:use #:common-lisp) 3 | (:nicknames #:k) 4 | (:documentation "A lisp based metabuilder for Clasp.") 5 | (:export #:archive 6 | #:configure 7 | #:*extensions* 8 | #:framework 9 | #:help 10 | #:includes 11 | #:defines 12 | #:library 13 | #:make-source 14 | #:make-source-output 15 | #:recurse 16 | #:source-path 17 | #:sources 18 | #:systems)) 19 | 20 | -------------------------------------------------------------------------------- /src/lisp/.gitignore: -------------------------------------------------------------------------------- 1 | build/ -------------------------------------------------------------------------------- /src/lisp/clasp-asdf-registry.conf: -------------------------------------------------------------------------------- 1 | (:source-registry 2 | (:inherit-configuration) 3 | (:tree :here) 4 | ) 5 | -------------------------------------------------------------------------------- /src/lisp/compile-commands.lisp: -------------------------------------------------------------------------------- 1 | 2 | (defstruct compile-project 3 | file-name 4 | recognize-compile-command 5 | ) 6 | 7 | (defun extract-dir-command-file (line) 8 | (let ((parts (with-input-from-string (sin line) 9 | (read sin)))) 10 | (break "check parts") 11 | parts)) 12 | 13 | (defparameter *c* (make-compile-project :file-name "bjam.out" 14 | :recognize-compile-command "^\\s*\"clang[+][+]\".*\\s-c\\s.*" 15 | ) 16 | ) 17 | 18 | 19 | 20 | (defun compile-project-load (proj) 21 | (let* ((regex (make-regex (compile-project-recognize-compile-command proj)))) 22 | (with-open-file (stream (compile-project-file-name proj) :direction :input) 23 | (loop for line = (read-line stream nil 'done) 24 | until (eq line 'done) 25 | do (when (regex-matches regex line) 26 | (let ((match (regex-match regex line))) 27 | (multiple-value-bind (dir command file) 28 | (extract-dir-command-file line) 29 | (format t "directory: ~a~%" dir) 30 | (format t "command: ~a~%" command) 31 | (format t "file: ~a~%" file) 32 | ) 33 | )) 34 | )) 35 | ) 36 | ) 37 | 38 | -------------------------------------------------------------------------------- /src/lisp/generated/.gitignore: -------------------------------------------------------------------------------- 1 | *.lisp -------------------------------------------------------------------------------- /src/lisp/generated/clasp/.gitignore: -------------------------------------------------------------------------------- 1 | cl-wrappers.lisp -------------------------------------------------------------------------------- /src/lisp/kernel/cleavir/blir.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:cc-blir) 2 | 3 | ;;; Low-level instructions, working directly on memory, etc. 4 | 5 | (defclass memref2 (bir:one-input bir:one-output bir:instruction) 6 | ((%offset :initarg :offset :reader offset :type integer))) 7 | 8 | (defclass load (cc-bir:atomic bir:one-input bir:one-output bir:instruction) 9 | ()) 10 | 11 | (defclass store (cc-bir:atomic bir:no-output bir:instruction) 12 | ()) 13 | 14 | (defclass cas (cc-bir:atomic bir:one-output bir:instruction) 15 | ()) 16 | -------------------------------------------------------------------------------- /src/lisp/kernel/cleavir/bytecode-adaptor.lisp: -------------------------------------------------------------------------------- 1 | (in-package :core) 2 | 3 | #+(or) 4 | (eval-when (:execute) 5 | (format t "Setting core:*echo-repl-read* to T~%") 6 | (setq core:*echo-repl-read* t)) 7 | 8 | (eval-when (:execute :load-toplevel) 9 | 10 | 11 | ;;; Wipe out macros we can't have for cleavir 12 | 13 | (fmakunbound 'cleavir-primop:car) 14 | (fmakunbound 'cleavir-primop:cdr) 15 | ;;; (fmakunbound 'core::header-stamp-case) 16 | ) 17 | 18 | ;;; -------------------------------------------------- 19 | ;;; 20 | ;;; Compile the builtin function wrappers 21 | ;;; 22 | ;;; 23 | 24 | (defun compile-wrappers () 25 | (dolist (name sys:*builtin-function-names*) 26 | (setf (fdefinition name) (compile nil (fdefinition name))))) 27 | 28 | #-(and) 29 | (eval-when (:compile-toplevel :execute) 30 | (compile-wrappers)) 31 | -------------------------------------------------------------------------------- /src/lisp/kernel/cleavir/questions.txt: -------------------------------------------------------------------------------- 1 | How does the debugging mixin work? 2 | 3 | How does the multiple values work - what should I do with registers vs multiple-values in memory? 4 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/fastgf.lisp: -------------------------------------------------------------------------------- 1 | (in-package :clos) 2 | (defvar *core-clos-generic-functions* (all-generic-functions)) 3 | ;;(defvar *core-classes* ) 4 | #|(defun calculate-core-classes () 5 | (let ((all-classes (clos::subclasses* (find-class t))) 6 | core-classes) 7 | (loop for class in all-classes 8 | |# 9 | (print *package*) 10 | ;;(format t "There are ~a *core-classes*~&" (length *core-classes*)) 11 | (format t "There are ~a *core-clos-generic-functions*~&" (length *core-clos-generic-functions*)) 12 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/outcome.lisp: -------------------------------------------------------------------------------- 1 | (in-package "CLOS") 2 | 3 | ;;; An "outcome" is a potential "outcome" of a generic function call. 4 | ;;; Basically, an outcome represents an effective method function, 5 | ;;; only it's simpler in many cases. 6 | 7 | ;;; Outcomes 8 | 9 | (defstruct (outcome (:type vector) :named) methods) 10 | (defstruct (optimized-slot-reader (:type vector) (:include outcome) :named) 11 | index slot-name class) 12 | (defstruct (optimized-slot-writer (:type vector) (:include outcome) :named) 13 | index slot-name class) 14 | (defstruct (effective-method-outcome (:type vector) (:include outcome) :named) 15 | (form nil) (function nil)) 16 | 17 | (defun outcome= (outcome1 outcome2) 18 | (eq outcome1 outcome2)) ; thanks, caching! (in find-existing-outcome) 19 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/static-gfs/cell.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:static-gfs) 2 | 3 | (defclass constructor-cell () 4 | ((name :accessor cell-name) (keys :accessor cell-keys)) 5 | (:metaclass clos:funcallable-standard-class)) 6 | 7 | ;;; Note: no reader. 8 | ;;; we use a setf function because this was used earlier in constructor.lisp 9 | ;;; when a setf expansion here would have been unavailable. 10 | (defun (setf cell-function) (function cell) 11 | (clos:set-funcallable-instance-function cell function) 12 | function) 13 | 14 | (defun make-constructor-cell (name keys &optional (function nil functionp)) 15 | ;; Avoid make-instance, as it would cause circularity issues. 16 | ;; We could just apply #'make-instance, but let's be a bit quicker about it. 17 | ;; SBCL uses "defstruct-with-alternate-metaclass" or something to make a kind 18 | ;; of funcallable struct, which is interesting but a bit beyond our capabilities... 19 | ;; and this should have the same effect, plus we get to use clos for the accessors. 20 | ;; (The only access in the fast path is calling the thing, anyway.) 21 | (let ((instance (allocate-instance (find-class 'constructor-cell)))) 22 | (setf (cell-name instance) name) 23 | (setf (cell-keys instance) keys) 24 | (when functionp (setf (cell-function instance) function)) 25 | instance)) 26 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/static-gfs/flag.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:static-gfs) 2 | 3 | ;;; This tells various things in CLOS that they need to do special work. 4 | 5 | (eval-when (:compile-toplevel :load-toplevel :execute) 6 | (pushnew :static-gfs *features*)) 7 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/static-gfs/initialize-instance.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:static-gfs) 2 | 3 | (defun initialize-instance-form (class iform keys params) 4 | (let ((patch-list 5 | (list 6 | (cons (find-method #'initialize-instance nil (list (find-class 't))) 7 | #'standard-initialize-instance-form))) 8 | (methods (compute-applicable-methods #'initialize-instance 9 | (list (clos:class-prototype class))))) 10 | (if (can-static-effective-method-p methods patch-list) 11 | (static-effective-method 12 | #'initialize-instance methods (list class iform keys params) patch-list 13 | (list* iform (reconstruct-arguments keys params))) 14 | (default-initialize-instance-form iform keys params)))) 15 | 16 | (defun default-initialize-instance-form (iform keys params) 17 | `(locally 18 | (declare (notinline initialize-instance)) 19 | (initialize-instance ,iform ,@(reconstruct-arguments keys params)))) 20 | 21 | (defun standard-initialize-instance-form (class iform keys params) 22 | (shared-initialize-form class t iform keys params)) 23 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/static-gfs/package.lisp: -------------------------------------------------------------------------------- 1 | (defpackage #:static-gfs 2 | (:use #:cl) 3 | (:export #:update-constructors) 4 | (:export #:invalidate-designated-constructors #:invalidate-class-constructors) 5 | (:export #:precompile-constructor) 6 | (:export #:invalidate-class-reinitializers*) 7 | (:export #:invalidate-changers* #:invalidate-class-changers 8 | #:invalidate-designated-changers) 9 | ;; make-instance compiler macro 10 | (:implement #:cl)) 11 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/static-gfs/reinitializer.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:static-gfs) 2 | 3 | (defvar *reinitializers* (make-hash-table :test #'equal)) 4 | 5 | (defun ensure-reinitializer (keys) 6 | (ensure-gethash keys *reinitializers* (make-reinitializer keys))) 7 | 8 | ;; This is used in finalize-inheritance and make-instances-obsolete, 9 | ;; and is analogous to invalidate-generic-functions-with-class-selector. 10 | ;; FIXME?: Could act more specifically as with specializer-direct-gfs 11 | (defun invalidate-class-reinitializers* (class) 12 | (let ((classes (clos:subclasses* class))) 13 | (maphash (lambda (k reinitializer) 14 | (declare (ignore k)) 15 | (maybe-invalidate-reinitializer-wrt-classes 16 | reinitializer classes)) 17 | *reinitializers*))) 18 | 19 | (defun wipe-all-reinitializers () 20 | (maphash (lambda (k reinitializer) 21 | (declare (ignore k)) 22 | (wipe-reinitializer reinitializer)) 23 | *reinitializers*)) 24 | 25 | -------------------------------------------------------------------------------- /src/lisp/kernel/clos/static-gfs/static-gfs.asd: -------------------------------------------------------------------------------- 1 | (defsystem :static-gfs 2 | :components 3 | ((:file "package") 4 | (:file "flag" :depends-on ("package")) 5 | (:file "constructor" :depends-on ("package")) 6 | (:file "precompile" :depends-on ("package")) 7 | ;; (clos depends on the above files, a bit) 8 | (:file "cell" :depends-on ("package")) 9 | (:file "effective-method" :depends-on ("package")) 10 | (:file "svuc" :depends-on ("package")) 11 | (:file "shared-initialize" :depends-on ("effective-method" "svuc" "package")) 12 | (:file "initialize-instance" :depends-on ("shared-initialize" 13 | "effective-method" "package")) 14 | (:file "allocate-instance" :depends-on ("package")) 15 | (:file "make-instance" :depends-on ("initialize-instance" "shared-initialize" 16 | "allocate-instance" "effective-method" "package")) 17 | (:file "compute-constructor" :depends-on ("make-instance" "constructor" "cell" "package")) 18 | (:file "dependents" :depends-on ("compute-constructor" "package")) 19 | (:file "compiler-macros" :depends-on ("compute-constructor" "package")))) 20 | -------------------------------------------------------------------------------- /src/lisp/kernel/cmp/opt/opt-character.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:cmp) 2 | 3 | ;; In clasp, chars are eq iff they are char=. 4 | ;; We'll need more work for char< and char-equal and so on. 5 | 6 | ;; Note: On low optimize safety, in cclasp, there will be no type checks here. 7 | 8 | (define-compiler-macro char/= (&whole form &rest args) 9 | (core:expand-uncompare form 'eq args 'character)) 10 | 11 | (define-compiler-macro char-not-equal (&whole form &rest chars) 12 | (core:expand-uncompare form 'core:two-arg-char-equal chars 'character)) 13 | 14 | (macrolet ((def (fname two-arg-name) 15 | `(define-compiler-macro ,fname (&whole form &rest chars) 16 | (core:expand-compare form ',two-arg-name chars 'character)))) 17 | (def char= eq) 18 | (def char-equal core:two-arg-char-equal) 19 | (def char< core:two-arg-char<) 20 | (def char<= core:two-arg-char<=) 21 | (def char> core:two-arg-char>) 22 | (def char>= core:two-arg-char>=) 23 | (def char-lessp core:two-arg-char-lessp) 24 | (def char-not-greaterp core:two-arg-char-not-greaterp) 25 | (def char-greaterp core:two-arg-char-greaterp) 26 | (def char-not-lessp core:two-arg-char-not-lessp)) 27 | -------------------------------------------------------------------------------- /src/lisp/kernel/cmpexports.lisp: -------------------------------------------------------------------------------- 1 | (in-package :cmp) 2 | (export '( 3 | *debug-link-options* ;; A list of strings to inject into link commands 4 | *debug-dump-module* ;; Dump intermediate modules 5 | )) 6 | -------------------------------------------------------------------------------- /src/lisp/kernel/lsp/.gitignore: -------------------------------------------------------------------------------- 1 | *.fasl 2 | *.lbc -------------------------------------------------------------------------------- /src/lisp/kernel/lsp/defvirtual.lisp: -------------------------------------------------------------------------------- 1 | (in-package :core) 2 | 3 | (defmacro defvirtual (name lambda-list &body body) 4 | (multiple-value-bind (simple-lambda-list dispatch-symbol dispatch-class dispatch-index) 5 | (core:process-single-dispatch-lambda-list lambda-list) 6 | (declare (ignore dispatch-index)) 7 | (multiple-value-bind (declares code docstring specials) 8 | (core:process-declarations body t) 9 | (declare (ignore specials)) 10 | (let ((fn `(lambda ,simple-lambda-list 11 | ;; as with cl:defmethod, anything specialized is 12 | ;; implicitly declared ignorable. 13 | (declare (ignorable ,dispatch-symbol) 14 | ,@declares) 15 | ,@(when docstring (list docstring)) 16 | ,@code))) 17 | `(core:ensure-single-dispatch-method (fdefinition ',name) 18 | ',name 19 | (find-class ',dispatch-class) 20 | :docstring ,docstring 21 | :body ,fn))))) 22 | 23 | (export '(defvirtual)) 24 | -------------------------------------------------------------------------------- /src/lisp/kernel/lsp/prologue.lisp: -------------------------------------------------------------------------------- 1 | #-clasp-min 2 | (eval-when (:load-toplevel) 3 | (dolist (pkg '("CLEAVIR-AST" "CLASP-CLEAVIR-AST" "CLASP-CLEAVIR")) 4 | (unless (find-package pkg) 5 | (make-package pkg))) 6 | (unless (member :staging *features*) 7 | (unless (or (member :cclasp *features*) 8 | (member :eclasp *features*)) 9 | (setq *features* (cons #+extensions (if (member :ignore-extensions *features*) 10 | :cclasp 11 | :eclasp) 12 | #-extensions :cclasp 13 | *features*))) 14 | (unless (member :clos *features*) 15 | (setq *features* (cons :clos *features*))))) 16 | -------------------------------------------------------------------------------- /src/lisp/kernel/lsp/util.lisp: -------------------------------------------------------------------------------- 1 | 2 | (in-package :core) 3 | 4 | ;; 5 | ;; TODO: Rewrite this in C++ when you get the chance - a lot of stuff depends on it 6 | ;; 7 | (defun nconc (&rest lists) 8 | "Concatenate LISTS by changing them." 9 | (setq lists (do ((p lists (cdr p))) 10 | ((or (car p) (null p)) p))) 11 | (do* ((top (car lists)) 12 | (splice top) 13 | (here (cdr lists) (cdr here))) 14 | ((null here) top) 15 | (rplacd (last splice) (car here)) 16 | (if (car here) 17 | (setq splice (car here))))) 18 | 19 | (defun tailp (object list) 20 | "Return true if OBJECT is the same as some tail of LIST, otherwise false." 21 | (if (null list) 22 | (null object) 23 | (do ((list list (cdr list))) 24 | ((atom (cdr list)) (or (eql object list) (eql object (cdr list)))) 25 | (if (eql object list) 26 | (return t))))) 27 | 28 | (defun ldiff (list object) 29 | "Return a copy of LIST before the part which is the same as OBJECT." 30 | (unless (eql list object) 31 | (do* ((result (list (car list))) 32 | (splice result) 33 | (list (cdr list) (cdr list))) 34 | ((atom list) (if (eql list object) (rplacd splice nil)) result) 35 | (if (eql list object) 36 | (return result) 37 | (setq splice (cdr (rplacd splice (list (car list))))))))) 38 | 39 | ;; stuff 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/lisp/kernel/stage/base/0-begin.lisp: -------------------------------------------------------------------------------- 1 | #+stage0 (core:stage-features :clasp-min :aclasp) 2 | -------------------------------------------------------------------------------- /src/lisp/kernel/stage/base/0-end.lisp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/src/lisp/kernel/stage/base/0-end.lisp -------------------------------------------------------------------------------- /src/lisp/kernel/stage/base/1-begin.lisp: -------------------------------------------------------------------------------- 1 | #+stage1 (core:stage-features :clos :bclasp) 2 | -------------------------------------------------------------------------------- /src/lisp/kernel/stage/base/1-end.lisp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/src/lisp/kernel/stage/base/1-end.lisp -------------------------------------------------------------------------------- /src/lisp/kernel/stage/base/2-begin.lisp: -------------------------------------------------------------------------------- 1 | #+stage2 (core:stage-features :clos :cclasp) 2 | -------------------------------------------------------------------------------- /src/lisp/kernel/stage/base/2-end.lisp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/src/lisp/kernel/stage/base/2-end.lisp -------------------------------------------------------------------------------- /src/lisp/kernel/stage/extension/0-begin.lisp: -------------------------------------------------------------------------------- 1 | #+stage0 (core:stage-features :clos :eclasp) 2 | -------------------------------------------------------------------------------- /src/lisp/kernel/stage/extension/0-end.lisp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/src/lisp/kernel/stage/extension/0-end.lisp -------------------------------------------------------------------------------- /src/lisp/local-asdf-config.lisp: -------------------------------------------------------------------------------- 1 | ;;; Configures ASDF to find systems under sys: 2 | ;;; Ideally we would use ASDF's configuration API, but sadly, nobody actually 3 | ;;; understands how to use it. I just spent an hour trying and I'm fed up. 4 | 5 | (format t "Configuring ASDF for local directories~%") 6 | (defun all-subdirs (dir) 7 | (let (dirs) 8 | (labels ((trav (d) 9 | (dolist (d (uiop:subdirectories d)) 10 | (unless (find ".git" (pathname-directory d) :test #'string=) 11 | (push d dirs) 12 | (trav d))))) 13 | (trav dir)) 14 | dirs)) 15 | 16 | (defun add-all-subdirs-to-asdf-*central-registry* (topdir) 17 | (let ((dirs (all-subdirs (translate-logical-pathname topdir)))) 18 | (dolist (dir dirs) 19 | (push dir asdf:*central-registry*)) 20 | (format t "Added ~d subdirectories of ~a to ASDF:*CENTRAL-REGISTRY*~%" 21 | (length dirs) (translate-logical-pathname #p"sys:")))) 22 | 23 | (add-all-subdirs-to-asdf-*central-registry* #p"sys:") 24 | -------------------------------------------------------------------------------- /src/lisp/modules/asdf-groveler/packages.lisp: -------------------------------------------------------------------------------- 1 | (defpackage #:asdf-groveler 2 | (:use #:common-lisp) 3 | (:export #:grovel 4 | #:grovel-source-files 5 | #:grovel-systems)) -------------------------------------------------------------------------------- /src/lisp/modules/clang-tool/clang-tool.asd: -------------------------------------------------------------------------------- 1 | (in-package :asdf-user) 2 | 3 | (defsystem "clang-tool" 4 | :description "Clang ASTMatcher library stuff" 5 | :version "0.0.1" 6 | :author "Christian Schafmeister " 7 | :licence "LGPL-3.0" 8 | :depends-on ( ) 9 | :serial t 10 | :components 11 | ((:file "packages") 12 | (:file "rules-13") 13 | (:file "clang-tool") 14 | )) 15 | -------------------------------------------------------------------------------- /src/lisp/modules/clang-tool/embed-cxx.lisp: -------------------------------------------------------------------------------- 1 | ;; 2 | ;; -------------------------------------------------- 3 | ;; 4 | ;; Install a reader macro to support insertion of C++ code into 5 | ;; common lisp code using #q{ .... #} 6 | ;; 7 | (defun get-delimiter (char) 8 | (case char 9 | (#\{ #\}) 10 | (#\( #\)) 11 | (#\[ #\]) 12 | (#\< #\>) 13 | (t char))) 14 | 15 | (defun read-sharp-q (in c n) 16 | (declare (ignore c n)) 17 | (let ((delimiter (get-delimiter (read-char in)))) 18 | (let ((string (make-array '(0) :element-type 'character 19 | :fill-pointer 0 :adjustable t))) 20 | (with-output-to-string (string-stream string) 21 | (loop :for char = (read-char in nil) 22 | :while (and char (not (and (char-equal char #\#) (char-equal (peek-char nil in) delimiter)))) 23 | :do 24 | (princ char string-stream))) 25 | (read-char in nil) 26 | string))) 27 | 28 | (set-dispatch-macro-character #\# #\q #'read-sharp-q) 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/lisp/modules/clang-tool/wb-clang-tool.lisp: -------------------------------------------------------------------------------- 1 | 2 | (load "sys:src;lisp;modules;clang-tool;clang-tool.lisp") 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/lisp/modules/clasp-analyzer/clasp-analyzer.asd: -------------------------------------------------------------------------------- 1 | (asdf:defsystem #:clasp-analyzer 2 | :description "Static analyzer for clasp" 3 | :version "0.0.1" 4 | :author "Christian Schafmeister " 5 | :licence "LGPL-3.0" 6 | :depends-on (#:clang-tool 7 | #:clasp-scraper) 8 | :serial t 9 | :components ((:file "packages") 10 | (:file "clasp-analyzer"))) 11 | -------------------------------------------------------------------------------- /src/lisp/modules/clasp-analyzer/packages.lisp: -------------------------------------------------------------------------------- 1 | (cl:in-package #:common-lisp-user) 2 | 3 | (defpackage #:clasp-analyzer 4 | (:shadow #:function-info #:function-type) 5 | (:use #:common-lisp #:ast-tooling #:clang-ast) 6 | (:shadow #:dump #:get-string #:size #:type) 7 | (:export #:setup-clasp-analyzer-compilation-tool-database 8 | #:load-project 9 | #:save-project 10 | #:serial-search-all 11 | #:serial-search/generate-code 12 | #:parallel-search/generate-code 13 | #:parallel-search-all-threaded 14 | #:analyze-project 15 | #:generate-code 16 | #:search-and-generate-code 17 | #:build-arguments-adjuster 18 | #:search-source-file 19 | #:merge-and-generate-code)) 20 | -------------------------------------------------------------------------------- /src/lisp/modules/docker-swank/start-swank.lisp: -------------------------------------------------------------------------------- 1 | (format t "Starting swank~%") 2 | (load (format nil "~a/swank-loader.lisp" core::*swank-home*)) 3 | (swank-loader:init 4 | :delete nil 5 | :reload nil 6 | :load-contribs nil) 7 | (let ((swank::*loopback-interface* "0.0.0.0")) 8 | (swank:create-server :port 4005 9 | :dont-close nil)) 10 | (format t "You should never reach here~%") 11 | -------------------------------------------------------------------------------- /src/lisp/modules/docs/clasp-docs.asd: -------------------------------------------------------------------------------- 1 | (asdf:defsystem clasp-docs 2 | :components ((:file "docs")) 3 | :depends-on (:staple 4 | :staple-markdown 5 | :pathname-utils)) 6 | -------------------------------------------------------------------------------- /src/lisp/modules/docs/documentation.md: -------------------------------------------------------------------------------- 1 | # Welcome to Clasp 2 | 3 | This is the documentation body of the first page! 4 | 5 | What else should we have here? 6 | 7 | -------------------------------------------------------------------------------- /src/lisp/modules/docs/workbench.org: -------------------------------------------------------------------------------- 1 | * Workbench for build clasp-docs 2 | 3 | Basic setup of clasp-docs. 4 | Output is written into cando/src/docs/ 5 | 6 | #+BEGIN_SRC lisp 7 | (load "~/quicklisp/setup.lisp") 8 | #+END_SRC 9 | 10 | #+RESULTS: 11 | : T 12 | 13 | #+BEGIN_SRC lisp :results output replace 14 | (push #P"~/Development/cando-dev/src/lisp/modules/docs/" asdf:*central-registry*) 15 | (asdf:register-immutable-system :eclector) 16 | (ql:quickload :clasp-docs)) 17 | #+END_SRC 18 | 19 | #+RESULTS: 20 | : To load "clasp-docs": 21 | : Load 1 ASDF system: 22 | : clasp-docs 23 | : ; Loading "clasp-docs" 24 | : .................................................. 25 | : [package clasp-docs]. 26 | 27 | #+BEGIN_SRC lisp :results output replace 28 | (staple:generate :clasp-docs :if-exists :supersede)) 29 | (format t "Done 1234~%") 30 | #+END_SRC 31 | 32 | #+RESULTS: 33 | : In find-project with CLASP-DOCS 34 | : Leaving find-project name 35 | 36 | 37 | * Then open the documentation 38 | [[file:~/Development/cando-dev/src/docs/index.html][Documentation]] 39 | -------------------------------------------------------------------------------- /src/lisp/modules/ninja/ninja.asd: -------------------------------------------------------------------------------- 1 | (asdf:defsystem #:ninja 2 | :description "Ninja writing interface along with utility streams for build files." 3 | :depends-on (#:trivial-gray-streams) 4 | :components ((:file "packages") 5 | (:file "timestamp-preserving-stream") 6 | (:file "line-wrapping-stream") 7 | (:file "logical-translations") 8 | (:file "ninja"))) 9 | -------------------------------------------------------------------------------- /src/lisp/modules/ninja/packages.lisp: -------------------------------------------------------------------------------- 1 | (defpackage #:ninja 2 | (:use #:common-lisp) 3 | (:documentation "Ninja writing interface along with utility streams for build files.") 4 | (:export #:escape 5 | #:find-minimal-pathname-translation 6 | #:*line-end* 7 | #:*line-start* 8 | #:*line-width* 9 | #:make-line-wrapping-stream 10 | #:make-logical-pathname-representation 11 | #:make-timestamp-preserving-stream 12 | #:with-timestamp-preserving-stream 13 | #:write-bindings 14 | #:write-build 15 | #:write-comment 16 | #:write-default 17 | #:write-include 18 | #:write-pool 19 | #:write-rule)) 20 | 21 | -------------------------------------------------------------------------------- /src/lisp/modules/unicode-data/packages.lisp: -------------------------------------------------------------------------------- 1 | (defpackage #:unicode-data 2 | (:use #:common-lisp) 3 | (:export #:generate 4 | #:parse)) -------------------------------------------------------------------------------- /src/lisp/modules/unicode-data/unicode-data.asd: -------------------------------------------------------------------------------- 1 | (asdf:defsystem #:unicode-data 2 | :description "Unicode Data parsing and analysis" 3 | :version "1.0.0" 4 | :author "Tarn W. Burton" 5 | :licence "LGPL-3.0" 6 | :serial t 7 | :depends-on (#:ninja 8 | #:split-sequence 9 | #:trivial-http) 10 | :components ((:file "packages") 11 | (:file "unicode"))) 12 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/.gitignore: -------------------------------------------------------------------------------- 1 | *.fasl 2 | *.dwarf -------------------------------------------------------------------------------- /src/lisp/regression-tests/conditions.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:clasp-tests) 2 | 3 | (test CERROR.6 4 | (locally (declare (optimize (safety 3))) 5 | (HANDLER-BIND ((SIMPLE-ERROR #'continue)) 6 | (PROGN (CERROR "Wooo" 'SIMPLE-ERROR) 10))) 7 | (10)) 8 | 9 | (test-expect-error condition-slot-unbound ; bug #1390 10 | (file-error-pathname (make-condition 'file-error)) 11 | :type unbound-slot) 12 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/eh.lisp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | (defun foo1 () 5 | (block x 6 | (unwind-protect nil 7 | (funcall (lambda () (return-from x)))))) 8 | 9 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/ehkiller.lisp: -------------------------------------------------------------------------------- 1 | (defun eh-foo () 2 | (block x 3 | (block y 4 | (unwind-protect 5 | (return-from y 1) 6 | (funcall (lambda () (return-from x 2))))))) 7 | (test eh-foo (eh-foo) (2)) 8 | 9 | (defun eh-bar () 10 | (block x 11 | (unwind-protect 12 | nil 13 | (funcall (lambda () (return-from x 2)))))) 14 | (test eh-bar (eh-bar) (2)) 15 | 16 | (defun eh-baz () 17 | (block x 18 | (unwind-protect 19 | (return-from x 1) 20 | (block z 21 | (funcall (lambda () (return-from z 2)))))))' 22 | 23 | (defun eh-bab (a) 24 | (block x 25 | (funcall (lambda () 26 | (block y 27 | (when (eq a 'x) 28 | (return-from x a)) 29 | (funcall (lambda () 30 | (when (eq a 'y) 31 | (return-from y a)) 32 | (funcall (lambda () (return-from x a)))))))))) 33 | 34 | 35 | 36 | (test eh-baz (eh-baz) (1)) 37 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/environment01.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:clasp-tests) 2 | 3 | (TEST-EXPECT-ERROR sleep-1 (sleep nil) :type type-error) 4 | 5 | (TEST-EXPECT-ERROR sleep-2 (sleep #\space) :type type-error) 6 | 7 | (TEST-EXPECT-ERROR sleep-3 (sleep -1) :type type-error) 8 | 9 | (defun %%test%% (n) (* n 2)) 10 | 11 | (define-compiler-macro %%test%% (&whole form arg) 12 | (if (constantp arg) 13 | (* arg 2) 14 | form)) 15 | 16 | (test DOCUMENTATION.LIST.COMPILER-MACRO.2 17 | (progn (setf (documentation '%%test%% 'compiler-macro) "Buh") 18 | (documentation '%%test%% 'compiler-macro)) 19 | ("Buh")) 20 | 21 | (test funcall-compiler-macro 22 | (funcall (compiler-macro-function '%%test%%) 23 | '(funcall #'%%test%% 2) nil) 24 | (4)) 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/fastgf.lisp: -------------------------------------------------------------------------------- 1 | (defmethod fgf-foo ((x integer)) :integer) 2 | (defmethod fgf-foo ((x string)) :string) 3 | (test dispatch-integer (fgf-foo 1) (:integer)) 4 | (test dispatch-string (fgf-foo "testing") (:string)) 5 | (defmethod fgf-foo ((x symbol)) :symbol) 6 | (test dispatch-symbol (fgf-foo :yadda) (:symbol)) 7 | (test-expect-error dispatch-no-applicable-method (fgf-foo 1.2) :description "This should not dispatch") 8 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/iteration.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:clasp-tests) 2 | 3 | (test-true dolist-declare-elements 4 | (let ((did-warn nil)) 5 | (flet ((catch-warnings (&optional condition) 6 | (setq did-warn t) 7 | (muffle-warning condition))) 8 | (handler-bind ((warning #'catch-warnings)) 9 | (compile nil 10 | '(lambda() 11 | (let ((sum 0)) 12 | (dolist (a (list 1 2 3) sum) 13 | (declare (type fixnum a)) 14 | (incf sum a))))))) 15 | (not did-warn))) 16 | 17 | 18 | (test-true dolist-var-nil-at-return 19 | (let ((sum 0)) 20 | (null 21 | (dolist (a (list 1 2 3) a) 22 | (incf sum a))))) 23 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/latin2-check.lisp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/clasp-developers/clasp/faa0b9cee2c93d90073fc56452731cca0568ed24/src/lisp/regression-tests/latin2-check.lisp -------------------------------------------------------------------------------- /src/lisp/regression-tests/lowlevel-source.lisp: -------------------------------------------------------------------------------- 1 | 2 | (eval-when (:compile-toplevel :load-toplevel :execute) 3 | (defclass foo () ()) 4 | (defun make-foo () (make-instance 'foo)) 5 | (defmethod make-load-form ((o foo) &optional env) 6 | (declare (ignore env)) 7 | (values '(let () (make-foo)) '(let ())))) 8 | 9 | (defun foo () #.(make-foo)) 10 | 11 | 12 | (eval-when (:compile-toplevel :load-toplevel :execute) 13 | (defclass bar () ()) 14 | (defun make-bar () (make-instance 'bar)) 15 | (defmethod make-load-form ((o bar) &optional env) 16 | (declare (ignore env)) 17 | '(let () (make-bar)))) 18 | 19 | (defun bar () #.(make-bar)) 20 | 21 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/lowlevel.lisp: -------------------------------------------------------------------------------- 1 | 2 | (in-package #:clasp-tests) 3 | 4 | (test compile-2-low-level 5 | (with-output-to-string (*standard-output*) 6 | (compile-file "sys:src;lisp;regression-tests;lowlevel-source.lisp" :verbose nil :print nil)) 7 | ("")) 8 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/set-unexpected-failures.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:clasp-tests) 2 | 3 | (setq *expected-failures* 4 | '(loop-fixnum-1 loop-finally-1 loop-finally-2 loop-finally-3 loop-finally-4 5 | random-short random-double random-long 6 | ;; compile-file-no-unwind 7 | types-classes-10 8 | sbcl-cross-compile-4 ;;;not important 9 | ;; include-level-2a 10 | include-level-2b include-level-3 ;;; a problem for sbcl x-compiling 11 | frame-function)) 12 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/stamps.lisp: -------------------------------------------------------------------------------- 1 | 2 | ;; Test that header stamps work for builtin classes 3 | (test-true stamp-of-builtin 4 | (= (core:instance-stamp (make-hash-table)) 5 | (core:class-stamp-for-instances (class-of (make-hash-table))))) 6 | ;; Test that rack stamps work for CLOS classes 7 | (defclass mygoofytestclass () ()) 8 | (test-true stamp-from-rack 9 | (= (core:instance-stamp (make-instance 'mygoofytestclass)) 10 | (core:class-stamp-for-instances (find-class 'mygoofytestclass)))) 11 | ;; Test that wrapped classes get their stamp from the wrapper 12 | #-use-mps 13 | (test-true stamp-from-wrapper 14 | (= (core:instance-stamp (ast-tooling:make-compiler-instance)) 15 | (core:class-stamp-for-instances (find-class 'ast-tooling:compiler-instance)))) 16 | ;; This last one is to test Derivable classes 17 | ;; I set up a special case for these where it calls the General_O::get_stamp_() method - but it doesn't look like it is necessary 18 | #-use-mps 19 | (test-true stamp-of-derivable 20 | (= (core:instance-stamp (make-instance 'ast-tooling:match-callback)) 21 | (core:class-stamp-for-instances (find-class 'ast-tooling:match-callback)))) 22 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/test-compile-file.lisp: -------------------------------------------------------------------------------- 1 | (in-package :cl-user) 2 | 3 | (defun foo() 42) 4 | -------------------------------------------------------------------------------- /src/lisp/regression-tests/unwind.lisp: -------------------------------------------------------------------------------- 1 | (in-package #:clasp-tests) 2 | 3 | ;; Assert that this compilation does not invoke any unwinds. 4 | (test compile-file-no-unwind 5 | (let ((unwinds (gctools:thread-local-unwinds))) 6 | (ext:with-unlocked-packages ("CL" "CORE") 7 | (compile-file "sys:src;lisp;kernel;lsp;predlib.lisp" 8 | :execution :serial 9 | :output-file (make-pathname 10 | :type (pathname-type (compile-file-pathname "foo.lisp")) 11 | :defaults (core:mkstemp "/tmp/predlib"))) 12 | (- (gctools:thread-local-unwinds) unwinds))) 13 | (0)) 14 | -------------------------------------------------------------------------------- /src/lisp/serialize/module.lisp: -------------------------------------------------------------------------------- 1 | (load "serialize.lisp") 2 | -------------------------------------------------------------------------------- /src/lisp/serialize/old-serialize.lisp: -------------------------------------------------------------------------------- 1 | 2 | (defun save-archive (obj pathname) 3 | "Serialize obj into an archive and write the archive to the pathname" 4 | (let ((archive (core:make-sexp-save-archive))) 5 | (core:put archive :only obj) 6 | (with-open-file (fout pathname :direction :output :if-exists :superscede) 7 | (core:sexp-save-archive-write archive fout))) 8 | (print "Leaving save-archive") 9 | (gdb "leaving") 10 | nil) 11 | 12 | -------------------------------------------------------------------------------- /src/lisp/swank-loader-docker.lisp: -------------------------------------------------------------------------------- 1 | 2 | (load #P"/home/app/slime/swank-loader.lisp") 3 | (swank-loader:init 4 | :delete nil ; delete any existing SWANK packages 5 | :reload nil ; reload SWANK, even if the SWANK package already exists 6 | :load-contribs nil) ; load all contribs 7 | 8 | (mp:process-run-function 9 | 'swank-main 10 | (swank:create-server 11 | :port 4005 12 | :interface "0.0.0.0")) 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/lisp/swank-loader.lisp: -------------------------------------------------------------------------------- 1 | 2 | (format t "If things don't work it may be stale versions of compiled files - remember to erase the files in ~~/.slime/fasl~%") 3 | 4 | (require :asdf) 5 | (require :swank) 6 | (setq swank:*communication-style* nil) 7 | 8 | (defun start-swank () 9 | (swank:create-server :port 4005 :dont-close nil)) 10 | 11 | (start-swank) 12 | -------------------------------------------------------------------------------- /src/llvmo/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ 2 | -------------------------------------------------------------------------------- /src/llvmo/configure_symbol_scrape.py: -------------------------------------------------------------------------------- 1 | 2 | 3 | packageName = "LlvmoPkg" 4 | 5 | -------------------------------------------------------------------------------- /src/llvmo/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:sources :libclasp 2 | #~"debugInfoExpose.cc" 3 | #~"debugLoc.cc" 4 | #~"llvmoDwarf.cc" 5 | #~"link_intrinsics.cc" 6 | #~"builtins.cc" 7 | #~"intrinsics.cc" 8 | #~"insertPoint.cc" 9 | #~"irtests.cc" 10 | #~"llvmoExpose.cc" 11 | #~"code.cc" 12 | #~"llvmoPackage.cc" 13 | #~"runtimeJit.cc" 14 | #~"clbindLlvmExpose.cc") 15 | -------------------------------------------------------------------------------- /src/llvmo/demo.cc: -------------------------------------------------------------------------------- 1 | /* 2 | File: demo.cc 3 | */ 4 | 5 | /* 6 | Copyright (c) 2014, Christian E. Schafmeister 7 | 8 | CLASP is free software; you can redistribute it and/or 9 | modify it under the terms of the GNU Library General Public 10 | License as published by the Free Software Foundation; either 11 | version 2 of the License, or (at your option) any later version. 12 | 13 | See directory 'clasp/licenses' for full details. 14 | 15 | The above copyright notice and this permission notice shall be included in 16 | all copies or substantial portions of the Software. 17 | 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 21 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 22 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 23 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 24 | THE SOFTWARE. 25 | */ 26 | /* -^- */ 27 | 28 | #include 29 | #include 30 | 31 | int main(int argc, char* argv[]) { 32 | printf("Hello world\n"); 33 | 34 | char* x = (char*)malloc(10 * sizeof(char*)); 35 | free(x); 36 | return x[5]; 37 | } 38 | -------------------------------------------------------------------------------- /src/main/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:sources :iclasp #~"main.cc") 2 | -------------------------------------------------------------------------------- /src/mpip/.gitignore: -------------------------------------------------------------------------------- 1 | bin/ -------------------------------------------------------------------------------- /src/mpip/cscript.lisp: -------------------------------------------------------------------------------- 1 | (k:sources :libclasp #~"claspMpi.cc") 2 | -------------------------------------------------------------------------------- /src/profiler/callers: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/cleanup-stacks: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/code-weight/code-weight.asd: -------------------------------------------------------------------------------- 1 | (in-package :asdf-user) 2 | 3 | (defsystem "code-weight" 4 | :description "Measure inlining weight" 5 | :version "0.0.1" 6 | :author "Christian Schafmeister " 7 | :description "Tool for measuring the code generated by inlining. Compile-file files with :output-info t and generate .ll files and then pass a list of .ll files to the analyze-code function." 8 | :licence "LGPL-3.0" 9 | :depends-on (:cl-ppcre) 10 | :serial t 11 | :components 12 | ((:file "packages") 13 | (:file "code-weight"))) 14 | -------------------------------------------------------------------------------- /src/profiler/code-weight/packages.lisp: -------------------------------------------------------------------------------- 1 | (cl:in-package #:common-lisp-user) 2 | 3 | (defpackage #:code-weight 4 | (:use #:common-lisp) 5 | (:export 6 | #:analyze-code)) 7 | -------------------------------------------------------------------------------- /src/profiler/collapse: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/count-calls: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/count-tips: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/do-dtrace: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # arguments: pid [output-file [time] [sample-speed-hz] [stack-frames] 3 | 4 | PID=$1 5 | TIME=${2:-10s} 6 | RATE=${3:-97} 7 | FRAMES=${4:-4000} 8 | kill -SIGUSR1 $PID 9 | sudo rm -f /tmp/out-$PID.* && sudo dtrace -p $PID -x aggsize=512m -x ustackframes=${FRAMES} -n "profile-$RATE /pid == $PID && arg1 / { @[ustack()] = count(); } tick-$TIME { exit(0); }" -o /tmp/out-$PID.raw.stacks 10 | kill -SIGUSR1 $PID 11 | if [ -f /tmp/perf-$PID.map ]; then 12 | ./symbolicate.lisp -i /tmp/out-$PID.raw.stacks -o /tmp/out-$PID.sym.stacks -s /tmp/perf-$PID.map 13 | else 14 | cp /tmp/out-$PID.raw.stacks /tmp/out-$PID.sym.stacks 15 | fi 16 | ./cleanup-stacks -i /tmp/out-$PID.sym.stacks -o /tmp/out-$PID.stacks -m ${FRAMES} 17 | # PRUNE_OUTFILE=${OUTFILE%.prune_stacks} 18 | # ./prune-trace.lisp $OUTFILE $PRUNE_OUTFILE 19 | echo /tmp/out-$PID.stacks 20 | -------------------------------------------------------------------------------- /src/profiler/do-dtrace-allocation-number-counter: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # arguments: pid [output-file [time] [stack-frames] 3 | 4 | PID=$1 5 | TIME=${2:-30s} 6 | FRAMES=${3:-1000} 7 | sudo rm -f /tmp/out-$1.user_stacks && sudo dtrace -p $PID -x ustackframes=${FRAMES} -n "pid$PID::*HitAllocationNumberThreshold*:entry { @[ustack()] = count(); } tick-$TIME { exit(0); }" -o /tmp/out-$1.user_stacks 8 | if [ -f /tmp/clasp-symbols-$1 ]; then 9 | ./symbolicate.lisp -i /tmp/out-$1.user_stacks -o /tmp/out-symbol-$1.user_stacks -s /tmp/perf-$1.map 10 | else 11 | cp /tmp/out-$1.user_stacks /tmp/out-symbol-$1.user_stacks 12 | fi 13 | # PRUNE_OUTFILE=${OUTFILE%.prune_stacks} 14 | # ./prune-trace.lisp $OUTFILE $PRUNE_OUTFILE 15 | echo /tmp/out-symbol-$1.user_stacks 16 | -------------------------------------------------------------------------------- /src/profiler/do-dtrace-allocation-size-counter: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # arguments: pid [output-file [time] [stack-frames] 3 | 4 | PID=$1 5 | TIME=${2:-30s} 6 | FRAMES=${3:-1000} 7 | sudo rm -f /tmp/out-$1.user_stacks && sudo dtrace -p $PID -x ustackframes=${FRAMES} -n "pid$PID::*HitAllocationSizeThreshold*:entry { @[ustack()] = count(); } tick-$TIME { exit(0); }" -o /tmp/out-$1.user_stacks 8 | if [ -f /tmp/clasp-symbols-$1 ]; then 9 | ./symbolicate.lisp -i /tmp/out-$1.user_stacks -o /tmp/out-symbol-$1.user_stacks -s /tmp/perf-$1.map 10 | else 11 | cp /tmp/out-$1.user_stacks /tmp/out-symbol-$1.user_stacks 12 | fi 13 | # PRUNE_OUTFILE=${OUTFILE%.prune_stacks} 14 | # ./prune-trace.lisp $OUTFILE $PRUNE_OUTFILE 15 | echo /tmp/out-symbol-$1.user_stacks 16 | -------------------------------------------------------------------------------- /src/profiler/do-flame: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | PID=$1 3 | TIME=${2:-60s} 4 | RATE=${3:-997} 5 | FRAMES=${4:-6000} 6 | ## in case there is no symbols file 7 | #sudo rm -f /tmp/out-$1.user_stacks && sudo dtrace -p $PID -x bufsize=1g -x bufresize=manual -x ustackframes=${FRAMES} -n "profile-$RATE /pid == $PID && arg1 / { @[ustack()] = count(); } tick-$TIME { exit(0); }" -o /tmp/out-$1.user_stacks 8 | #if [ -f /tmp/clasp-symbols-$1 ]; then 9 | # ./symbolicate.lisp -i /tmp/out-$1.user_stacks -o /tmp/out-symbol-$1.user_stacks -s /tmp/perf-$1.map 10 | #else 11 | # cp /tmp/out-$1.user_stacks /tmp/out-symbol-$1.user_stacks 12 | #fi 13 | if [[ "$OSTYPE" == "linux-gnu" ]]; then 14 | ./do-perf-only $PID $TIME $RATE $FRAMES 15 | else 16 | ./do-dtrace $PID $TIME $RATE $FRAMES 17 | fi 18 | 19 | ./collapse -i /tmp/out-$1.stacks -o /tmp/out-$1.folded -m ${FRAMES} 20 | 21 | $FLAME_GRAPH_HOME/flamegraph.pl -color clasp /tmp/out-$1.stacks >/tmp/out-$1.svg 22 | echo /tmp/out-$1.svg 23 | -------------------------------------------------------------------------------- /src/profiler/do-flame-invert: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | PID=$1 3 | TIME=${2:-10s} 4 | FRAMES=${3:-4000} 5 | ## in case there is no symbols file 6 | #sudo rm -f /tmp/out-$1.user_stacks && sudo dtrace -p $PID -x ustackframes=${FRAMES} -n "profile-$RATE /pid == $PID && arg1 / { @[ustack()] = count(); } tick-$TIME { exit(0); }" -o /tmp/out-$1.user_stacks 7 | #if [ -f /tmp/clasp-symbols-$1 ]; then 8 | # ./symbolicate.lisp -i /tmp/out-$1.user_stacks -o /tmp/out-symbol-$1.user_stacks -s /tmp/perf-$1.map 9 | #else 10 | # cp /tmp/out-$1.user_stacks /tmp/out-symbol-$1.user_stacks 11 | #fi 12 | if [[ "$OSTYPE" == "linux-gnu" ]]; then 13 | exec ./do-perf $PID $TIME $RATE $FRAMES 14 | else 15 | ./do-dtrace $PID $TIME $RATE $FRAMES 16 | fi 17 | 18 | echo About to invert 19 | ./invert -i /tmp/out-$PID.stacks -o /tmp/out-$PID.invstacks -m 20 20 | # PRUNE_OUTFILE=${OUTFILE%.prune_stacks} 21 | # ./prune-trace.lisp $OUTFILE $PRUNE_OUTFILE 22 | echo /tmp/out-$PID.invstacks 23 | 24 | ./collapse -i /tmp/out-$1.invstacks -o /tmp/out-$1.folded -m 400 25 | 26 | $FLAME_GRAPH_HOME/flamegraph.pl -color clasp /tmp/out-$1.folded >/tmp/out-$1.svg 27 | echo /tmp/out-$1.svg 28 | -------------------------------------------------------------------------------- /src/profiler/do-perf: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PID=$1 4 | TIME=${2:-10} 5 | RATE=${3:-97} 6 | FRAMES=${4:-6000} 7 | DIR="/tmp" 8 | echo perf record -p $PID -F $RATE --call-graph fp,60000 -o $DIR/out-$PID.data -- sleep $TIME 9 | echo The system stack depth is in /proc/sys/kernel/perf_event_max_stack = `cat /proc/sys/kernel/perf_event_max_stack` 10 | perf record -p $PID -F $RATE --call-graph fp,60000 -o $DIR/out-$PID.data -- sleep $TIME 11 | perf script -i $DIR/out-$PID.data --max-stack=60000 > $DIR/out-$PID.perf 12 | $FLAME_GRAPH_HOME/stackcollapse-perf.pl $DIR/out-$PID.perf > $DIR/out-$PID.folded 13 | $FLAME_GRAPH_HOME/flamegraph.pl --color=clasp $DIR/out-$PID.folded > $DIR/out-$PID.svg 14 | cp $DIR/out-$PID.svg $FLAME_DIR/latest-flame-graph.svg 15 | echo $DIR/out-$PID.svg 16 | -------------------------------------------------------------------------------- /src/profiler/do-perf-only: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PID=$1 4 | TIME=${2:-10} 5 | RATE=${3:-97} 6 | FRAMES=${4:-6000} 7 | DIR="/tmp" 8 | echo perf record -p $PID -F $RATE --call-graph fp,60000 -o $DIR/out-$PID.data -- sleep $TIME 9 | perf record -p $PID -F $RATE --call-graph fp,60000 -o $DIR/out-$PID.data -- sleep $TIME 10 | perf script -i $DIR/out-$PID.data --max-stack=60000 > $DIR/out-$PID.perf 11 | $FLAME_GRAPH_HOME/stackcollapse-perf.pl $DIR/out-$PID.perf > $DIR/out-$PID.stacks 12 | -------------------------------------------------------------------------------- /src/profiler/dot_sbclrc: -------------------------------------------------------------------------------- 1 | ;;; If the first user-processable command-line argument is a filename, 2 | ;;; disable the debugger, load the file handling shebang-line and quit. 3 | (let ((script (and (second *posix-argv*) 4 | (probe-file (second *posix-argv*))))) 5 | (when script 6 | ;; Handle shebang-line 7 | (set-dispatch-macro-character #\# #\! 8 | (lambda (stream char arg) 9 | (declare (ignore char arg)) 10 | (read-line stream))) 11 | ;; Disable debugger 12 | (setf *invoke-debugger-hook* 13 | (lambda (condition hook) 14 | (declare (ignore hook)) 15 | ;; Uncomment to get backtraces on errors 16 | ;; (sb-debug:backtrace 20) 17 | (format *error-output* "Error: ~A~%" condition) 18 | (sb-ext:exit))) 19 | (load script) 20 | (sb-ext:exit))) 21 | 22 | 23 | ;;; The following lines added by ql:add-to-init-file: 24 | #-quicklisp 25 | (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" 26 | (user-homedir-pathname)))) 27 | (when (probe-file quicklisp-init) 28 | (load quicklisp-init))) 29 | 30 | -------------------------------------------------------------------------------- /src/profiler/dtrace-trigger: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | PID=$1 3 | PPIDO=$2 4 | echo PID = $PID PPIDO = $PPIDO 5 | if [ "$PPIDO" == "" ] 6 | then 7 | echo IM CHANGING PPDIO to $PID 8 | PPIDO=$PID 9 | fi 10 | echo PID = $PID PPIDO = $PPIDO 11 | FRAMES=${3:-4000} 12 | sudo rm -f /tmp/out-$PID* 13 | sudo ./trigger.d -x ustackframes=${FRAMES} -p $PID -o /tmp/out-$PID.raw.stacks 14 | sudo chown $USER /tmp/out-$PID.raw.stacks 15 | ./symbolicate.lisp -i /tmp/out-$PID.raw.stacks -o /tmp/out-$PID.sym.stacks -s /tmp/perf-$PPIDO.map 16 | ./cleanup-stacks -i /tmp/out-$PID.sym.stacks -o /tmp/out-$PID.strip.stacks -O cleavir 17 | ./flame /tmp/out-$PID.strip.stacks 18 | open -a /Applications/Google\ Chrome.app/ /tmp/out-flame.svg -F 19 | -------------------------------------------------------------------------------- /src/profiler/flame: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | #PID=$1 3 | #TIME=${2:-60s} 4 | #RATE=${3:-97} 5 | #FRAMES=${4:-1000} 6 | ## in case there is no symbols file 7 | #sudo rm -f /tmp/out-$1.user_stacks && sudo dtrace -p $PID -x ustackframes=${FRAMES} -n "profile-$RATE /pid == $PID && arg1 / { @[ustack()] = count(); } tick-$TIME { exit(0); }" -o /tmp/out-$1.user_stacks 8 | #if [ -f /tmp/clasp-symbols-$1 ]; then 9 | # ./symbolicate.lisp -i /tmp/out-$1.user_stacks -o /tmp/out-symbol-$1.user_stacks -s /tmp/perf-$1.map 10 | #else 11 | # cp /tmp/out-$1.user_stacks /tmp/out-symbol-$1.user_stacks 12 | #fi 13 | $FLAME_GRAPH_HOME/stackcollapse.pl $1 >/tmp/out-symbol-flame.folded 14 | $FLAME_GRAPH_HOME/flamegraph.pl --colors common-lisp /tmp/out-symbol-flame.folded >/tmp/out-flame.svg 15 | echo /tmp/out-flame.svg 16 | -------------------------------------------------------------------------------- /src/profiler/invert: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/perf2dtrace: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/prune: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/prune-count: -------------------------------------------------------------------------------- 1 | stacks.lisp -------------------------------------------------------------------------------- /src/profiler/scripts/onefunc.d: -------------------------------------------------------------------------------- 1 | #!/usr/sbin/dtrace -s 2 | # Usage: sudo dtrace -x ustackframes=1000 -c ./cclasp-boehm -s onefunc.d -o /tmp/out.user_stacks 3 | pid$target::*CLEAVIR-COMPILE-FILE-FORM*:entry 4 | { 5 | interested = 1; 6 | printf("Entered init-translators interested = %d\n", interested); 7 | } 8 | 9 | pid$target::*CLEAVIR-COMPILE-FILE-FORM*:return 10 | { 11 | interested = 0; 12 | printf("Done interested = %d\n", interested); 13 | } 14 | 15 | profile-2 16 | / pid == $target && interested / 17 | { 18 | @[ustack()] = count(); 19 | } 20 | -------------------------------------------------------------------------------- /src/profiler/scripts/profile_allocate: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Usage: $0