Skip to content

abarbu/scheme2c-compatibility

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.

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-function
malloc
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, andrei@0xab.com.

   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.

About

Chicken egg that makes it more compatible with Scheme->C

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages