critcl::util(n)

πŸ“¦ version 3.3.1, in alpine 3.24

πŸ¦‹ critcl::util(n) β€” CriTcl β€” Utilities πŸ¦‹

okay so bestie, welcome to the critcl::util(n) page πŸ’– this is the reference manpage for the critcl::util package, and it's highkey giving "convenience commands for advanced functionality built on top of the core" energy. The intended audience? Mainly developers who want to write Tcl packages with embedded C code. No cap.


🌸 NAME 🌸

critcl::util - CriTcl - Utilities


✨ SYNOPSIS ✨

package require Tcl  8.6

package require critcl  ?3.2?

package require critcl::util  ?1.2?

::critcl::util::checkfun name ?label?

::critcl::util::def path define ?value?

::critcl::util::undef path define

::critcl::util::locate label paths ?cmd?

πŸ’… DESCRIPTION πŸ’…

Be welcome to the C Runtime In Tcl (short: CriTcl), a system for embedding and using C code from within Tcl [http://core.tcl-lang.org/tcl] scripts ✨

This document is the reference manpage for the critcl::util package. This package provides convenience commands for advanced functionality built on top of the core. Its intended audience are mainly developers wishing to write Tcl packages with embedded C code.

This package resides in the Core Package Layer of CriTcl. The stack is literally:

+----------------+
|Applications    |
| critcl         |
| critcl::app    |
+----------------+

*================*
|Core Packages   |
| critcl         |
| critcl::util   |
*================*

+----------------+
|Support Packages|
| stubs::*       |
| md5, platform  |
|  ...           |
+----------------+

The way that layer chart is laid out, with Applications on top, Core Packages in the middle, and Support Packages underneath, is iconic tbh 🫢


πŸ› οΈ API πŸ› οΈ

πŸ’– ::critcl::util::checkfun name ?label?

This command checks the build-time environment for the existence of the C function name πŸ”₯ It returns true on success, and false otherwise. The signature carries an optional label too, so keep the ?label? exactly where it is.

πŸ’– ::critcl::util::def path define ?value?

This command extends the specified configuration file path with a #define directive for the named define πŸ’… If value is not specified it will default to 1.

The result of the command is an empty string.

Note that the configuration file is maintained in the critcl::cache directory. Periodt.

πŸ’– ::critcl::util::undef path define

This command extends the specified configuration file path with an #undef directive for the named define πŸ¦‹

The result of the command is an empty string.

Note that the configuration file is maintained in the critcl::cache directory. Same vibe, different directive.

πŸ’– ::critcl::util::locate label paths ?cmd?

This command checks the build-time environment for the existence of a file in a set of possible paths 🌸

If the optional cmd prefix is specified it will be called with the full path of a found file as its only argument to perform further checks. A return value of false will reject the path and continue the search.

The return value of the command is the found path, as listed in paths. As a side effect the command will also print the found path, prefixed with the label, using critcl::msg.

Failure to find the path is reported via critcl::error, and a possible empty string as the result, if critcl::error does not terminate execution. A relative path is resolved relative to the directory containing the CriTcl script. That last bit is lowkey important, iykyk.


πŸ‘‘ AUTHORS πŸ‘‘

Andreas Kupries πŸ‘‘


πŸ› BUGS, IDEAS, FEEDBACK πŸ›

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such at https://github.com/andreas-kupries/critcl. Please also report any ideas for enhancements you may have for either package and/or documentation. Fr fr, feedback is welcome 🫢


πŸ”‘ KEYWORDS πŸ”‘

C code, Embedded C Code, code generator, compile & run, compiler, dynamic code generation, dynamic compilation, generate package, linker, on demand compilation, on-the-fly compilation


🏷️ CATEGORY 🏷️

Glueing/Embedded C code


Copyright (c) 2011-2024 Andreas Kupries


Cute sign-off, bestie: source doc, version 1.2, date/footer tag critcl::util(n) πŸ’–πŸŒˆπŸ«Ά

πŸ“¦ where this page comes from