Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/abarbu/scheme2c-compatibility
Chicken egg that makes it more compatible with Scheme->C
https://github.com/abarbu/scheme2c-compatibility
Last synced: 25 days ago
JSON representation
Chicken egg that makes it more compatible with Scheme->C
- Host: GitHub
- URL: https://github.com/abarbu/scheme2c-compatibility
- Owner: abarbu
- Created: 2012-12-07T19:13:53.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2021-04-03T14:09:16.000Z (over 3 years ago)
- Last Synced: 2024-04-15T01:18:14.412Z (7 months ago)
- Language: Scheme
- Size: 19.5 KB
- Stars: 3
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.chickenwiki
Awesome Lists containing this project
README
[[tags: egg misc]]
[[toc:]]This page is maintained in the package's
[[https://github.com/abarbu/scheme2c-compatibility|github repository]].== scheme2c-compatibility
This implements miscellaneous functions and macros that make Chicken
more compatible with Scheme->C. Some of this comes from from Jeff
Siskind's QobiScheme. Much of this functionality is redundant with
that offered by other Chicken eggs but is offered with a
Scheme->C-compatible API and naming scheme.==== Lists
(eleventh x)
(twelfth x)==== Strings
(lines string)
Combine a list of lines into a string separated by newlines.
(unlines l)
Split a string into a list of lines.
(words string)
Split a string into words.
(unwords l)
Combine a list of words into a string separated by spaces.
(number-of-fields string)
(field-ref string n)
(fields string)==== System
(usleep microseconds)
(directory-list d)==== File IO
(read-object-from-file pathname)
(write-object-to-file object pathname)Read/write a single scheme object to/from a file. This is not the same
as chicken's ''read-file''.(read-text-file pathname)
(write-text-file lines pathname)Read/write a text file.
(fclose handle)
(fopen filename mode)
(fmemopen buffer size mode)popen
pclose==== Paths
(strip-directory pathname)
(has-extension? pathname)
(extension pathname)
(strip-extension pathname)
(default-extension pathname extension)
(replace-extension pathname extension)
(has-directory? pathname)
(get-directory pathname)==== X11
(c-docolordither pic24 w h rdisp gdisp bdisp idisp maplen)
(ylookupstring event . opt)
(xallocnamedcolor3 dpy cmap colorname)
(xquerypointer2 dpy w)
getenv==== Temporary files
*tmp*
(tmp pathname)
(with-temporary-file prefix f)Call f with a unique filename that will be removed once f returns. The
extension of prefix is honored, but not its base filename.==== Bitwise operations
(bit-not n)
(bit-and n)
(bit-or n)
(bit-lsh n offset)
(bit-rsh n offset)==== FFI compatibility
===== Sizeof
c-sizeof-short
c-sizeof-int
c-sizeof-long
c-sizeof-float
c-sizeof-double
c-sizeof-tscp
c-sizeof-s2cuint
c-sizeof-pointer===== Memory accesss
(c-byte-ref ptr off)
(c-byte-set! ptr off val)
(c-double-ref ptr off)
(c-double-set! ptr off val)
(c-float-ref ptr off)
(c-float-set! ptr off val)
(c-int-ref ptr off)
(c-int-set! ptr off val)
(c-longint-ref ptr off)
(c-longint-set! ptr off val)
(c-longunsigned-ref ptr off)
(c-longunsigned-set! ptr off val)
(c-s2cuint-ref ptr off)
(c-s2cuint-set! ptr off val)
(c-shortint-ref ptr off)
(c-shortint-set! ptr off val)
(c-shortunsigned-ref ptr off)
(c-shortunsigned-set! ptr off val)
(c-unsigned-ref ptr off)
(c-unsigned-set! ptr off val)
(pointer-pointer-ref ptr-to-ptr)
(pointer-pointer-set! ptr-to-ptr val)
(c-string->string buf)
(c-null-separated-strings->strings c-strings)Access buffers containg various standard types. ''s2cuint'' is the
same size as a pointer.===== Arrays
(c-array->list array get-element element-size nr-elements)
(c-array->vector array get-element element-size nr-elements)
(c-exact-array->list array element-size nr-elements signed?)
(c-exact-array->vector array element-size nr-elements signed?)
(c-inexact-array->list array element-size nr-elements signed?)
(c-inexact-array->vector array element-size nr-elements signed?)
(list->c-array array l set-element element-size)
(list->c-exact-array array l element-size signed?)
(list->c-inexact-array array l element-size signed?)
(vector->c-array array v set-element element-size)
(vector->c-exact-array array v element-size signed?)
(vector->c-inexact-array array v element-size signed?)Various functions to convert to and from C arrays.
(c-sized-int-ptr-ref size signed?)
(c-sized-int-ptr-set! size signed?)
(c-sized-inexact-ptr-ref size signed?)
(c-sized-inexact-ptr-set! size signed?)Return functions which access arrays with elements of given sizes.
===== Scroped
(with-alloc x f)
(with-buffer-stream f buffer size mode)
(with-c-string str f)
(with-file-stream f filename mode)
(with-array elements element-size f)
(with-c-pointers f v)
(with-vector->c-array f set-element element-size v)Perform many of the operations above automatically cleaning up once
the procedure returns.===== misc
(exact-round x)
(exact-ceiling x)
(exact-floor x)Round/floor/ceiling and ''inexact->exact''.
c-value
c-sizeof
c-functionmalloc
memcpy
bzero(unsigned-list->unsigneda l)
==== misc
(fuck-up)
(panic format-string . &rest)
(xor a b)
*panic?*
*program*(read-from-string string)
''(read)'' from a string.
flush-buffer
''flush-output''
=== TODO
''with-temporary-file'' is wrong! It ignores the prefix and more
importantly its extension and will lead to breakage.=== License
Copyright 1993-1995 University of Toronto. All rights reserved.
Copyright 1996 Technion. All rights reserved.
Copyright 1996 and 1997 University of Vermont. All rights reserved.
Copyright 1997-2001 NEC Research Institute, Inc. All rights reserved.
Copyright 2002-2012 Purdue University. All rights reserved.Contact Andrei Barbu, [email protected].
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see http://www.gnu.org/licenses.