★ wanayoo — archive 1999 http://bigloo-lib.sourceforge.net/bigloo-lib.htmlNouvelle recherche | Portail wanayoo

Bigloo libraries


General info

Currently the package includes the following libraries:

Also the following packages are to be included soon :

Versions and Compitibility

The current version of bigloo-lib is 0.13, is compatible with `bigloo2.1b' and `bigloo2.2a'.

Project Home page

http://bigloo-lib.sourceforge.net

Currently the site contents is bigloo-lib documentation, converted by texi2html.

SourceForge Project page

Maintained automagically by SourceForge software:

http://sourceforge.net/project/?group_id=3455

Documentation

While the package is in alpha development state, the documentation you may see at project WEB site may differ from that provided with last bigloo-lib release. Usually the documentation describes the development "bleeding edge", some of the features described here will be visible in the next releases only. Use the documentation included into the package.

Download

http://sourceforge.net/project/filelist.php?group_id=3455

Anonymous CVS Access

This project's CVS repository can be checked out through anonymous (pserver) CVS with the following instruction set. When prompted for a password for anonymous, simply press the Enter key.

cvs -d:pserver:anonymous@cvs.bigloo-lib.sourceforge.net:/cvsroot/bigloo-lib login

cvs -d:pserver:anonymous@cvs.bigloo-lib.sourceforge.net:/cvsroot/bigloo-lib co .

Also, you can browse the CVS tree with CVSWEB

http://cvs.sourceforge.net/cgi-bin/cvsweb.cgi?cvsroot=bigloo-lib

Daily tarballs of entire project CVS Repository are available at

http://cvs.sourceforge.net/cvstarballs/bigloo-lib-cvsroot.tar.gz

Mailing lists

mailto:bigloo-lib-devel@lists.sourceforge.net

Bug Tracking

https://sourceforge.net/bugs/?group_id=3455

Implementation notes

All the libraries are compiled, linked and installed using GNU libtool. libtool makes its own decision about flags it send to the linker. As a result, the path to installed libraries (/usr/local/lib/bigloo by default) is not compiled into the libraries, so you need to care about it by yourself (set either the LD_LIBRARY_PATH or LD_RUN_PATH environment variable or edit /etc/ld.so.conf file). See the messages libtool prints while it installs the libraries (1).

Bigloo Common Library

Introduction

The Common library is a set of miscellaneous types and procedures. Some other bigloo-lib's libraries require it. This library includes:

At the moment, the stuff was selected based only on my own practical needs in course of working on some Web-related projects. By this reason, the library is not (and probably never will be) completed.

Also, though a few Bigloo procedures are re-implemented in this library, in no case this library replaces the Bigloo runtime library.

regex

This section describes the regex module, which provides an interface to C runtime regex functions.

The regex module is optional, i.e. you can disable its compilation by using --without-regexp flag for configure. Or the configure may detect that regexps are broken on your system and disable this feature automatically.

To let you detect whether you have regexps from inside the interpreted code, the 'regexp symbol is defined through the register-eval-srfi! construct, so you can test it with cond-expand. For example, the common library test script conditionally includes the regexp-test call:

(cond-expand (regexp (regexp-test))
	     (else (print "regexps are disabled by configure")))

C runtime API

Procedures described here are direct interfaces to corresponding C runtime calls. You probably do not want to use them in end-user applications.

procedure: regcomp preg::regexp pattern::string #!optional flags::regcomp-flags => regcomp-error

Compile pattern string into previously allocated preg regexp structure.

procedure: regerror errorid::regcomp-error rexp::regexp => bstring

Given the error code, returned by regcomp or regexec, return the error description.

(regerror 'erange (regexp " "))
=> "invalid endpoint in range"

procedure: regfree rexp::regexp => #unspecified

Free the memory allocated to the rexp by the regcomp.

Matching utilities

The procedures described here, are intended for end-user applications. They are compatible to those implemented in MzScheme.

procedure: regexp str::bstring #!optional flags::regcomp-flags => regexp

regexp constructor. Allocate regexp object and compile the string given in str argument into regular expression object. Raise an exception if something goes wrong during the compilation.

The optional flags arguments may be any of the following symbols (see regcomp manual page) :

basic
Use POSIX Basic Regular Expression syntax when interpreting regex. If not set, POSIX Extended Regular Expression syntax is used. See manual page regex(7) for details.
icase
Do not differentiate case. Subsequent regexec searches using this pattern buffer will be case insensitive (2).
nosub
Support for substring addressing of matches is not required. The list resulted from successful match will be always empty. Use it if you just want to know if match found or not, not the matched substring or substrings.
newline
Match-any-character operators don't match a newline. A non-matching list ([^...]) not containing a newline does not match a newline. Match-beginning-of-line operator (^) matches the empty string immediately after a newline, regardless of whether eflags, the execution flags of regexec, contains notbol. Match-end-of-line operator ($) matches the empty string immediately before a newline, regardless of whether eflags argument of matching function contains noteol.

Simple regexp creation example:

(regexp "q") => #<foreign:REGEXP:21490>
(regexp "(") error--> "( ) or \( \) imbalance -- ("

Simple vs. case insensitive match example:

(define rexp(regexp "qwerty"))
(regexp-match rexp "QWERTY")
=> #f

(define rexp(regexp "qwerty" 'icase))
(regexp-match rexp "QWERTY")
=> (QWERTY)

Basic vs. Extended regexp match example:

(define rexp(regexp "a|b" '(basic)))
(regexp-match rexp "a|b")
=> ("a|b")

(define rexp(regexp "a|b")) ;; 'extended flag set by default
(regexp-match rexp "a|b")
=> ("a")

Using of nosub flag example:

(define rexp(regexp "qwerty" 'nosub))
(regexp-match rexp "qwerty")
=> ()

procedure: regexp-match rexp-or-string str::bstring #!optional offset::int eflags::regexec-flags => #f or pair

Return #f if string str does not match pattern. Otherwise return the list object. Unless the nosub flag was given, the list has at least one element, the whole match substring found. The rest elements are partial sub-matches. The pattern argument must be either regexp or scheme string. In later case pattern is compiled into temporary regexp object, which is automatically released.

Example:

(regexp-match "q" "asdf")
=> #f
(regexp-match "q" "qwerty")
=> (q)
(regexp-match "([a-z]+)([0-9]+)" "qwerty1234")
=> (qwerty1234 qwerty 1234)

The optional argument offset allows to skip first offset characters from the beginning of matched string, for example:

(regexp-match "[a-z]+" "qwerty")  ;; offset=0
=> (qwerty)
(regexp-match "[a-z]+" "qwerty" 2)
=> (erty)

The optional eflag arguments may be any of the following symbols :

notbol
The match-beginning-of-line operator always fails to match (but see the compilation flag newline above). This flag may be used when different portions of a string are passed to regexec and the beginning of the string should not be interpreted as the beginning of the line.
noteol
The match-end-of-line operator always fails to match (but see the compilation flag newline above)
(define rexp(regexp "^qwerty"))
(regexp-match rexp "qwerty")  ;; BOL matches as usual
=> ("qwerty")

(regexp-match-positions rexp "qwerty" 0 'notbol)
=> #f                  ;; BOL match suppressed

procedure: regexp-match-positions pattern rexp-or-string str::bstring #!optional offset::int => #f or pair

Same as regexp-match, but returns the matched substrings position inside the source string instead of substrings itself, for example:

(regexp-match-positions "q" "asdf")
=> #f
(regexp-match-positions "q" "qwerty")
=> ((0 . 1))
(regexp-match-positions "([a-z]+)([0-9]+)" "qwerty1234")
=> ((0 . 10) (0 . 6) (6 . 10))

procedure: regexp-replace* pattern src::bstring insert::bstring => bstring

Return copy of src string where all occurrences of pattern are replaces by insert string.

(regexp-replace* "[a-z]" "1a2b3c" " Letter ")
=> "1 Letter 2 Letter 3 Letter "

Note: no context replacements are currently implemented. For example:

(regexp-replace* "[a-z]" "1a2b3c" " Letter &")
=> "Letter &2 Letter &3 Letter &"

but not "1 Letter a2 Letter b3 Letter c", as one may expect.

MzScheme compatibility module

This section describes the mzcompat module, which provides a few procedures to reuse the code written for MzScheme interpreter.

The mzcompat module is optional and is disabled by default. To enable, call configure with --with-compat.

To let you detect whether you have mzcompat module included from inside the interpreted code, the 'mzscheme-compat symbol is defined through the register-eval-srfi! construct, so you can test it with cond-expand. For example, the common library test script conditionally includes the regexp-test call:

(cond-expand (mzscheme-compat (mzscheme-test))
	     (else (print "MzScheme compatibility is disabled by configure")))

macro: case-lambda patterns

The simple analog of match-lambda construction. Expands to lambda-functions with variable number of arguments. The execution flow depends on number of arguments only only.

Example:

(define print-args
  (case-lambda
   (()
    (print "no args given"))
   ((a)
    (print "one argument only: " a))
   (args
    (print "a number of arguments is: "(length args)))))

(print-args)
-| no args given
(print-args 'one)
-| one argument only: ONE
(print-args 'one 'two 'three)
-| a number of arguments is: 3

inline procedure: load-relative-extension fname::bstring

Does nothing in Bigloo

procedure: make-parameter value #!optional filter => procedure

Creates a closure, which being called without arguments returns the value value, being called with one argument, sets the variable value to new value. If filter argument of type procedure is provided, the new value is passed to that procedure, and procedure return is stored in value variable.

(define my-value (make-parameter 0))
=> #<procedure:400edad0.-1>
(my-value)
=> 0
(my-value 1)
(my-value)
=> 1

;; the following procedure always converts its argument
;; to string before remembering it

(define my-string-value
  (make-parameter
   ""
   (lambda(o)
     (cond((string? o)
	   o)
	  ((number? o)
	   (number->string o))
	  (else(error "my-string-value" "invalid argument"o))))))

(my-string-value 1)
(pp(my-string-value))
-| #"1"

In MzScheme parameters have their own type and are scoped to execution threads. Since Bigloo does not provide multi-threading, in Bigloo parameters are just procedures.

inline procedure: directory-exists? path::bstring => #unspecified

Alias to Bigloo directory? procedure

procedure: make-directory path::bstring #!optional mask::int

Create the new directory path with access mask mask. The default value of mask is #o0777.

procedure: read-string #!optional count port => int

Read at most count characters from port. Unlimited number of characters is read from current input port by default.

procedure: current-directory #!optional newdir

Get or set the application process current directory.

(current-directory)
=> /usr/wowa/jet.projects/development/bigloo-lib-0.12/docs

procedure: build-path dir::bstring chunks => #unspecified

Construct the directory name from path elements chunks. Each chunk may be the path by itself, i.e. include the slash character. Chunk should not start with slash character, i.e. all sub-paths must be relative.

Example:

(build-path "/a/b/c" "d/e/f" "y")
=> "/a/b/c/d/e/f/y"

(build-path "/a/b/c" "/d/e/f" "y")
error--> absolute paths cannot be appended: /d/e/f

SRFI-1 List Library

TBD

SRFI-13 String Library

Bigloo-lib provides a limited support for string-lib, the SRFI-13 string library. The limitations are as follows:

The rest of this chapter is based mostly on original SRFI document, copyrighted by Olin Shivers. The original SRFI documnet copyright statement you will find at the end of the chapter.

Procedure specifications

In the following procedure specifications:

Passing values to procedures with these parameters that do not satisfy these types is an error.

Predicates

procedure: string-null? s::bstring => bool

Is s the empty string?

(string-null? "")
=> #t

procedure: string-every pred::procedure s::string #!optional start end

Checks to see if predicate pred is true of every character in S, proceeding from left (index start) to right (index end).

If STRING-EVERY returns true, the returned true value is the one produced by the final application of pred to S[end]. If STRING-EVERY is applied to an empty sequence of characters, it simply returns #t.

procedure: string-any pred::procedure s::string #!optional start end

Checks to see if predicate pred is true of any character in S, proceeding from left (index start) to right (index end).

If STRING-ANY returns true, the returned true value is the one produced by the application of pred.

(string-every values "qwerty")
=>

Constructors

procedure: string-tabulate proc::procedure len::int => bstring
proc is an integer->char procedure. Construct a string of size len by applying proc to each index to produce the corresponding string element. The order in which proc is applied to the indices is not specified.

Example:

(string-tabulate (lambda(i)(integer->char(+fx i 32))) 20)
=> " !\"#$%&'()*+,-./0123"

List & string conversion

procedure: string->list s::bstring #!optional start end => pair-nil

string->list returns a newly allocated list of the characters that make up the given string. list->string returns a newly allocated string formed from the characters in the list char-list, which must be a list of characters. string->list and list->string are inverses so far as equal? is concerned.

string->list is extended from the R5RS definition to take optional start/end arguments.

(string->list "asdf")
=> (#\a #\s #\d #\f)

procedure: reverse-list->string char-list::pair-nil => bstring

An efficient implementation of (compose string->list reverse):

(reverse-list->string '(#\a #\B #\c))
=> "cBa"

This is a common idiom in the epilog of string-processing loops that accumulate an answer in a reverse-order list. (See also reverse-string-concatenate for the "chunked" variant.)

procedure: string-join string-list::pair-nil #!optional delimiter grammar => bstring

This procedure is a simple unparser - it pastes strings together using the delimiter string.

The grammar argument is a symbol that determines how the delimiter is used, and defaults to 'infix.

The delimiter is the string used to delimit elements; it defaults to a single space " ".

Example:

(join-strings '("foo" "bar" "baz") ":")         => "foo:bar:baz"
(join-strings '("foo" "bar" "baz") ":" 'suffix) => "foo:bar:baz:"

;; Infix grammar is ambiguous wrt empty list vs. empty string,
(join-strings '()   ":") => ""
(join-strings '("") ":") => ""

;; but suffix & prefix grammars are not.
(join-strings '()   ":" 'suffix) => ""
(join-strings '("") ":" 'suffix) => ":"

Selection

procedure: string-copy s::bstring #!optional start end => bstring

string-copy is extended from its R5RS definition by the addition of its optional start/end parameters. In contrast to SUBSTRING/SHARED, it is guaranteed to produce a freshly-allocated string.

Use string-copy when you want to indicate explicitly in your code that you wish to allocate new storage; use SUBSTRING/SHARED when you don't care if you get a fresh copy or share storage with the original string.

Example:

(string-copy "Beta substitution") => "Beta substitution"
(string-copy "Beta substitution" 1 10) 
=> "eta subst"
(string-copy "Beta substitution" 5) => "substitution"

procedure: substring/shared s::bstring #!optional start end => bstring

substring/shared returns a string whose contents are the characters of s beginning with index start (inclusive) and ending with index end (exclusive). It differs from the R5RS substring in two ways:

Example:

(let((s "Beta substitution"))
  (eq?(substring/shared s 0)s))
=> #t

procedure: string-copy! target::bstring tstart s #!optional start end => bstring

Copy the sequence of characters from index range (start,end) in string s to string target, beginning at index tstart. The characters are copied left-to-right or right-to-left as needed -- the copy is guaranteed to work, even if target and s are the same string.

It is an error if the copy operation runs off the end of the target string, e.g.

(string-copy! (string-copy "Microsoft") 0
"Regional Microsoft Operating Companies") error-->

Note: though the result of string-copy! is defined as unspecified by SRFI document, the implementation always returns the target argument.

Example:

(string-copy! "qwerty" 2 "asdf")
=> "qwasdf"

procedure: string-take s::bstring nchars::int => bstring

string-take returns the first ncharsof s;

If this procedure produces the entire string, it may return either s or a copy of s; in some implementations, proper substrings may share memory with s.

Example:

(string-take "Pete Szilagyi" 6) => "Pete S"

It is an error to take more characters than are in the string:

(string-take "foo" 37) error-->

inline procedure: string-drop s::bstring nchars::int => bstring

string-drop returns all but the first ncharsof s.

If this procedure produces the entire string, it may return either s or a copy of s; in some implementations, proper substrings may share memory with s.

Example:

(string-drop "Pete Szilagyi" 6) => "zilagyi"

It is an error to drop more characters than are in the string:

(string-drop "foo" 37) error-->

procedure: string-take-right s::bstring nchars::int => bstring

string-take-right returns the last ncharsof s.

If this procedure produces the entire string, it may return either s or a copy of s; in some implementations, proper substrings may share memory with s.

Example:

(string-take-right "Beta rules" 5) => "rules"

It is an error to take more characters than are in the string:

(string-take-right "foo" 37) error-->

procedure: string-drop-right s::bstring nchars::int => bstring

string-drop-right returns all but the last ncharsof s.

If this procedure produces the entire string, it may return either s or a copy of s; in some implementations, proper substrings may share memory with s.

Example:

(string-drop-right "Beta rules" 5) => "Beta "

It is an error to drop more characters than are in the string:

(string-drop-right "foo" 37) error-->

procedure: string-pad s::bstring len::int #!optional char start end => bstring

Build a string of length len comprised of s padded on the left by as many occurrences of the character char as needed. If s has more than len chars, it is truncated on the left to length len. char defaults to #\space.

If len <= end - start, the returned value is allowed to share storage with s, or be exactly s (if len = end - start).

Example:

(string-pad     "325" 5) => "  325"
(string-pad   "71325" 5) => "71325"
(string-pad "8871325" 5) => "71325"

procedure: string-pad-right s::bstring len::int #!optional char start end => bstring

Build a string of length len comprised of s padded on the right by as many occurrences of the character char as needed. If s has more than len chars, it is truncated on the right to length len. char defaults to #\space.

If len <= end - start, the returned value is allowed to share storage with s, or be exactly s (if len = end - start).

Example:

(string-pad-right     "325" 5) => "325  "
(string-pad-right   "71325" 5) => "71325"
(string-pad-right "8871325" 5) => "88713"

procedure: string-trim s::bstring #!optional char/char-set/pred start end => bstring

The string-trim, string-trim-right, string-trim-both procedures trim s by skipping over all characters on the left / on the right / on both sides that satisfy the second parameter char/char-set/pred:

char/char/set-pred defaults to the character set char-set:whitespace defined in SRFI-14.

If no trimming occurs, these functions return s.

Example:

(string-trim #"  The outlook wasn't brilliant,  \n\r")
=> #"The outlook wasn't brilliant,  \n\r"

procedure: string-trim-right s::bstring #!optional char/char-set/pred start end => bstring

See description of string-trim.

Example:

(string-trim-right #"  The outlook wasn't brilliant,  \n\r")
=> #"  The outlook wasn't brilliant,"

procedure: string-trim-both s::bstring #!optional char/char-set/pred start end => bstring

See description of string-trim.

Example:

(string-trim-both #"  The outlook wasn't brilliant,  \n\r")
=> #"The outlook wasn't brilliant,"

Modification

procedure: string-fill! s::bstring char::char #!optional start end

Stores char in every element of s and returns (in this implementation only) the s string.

string-fill! is extended from the R5RS definition to take optional start/end arguments.

Example:

(let((s "12345678"))
  (string-fill! s #\space 2 4)
  s)
=> "12  5678"

Comparison

These procedures are the lexicographic extensions to strings of the corresponding orderings on characters. For example, STRING< is the lexicographic ordering on strings induced by the ordering CHAR<? on characters. If two strings differ in length but are the same up to the length of the shorter string, the shorter string is considered to be lexicographically less than the longer string.

The optional start/end indices restrict the comparison to the indicated substrings of s1 and s2.

string-ci=, string-ci<>, string-ci<, string-ci>, string-ci<= and string-ci>= procedures are case-insensitive variants of string=, string<>, string<, string>, string<= and string>= correspondingly.

Comparison is simply done on individual code-points of the string. True text collation is not handled by this SRFI.

Case-insensitive comparison is done by case-folding characters with the operation (char-downcase (char-upcase c))

procedure: string= s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test strings for equality. See notes at the beginning of this section.

procedure: string<> s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test strings for inequality. See notes at the beginning of this section.

procedure: string< s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is less than s2 string. See notes at the beginning of this section.

procedure: string> s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is greater than s2 string. See notes at the beginning of this section.

procedure: string<= s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is less than or equal to s2 string. See notes at the beginning of this section.

procedure: string>= s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is greater than or equal to s2 string. See notes at the beginning of this section.

procedure: string-ci= s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test strings for equality case-insensitive. See notes at the beginning of this section.

procedure: string-ci<> s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test strings for inequality case-insensitive. See notes at the beginning of this section.

procedure: string-ci< s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is less than s2 string case-insensitive. See notes at the beginning of this section.

procedure: string-ci> s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is greater than s2 string case-insensitive. See notes at the beginning of this section.

procedure: string-ci<= s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is less than or equal to s2 string case-insensitive. See notes at the beginning of this section.

procedure: string-ci>= s1::bstring s2::bstring #!optional start1 end1 start2 end2 => bool

Test if s1 string is greater than or equal to s2 string case-insensitive. See notes at the beginning of this section.

procedure: string-hash s::bstring #!optional bound start end => int

Compute a hash value for the string s. bound is either #f or a non-negative exact integer. If an integer, it gives the target range of the hash function -- the returned value will be in the range [0,bound].

If bound is either #f or not given, the implementation may use an implementation-specific default value, which might be chosen, for instance, to map all strings into the range of integers that can be efficiently represented.

The optional start/end indices restrict the hash operation to the indicated substring of s.

Invariants: (<= 0 (string-hash s b) (- b 1))

(string=    s1 s2)  =>  (= (string-hash s1 b)    (string-hash s2 b))

procedure: string-hash-ci s::bstring #!optional bound start end => int

string-hash-ci is the case-insensitive variant of string-hash.

Invariants: (<= 0 (string-hash-ci s b) (- b 1))

(string-ci= s1 s2)  =>  (= (string-hash-ci s1 b) (string-hash-ci s2 b))

Prefixes & suffixes

procedure: string-prefix-length s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Return the length of the longest common prefix of the two strings. This is equivalent to the "mismatch index" for the strings (modulo the starti index offsets).

The optional start/end indices restrict the comparison to the indicated substrings of s1 and s2.

Example:

(string-prefix-length "qwertyasdf" "qwertypoiuy")
=> 6

procedure: string-suffix-length s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Return the length of the longest common suffix of the two strings. This is equivalent to the "mismatch index" for the strings (modulo the starti index offsets).

The optional start/end indices restrict the comparison to the indicated substrings of s1 and s2.

Example:

(string-prefix-length "asdfqwerty" "poiuqwerty")
=> 6

procedure: string-prefix-length-ci s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Case-insensitive variant of string-prefix-length.

procedure: string-suffix-length-ci s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Case-insensitive variant of string-suffix-length.

procedure: string-prefix? s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Is s1 a prefix of s2?

Example:

(string-prefix? "qwerty" "qwertyasdf"
=> #t

procedure: string-suffix? s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Is s1 a suffix of s2?

Example:

(string-prefix? "qwerty" "asdfqwerty"
=> #t

procedure: string-prefix-ci? s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Case-insensitive variant of string-prefix?.

procedure: string-suffix-ci? s1::bstring s2::bstring #!optional start1 end1 start2 end2 => int

Case-insensitive variant of string-suffix?.

Searching

procedure: string-index s::bstring char/char-set/pred #!optional start end => int or #f

string-index searches through the string from the left, returning the index of the first occurrence of a character which

If no match is found, the functions return #f.

The start and end parameters specify the beginning and end indices of the search; the search includes the start index, but not the end index. The first index considered is end-1.

Example:

=>

procedure: string-index-right s::bstring char/char-set/pred #!optional start end => int or #f

string-index-right searches through the string from the right, returning the index of the first occurrence of a character which

If no match is found, the functions return #f.

The start and end parameters specify the beginning and end indices of the search; the search includes the start index, but not the end index. The first index considered is start.

Example:

=>

procedure: string-skip s::bstring char/char-set/pred #!optional start end => int or #f

The string-skip functions is similar to string-index, but uses the complement of the criteria: is searches for the first char that *doesn't* satisfy the test. E.g., to skip over initial whitespace, say

(cond ((string-skip s char-set:whitespace) =>
  (lambda (i)
    ;; (string-ref s i) is not whitespace.
    ...)))

procedure: string-skip-right s::bstring char/char-set/pred #!optional start end => int or #f

The string-skip-right functions is similar to string-index-right, but uses the complement of the criteria: is searches for the first char that *doesn't* satisfy the test.

procedure: string-count s char/char-set/pred #!optional start end

Example:

=>

procedure: string-contains s1::bstring s2::bstring #!optional start1 end1 start2 end2

Example:

=>

procedure: string-contains-ci s1 s2 #!optional start1 end1 start2 end2

Example:

=>

procedure: string-titlecase s #!optional start end

Example:

=>

procedure: string-titlecase! s #!optional start end

Example:

=>

procedure: string-upcase s #!optional start end => bstring

Example:

=>

procedure: string-upcase! s #!optional start end

Example:

=>

procedure: string-downcase s #!optional start end => bstring

Example:

=>

procedure: string-downcase! s #!optional start end

Example:

=>

procedure: string-reverse s #!optional start end => bstring

Example:

=>

procedure: string-reverse! s #!optional start end

Example:

=>

procedure: string-concatenate string-list::pair-nil => bstring

Example:

=>

procedure: string-concatenate/shared string-list::pair-nil => bstring

Example:

=>

procedure: string-append/shared string-list => bstring

Example:

=>

procedure: reverse-string-concatenate string-list #!optional final-string end => bstring

Example:

=>

procedure: reverse-string-concatenate/shared string-list #!optional final-string end => bstring

Example:

=>

procedure: string-map proc s #!optional start end => bstring

Example:

=>

procedure: string-map! proc s #!optional start end

Example:

=>

procedure: string-fold kons knil s #!optional start end

Example:

=>

procedure: string-fold-right kons knil s #!optional start end

Example:

=>

procedure: string-unfold p f g seed #!optional base make-final => bstring

Example:

=>

procedure: string-unfold-right p f g seed #!optional base make-final => bstring

Example:

=>

procedure: string-for-each proc s #!optional start end

Example:

=>

procedure: xsubstring s from #!optional to start end => bstring

Example:

=>

procedure: string-xcopy! target tstart s sfrom #!optional sto start end

Example:

=>

procedure: string-replace s1 s2 #!optional start1 end1 start2 end2 => bstring

Example:

=>

procedure: string-tokenize s #!optional token-set start end => pair-nil

Example:

=>

procedure: string-filter s char/char-set/pred #!optional start end => bstring

Example:

=>

procedure: string-delete s char/char-set/pred #!optional start end => bstring

Example:

=>

procedure: string-parse-start+end proc s args

Example:

=>

procedure: string-parse-final-start+end proc s args

Example:

=>

procedure: check-substring-spec proc s start end

Example:

=>

procedure: substring-spec-ok? s start end => bool

Example:

=>

procedure: make-kmp-restart-vector c= s #!optional start end => vector

Example:

=>

procedure: kmp-step pat rv c= c i

Example:

=>

procedure: string-search-kmp pat rv c= i s #!optional start end => int

Example:

=>

Formatting output

Small subset of Common Lisp string formatting utilities. The procedures are compatible with such in MzScheme.

procedure: fprintf port #!optional template::bstring #!rest args => unspecified

fprintf outputs its template argument, using the following substitutions:

Example:

(fprintf (current-output-port) "the result was ~s" "unknown")
-| the result was "unknown"

procedure: printf #!optional #!rest => #unspecified
printf does the same as fprintf does, but sends all output to current-output-port

Example:

(printf "the result was ~s" "unknown")
-| the result was "unknown"

procedure: format #!optional #!rest => bstring
printf does the same as fprintf does, but sends all output to string

Example:

(format "the result was ~s" "unknown")
=> "the result was \"unknown\""

Miscellaneous stuff

procedure: environ => pair-nil

Obtain the current environment as a list of name/value pairs. For example:

(pp(environ))
-| ((#"_" . #"/usr/local/bin/bigloo-common")
 (#"CONFIG_SITE" . #"/home/wowa/.autoconf")
 (#"HOME" . #"/home/wowa")
 (#"TERM" . #"emacs")
 (#"OSTYPE" . #"solaris2.7")
...

Probably you'll need this procedure for debugging only. Use getenv and putenv Bigloo procedures instead.

procedure: putenv name::bstring value::bstring
The putenv procedure makes the value of the environment variable name equal to value by altering an existing variable or creating a new one.
procedure: errno #!optional value => int

Read or set libc errno variable.

(errno) => 0
(open "nonexistentfile")
-| *** ERROR:bigloo:open:
file opening error -- nonexistentfile
(errno) => 2
(errno 0)

procedure: mmap length #!key fd prot flags offset
=> bstring

The mmap procedure asks to map length bytes starting at offset offset from the file (or other object) specified by fd into memory.

length::int
The number of bytes to map. Since the mmap result is returned in form of Bigloo bstring, the length really passed to libc mmap() includes the bstring object overhead too.
#!key fd
Descriptor of file to map. Since the result always includes the overhead of bstring object, this mmap implementation is practical useless if you want to map anything but dummy devices such a /dev/zero. If fd argument is omitted, the /dev/zero device is used to get a file descriptor.
#!key prot
List of protection flag symbols. The valid values are:
exec
Pages may be executed.
read
Pages may be read.
write
Pages may be written.
none
Pages may not be accessed.
#!key flags
List of mmap options. The valid values are fixed, shared and private. The values denywrite, executable and anonymous are also valid but have no effect on systems other than Linux. See the mmap manual pages for details.
#!key offset
Byte offset from beginning of file to be mapped.

This procedure may be useful if you want to temporary allocate the huge amount of memory which should be released and returned to operating system. Besides, the memory allocated with mmap is not accessed until you really use it, so the allocation is very fast.

In the following example we will illustrate this feature. First we measure how much memory the application process consumes, using the ps command:

bash$ ps u 17012
USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COM
wowa     17012  2.1  5.7  7108 2236 ttyp4    S    20:32   0:00 /us

Then we mmap 16M of memory:

(define mem (mmap #x1000000))

As we may expect the process virtual memory increases now by 16M:

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COM
wowa     17012  0.1  5.8 23496 2260 ttyp4    S    20:32   0:00 /us

Now we do the unmap:

(munmap mem)

And measure the process memory again:

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COM
wowa     17012  0.0  5.7  7108 2252 ttyp4    S    20:32   0:00 /us

procedure: munmap mem::bstring

Release memory mapped by mmap.

procedure: stat what => stat

Return information about the specified file. The argument what should be either the name of the file or open file descriptor.

The result is of type stat, for which the following read accessor procedures are defined:

st-mode
file protection mode. See open procedure description.
st-uid
User ID of the file's owner
st-gid
Group ID of the file's group
st-size
File size in bytes
st-atime::double
Time of last access
st-mtime::double
Time of last data modification
st-ctime::double
Time of last file status change
(let((st(stat "/etc/passwd"))
     (pt(lambda(seconds)(strftime(localtime seconds)))))
  (print "User ID:         " (stat-st-uid st))
  (print "Group ID:        " (stat-st-gid st))
  (print "Size:            " (stat-st-size st))
  (print "Accessed:        " (pt(stat-st-atime st)))
  (print "Data modified:   " (pt(stat-st-mtime st)))
  (print "Status modified: " (pt(stat-st-ctime st))))
-| User ID:         0
-| Group ID:        0
-| Size:            1071
-| Accessed:        04/22/00 22:20:00
-| Data modified:   03/21/00 21:44:32
-| Status modified: 03/21/00 21:44:32

procedure: isatty fd::int => bool

Test for a terminal device. Argument what should be open file descriptor. Example:

(isatty(open "/dev/tty"))
=> #t
(isatty(open "/etc/passwd"))
=> #f

procedure: open file-name::string . oflag => int

Open file name file-name, return the integer file descriptor.

The optional oflag arguments may be any of the following symbols: rdonly, wronly, rdwr, append, nonblock, creat, trunc, excl or noctty. See open(2) manual page for the meaning of the flag values.

Example:

(let*((fd(open "/etc/passwd"))
      (bytes(fdread fd 100)))
  (close fd)
  bytes)
-| root:XXXXXXXXX:0:0:root:/root:/bin/bash
-| bin:*:1:1:bin:/bin:
-| daemon:*:2:2:daemon:/sbin:
-| adm:*:3:4

procedure: close fd::int => int

Close a file descriptor, so that it no longer refers to any file and may be reused.

procedure: fdread fd::int size::long => bstring

Read the specified number of bytes size using the open file descriptor fd by calling libc read() function.

procedure: fdwrite fd::int str::bstring => int

Try to write the str to specified file descriptor. Return the number of bytes really wrote.

procedure: getppid => int

getppid returns the process ID of the parent of the current process.

procedure: getpid => int

getpid returns the process ID of the current process. (This is often used by routines that generate unique temporary file names.)

procedure: getlogin => bstring or #f

The getlogin procedure returns a pointer to the login name as found in /var/adm/utmp. It may be used in conjunction when the same user ID is shared by several login names. See getlogin(3c) manual page for details.

If getlogin is called within a process that is not attached to a terminal, it returns #f. In later case use the cuserid procedure instead.

As example of how the getlogin works, we first run the utility from non-terminal xemacs window, and then from the rlogin shell:

bigloo-common
1:=> (getlogin)
=> #f
1:=> 
bash-2.03$ rlogin localhost
Password: 
Last login: Thu May  4 15:19:55 from localhost
bash-2.03$ bigloo-common
bigloo-common
1:=> (getlogin)
(getlogin)
=> wowa
1:=> 
bash-2.03$ 

procedure: getpwnam what::symbol #!optional name => #unspecified

The getpwnam procedure is used to obtain password entries. The what arguments controls which entry will be returned by the procedure. The valid values of what are:

name
user's login name (string)
uid
user's uid (integer)
gid
user's gid (integer)
gecos
typically user's full name (string)
dir
user's home dir (string)
shell
user's login shell (string)

The optional name argument may be integer user ID or string user name of the user in question. If omitted, the name of current user as returned by cuserid is used.

(getpwnam 'shell)
=> "/usr/bin/bash"
(getpwnam 'dir "adm")
=> "/var/adm"

procedure: cuserid => bstring
The cuserid procedure generates a character-string representation of the login name under which the owner of the current process is logged in.
(cuserid)
=> wowa

procedure: strxfrm src::bstring => bstring

The strxfrm procedure transforms the src string into a form such that the result of memcmp on two strings that have been transformed with strxfrm is the same as the result of locale-sensitive string-comparing procedures (string=?, string<? etc.) on the two strings before their transformation. (See setlocale).

(setlocale 'all "ru_RU.KOI8-R")
(pp(strxfrm "qwerty"))
-| #"\304\210\304\232\303\244"
(setlocale 'all "C")
(pp(strxfrm "qwerty"))
-| #"qwerty"

procedure: crypt passwd::bstring salt::bstring => bstring
crypt(3) is the password encryption function. It is based on the Data Encryption Standard algorithm with variations intended (among other things) to discourage use of hardware implementations of a key search.

passwd is a user's typed password.

salt is a two-character string chosen from the set [a-zA-Z0-9./]. This string is used to perturb the algorithm in one of 4096 different ways.

See the man pages for crypt(3).

(crypt "my-secret-password" "joe")
 => "jonhWNi0AD56g"

procedure: md5 data::bstring => bstring

Calculate digest using md5 algorithm. Return 16-byte long character string. For example:

(pp(md5 "qwerty"))
-| #"\330W\216\337\204X\316\006\373\305\273v\245\214\\\244"

As you may see, the result includes unprinted characters, so usually md5 call result need to be printed in hex with string->hex:

(string->hex(md5 "qwerty"))
=> "d8578edf8458ce06fbc5bb76a58c5ca4"

procedure: char->hex c::uchar => bstring

char->hex prints character c to hexadecimal string, for example:

(char->hex #\newline)
=> "0a"

procedure: string->hex str::bstring => bstring

string->hex prints string str using char->hex conversion, for example:

(string->hex "Hello")
=> "48656c6c6f"

iconv - charset conversion procedures

This section describes the interface to iconv - a set of libc functions for character set conversion. See iconv(3) manual page for details.

The iconv module is optional, i.e. you can disable its compilation by using --without-iconv flag for configure. Or the configure may detect that your libc does not have iconv functions and automatically disable this feature.

To let you detect whether character conversion is supported by the library from inside the interpreted code, the 'iconv symbol is defined through the register-eval-srfi! mechanism, so you can check it with cond-expand.

foreign type: iconv

The structure holding the information about the source and target character sets and current state of conversion.

procedure: iconv-open tocode::string fromcode::string => iconv

The iconv-open procedure returns a conversion descriptor that describes a conversion from the codeset specified by the fromcode argument to the codeset specified by the tocode argument. For state-dependent encodings, the conversion descriptor will be in a codeset-dependent initial shift state, ready for immediate use with the iconv procedure.

(iconv-open "KOI8-R" "UTF-8")
=> #<foreign:ICONV:21410>

procedure: iconv cd::iconv src::bstring => bstring

The iconv procedure converts the sequence of characters from one code set, in the array specified by src, into a sequence of corresponding characters in another code set, in the return string. The code sets are those specified in the cd argument.

procedure: make-iconv from::bstring to::bstring => #unspecified

Create codeset conversion procedure.

In the following example my Russian name in KOI8-R (one of Cyrillic most widely used Russian code sets) is converted into UTF-8 encoding.

(pp((make-iconv "KOI8-R" "UTF-8")"÷Ï×Á"))
=> #"\320\222\320\276\320\262\320\260"

Note: The object of iconv type created in course of make-iconv call is never (and currently cannot be) released.

procedure: iconv-close cd::iconv => int

Release the cd object and all related resources.

Time-related procedures

This section describes types and procedures, dealing with time. They let you measure calendar and UNIX process time, print time using locale settings, and also do some arithmetics with times and dates.

foreign: tm

A wrapper for C library struct tm structure, broken-down time representation.

The following read accessors are defined:

tm-tm-sec
The number of seconds after the minute, normally in the range 0 to 59, but can be up to 61 to allow for leap seconds.
tm-tm-min
The number of minutes after the hour, in the range 0 to 59.
tm-tm-hour
The number of hours past midnight, in the range 0 to 23.
tm-tm-mday
The day of the month, in the range 1 to 31.
tm-tm-mon
The number of months since January, in the range 0 to 11.
tm-tm-year
The number of years since 1900.

See also strftime procedure description to print these objects in human-readable form.

procedure: make-tm => tm

Allocate an uninitialized object of type tm. This procedure is used internally by other time-manipulation procedures. Perhaps, you do not want to call it explicitly.

procedure: gmtime seconds::double #!optional tm::tm => tm

Interface for C runtime gmtime call. Take number of seconds elapsed since 00:00:00 on January 1, 1970, Coordinated Universal Time (UTC), and convert it to broken-down time representation, expressed in Coordinated Universal Time (UTC).

(strftime(gmtime(current-seconds)))
=> 04/16/00 17:56:54

procedure: localtime seconds::double #!optional tm::tm => tm

Same as gmtime, but the result is expressed relative to the user's specified time zone.

The procedure also sets the values returned by tzname and timezone and daylight.

procedure: timezone => int

Return number of seconds west of UTC. For example, here in Moscow:

(timezone)
=> -10800
(/ (timezone) 3600)
=> -3

procedure: tzname => 2 scheme values

Return names of time zone as two scheme values. See tzset manual pages for details. The values are also set by localtime. For example:

(define(tzprint)
  (multiple-value-bind
   (name name1)
   (tzname)
   (print name ", " name1)))

(tzprint)
(localtime 0.0) ;; this call for side effects only
(tzprint)
=> GMT, GMT
MSK, MSD

procedure: daylight => bool

A flag that indicates whether daylight saving time is in effect at the time described. Return positive value if daylight saving time is in effect, zero if it is not, and negative value if the information is not available.

procedure: strftime tm::tm #!optional format::bstring => bstring

The strftime procedure formats the broken-down time tm according to the format specification. If format argument is omitted, the "%x %X" string is used to format output. See strftime manual pages for details.

Examples:

(define now(localtime(current-seconds)))
=> #<foreign:TM:806dbd0>

(strftime now)
"04/16/00 23:38:14"

(strftime now "%Y%m%d%H%M%S")
"20000416233814"

procedure: current-seconds => double

Number of seconds as returned by gettimeofday C runtime call. The name of procedure chosen to be compatible with analogous procedure in MzScheme.

Example:

(current-seconds)
=> 955914618.43757

procedure: current-milliseconds => double

Defined as:

(define(current-milliseconds::double)
  (* (current-seconds) 1000.0))

procedure: ctime seconds::double => bstring

Interface for ctime_r C runtime procedure. Return 26-character string with fixed-format time representation, for example:



(ctime (current-seconds)) => "Mon Apr 17 12:28:54 2000"

procedure: mktime year month day #!optional hour minute second => tm

Constructor for objects of tm type. The arguments are:

year::int
The year, including the century number
month::int
Month in an year number from 1 to 12
day::int
Day in a month number
hour::int
Hour in day number from 0 to 23. Default is 0.
minute::int
Minute in a hour number from 0 to 59. Default is 0.
second::int
Second in a minute number. Default is 0.

Example:

(strftime(mktime 1960 12 27))
=> "12/27/60 00:00:00"

procedure: read-date fmt::bstring port::input-port => tm

Read date/time from port port using the specification fmt. The format of the specification is a subset that of strftime specification (only %S, %M, %H, %I, %d, %m, %Y, %p and %% escape sequences are supported).

Example:

(strftime
  (read-date "%Y%m%d%H%M%S"
             (open-input-string "20000416233814")))
=> "04/16/00 23:38:14"

procedure: times #!optional which? => long

The times procedure measures various time-accounting information. Depending on value of argument which? of symbol type it returns the following values:

utime
User time
stime
System time
cutime
User time of children
cstime
System time of children

If argument which? is absent, the times procedure returns five scheme values: the number of clock ticks that have elapsed since the system has been up, and all the values just described, i.e. utime, stime, cutime and cstime.

All the values are measured in system clock ticks. The length of one tick is system-dependent. Number of clocks per second may be obtained by calling clocks-per-second procedure.

Examples:

Here number of system clock ticks from the system start-up is measured:

(times)
=> 1720216

The same value but now in seconds:

(/(times)(clocks-per-second))
=> 17340.09

The following example is a complete utility that measures the external process times.

The initial times are measured and stored in local variables total, cutime and cstime, external process is spawned using bigloo run-process procedure See Info file `bigloo', node `Process support'. After the spawned process is finished, the statistics is printed to standard error port in form similar that of Unix time utility.

#!/usr/local/bin/bigloo-common

(multiple-value-bind
 (total utime stime cutime cstime)
 (times)
 (apply run-process
	(append (cddr(command-line))
		'(wait: #t)))
 (multiple-value-bind
  (ntotal nutime nstime ncutime ncstime)
  (times)
  (let((ticks(clocks-per-second))
       (user-ticks(- ncutime cutime))
       (system-ticks(- ncstime cstime))
       (elapsed-ticks(- ntotal total)))
    (fprintf
     (current-error-port)
     "~auser ~asystem ~aelapsed ~a%CPU~%"
     (/ user-ticks ticks)
     (/ system-ticks ticks)
     (/ elapsed-ticks ticks)
     (inexact->exact
      (*(/(+ user-ticks system-ticks) elapsed-ticks)100))))))

The utility usage example (provided the ./time is the script location):

bash$ ./time gzip -c /vmlinuz > /dev/null
1.17user 0.03system 1.2elapsed 100%CPU

procedure: tm->utctime time::tm => bstring

Print time argument in UTC time format.

(tm->utctime(localtime(current-seconds)))
=> 20000531123949Z

procedure: utctime->tm utc::bstring => tm
utc
(strftime(utctime->tm "20000531123949Z"))
=> 05/31/00 12:39:49

cgen - bigloo preprocessor

This section describes cgen -- the utility for creating bigloo interfaces to C libraries.

What is it for?

cgen allows you to create wrappers for external C functions and external C types, such as structures, enums, bit fields and opaque pointers.

cgen comes to you with bigloo-lib, and is automatically created before any bigloo-lib library is creates. All the external C interfaces in bigloo-lib are created with help of cgen.

Why not bigloo foreign interface?

In course of evaluation of the foreign interface, I found it not very suitable for the following reasons :

cgen was developed in hope to achieve the following goals :

On the other hand, Bigloo has excellent capabilities of creating any new types, using the type and coerce statements in module declaration. The only bad thing with it is that these capabilities are not documented at all (though the documented extern type interface is based upon that low-level layer).

cgen work is based upon these capabilities and it is alternative to Bigloo foreign interface.

How does it works

cgen is a preprocessor for bigloo scheme code. It takes one or more files with C interface specification as input and produces the readable scheme file on output. The specification itself is bigloo scheme text with some special constructs. As result of processing this constructs the new procedures and bigloo module declarations are created. All other scheme expressions are printed back into output without changes.

All the cgen input files have extension .defs in bigloo-lib, you may use it as cgen usage examples.

How to use it

TBD

Advanced afile utility

This package includes the advanced version of afile utility (included into Bigloo bee). The list improvements made is:

Bigloo SQL database interface

The RDBMS library is a set of miscellaneous types and procedures, allowing to access SQL databases from Bigloo application. The library has two layers: generic RDBMS system interface, implemented as small set of Bigloo classes, and set of back-ends, which provide the implementation in form of concrete class methods.

Usually the end-user application relies on generic API only, thus allowing to use different RDBMS system without changing a line in application code.

Currently the support for MySQL included. ODBC and INFORMIX support will be added in near future.

Object types

In this section specific for database driver types of objects are described. These types also are used in Scheme function prototypes declarations.

Bigloo class: connection

The objects of connection type describe the database connections.

Bigloo class: session

The objects of session type hold the data used in process of executing of SQL statements (the statement string, input and output bindings and state of execution). Every session belongs to only one connection.

Bigloo class: transaction

Theoretically, transactions are entities, which synchronize changes made in database through one or more connections. At the moment, there is no separate class for transaction objects (5).

Connection management

This section describes procedures for creating and releasing the database connections, and for transaction management.

RDBMS-connect: dbname #!optional username password #!key

This procedure creates and opens new database connection. The dbname is path to database (system specific string). The username and password are sometimes optional, if the underlying implementation allows use default values for them.

Instead every RDBMS implementation should supply its own version of connection-creation procedure. Prefix RDBMS in RDBMS-connect states for the name of implementation, for example, the name of procedure, that opens the MySQL connection, will be mysql-connect (6).

Method: connection dismiss!

This destroys the connection, and releases all connection's resources (7)

Method: rdbms-object error-string => string

Abstract method of error string obtaining. RDBMS connections and sessions may provide their own implementations.

Method: connection begin-transaction! => bool

This begins the transaction for connection. If transaction are not supported by underlying RDBMS, #f is returned.

Method: connection commit-transaction!

This method closes the transaction for connection (8).

Method: connection rollback-transaction!

This ends the transaction, revert all changes made since transaction's beginning (9).

Method: connection acquire => session

This creates new session for the given connection. (10).

Session management

Method: session cancel!

Cancel the query answering process, if any, make the session ready for executing.

Method: session dismiss! => #unspecified

This destroys the session object and releases all the session's resources

Method: session execute => bool

This executes previously prepared statement. If the answer set is implied by statement, then the answer stream is opened and #t is returned. Otherwise #f is returned.

Method: session prepare sql::bstring => bool

This prepares the SQL query text string for execution. The position of optional parameters is marked up with question mark sign. Returns same result as has-answer? method.

Method: session bind! bindings::pair-nil

This supplies the parameter values needed by previously prepared SQL statement. All the `question marks' in statement are subsequently substituted by vector elements.

Method: session has-answer? => bool

This answers #t if the answer set is implied by prepared statement (usually if the statement is of SELECT type).

Method: session fetch! => pair-nil

Fetch next record from the query answer stream and return it in form of scheme list object, or scheme null, if end of answer stream is reached.

Method: session describe => pair-nil

Get result set description as scheme list. Generally the format of result is system-dependent, but usually each column descriptors contains the following information:

For details see the documentation, supplied with particular implementation.

Example

In the following example, the connection with MySQL database named dept is established. Next, the table named person with columns named id, last_name and first_name is created and a few records inserted into the table. The contents of the table is retrieved back then and displayed. After that, the table is destroyed.

Here is the example :

(define connection (mysql-connect "dept" "me" "mySecretPassword"))
(define session (acquire connection))

(prepare session
"create table person (
  id          INTEGER PRIMARY KEY,
  last_name    CHAR(20),
  first_name   CHAR(20))")

(execute session)

(prepare session "insert into person values(?,?,?)")

(bind! session '(100 "Tsichevski" "Vladimir"))
(execute session)

(bind session '(101 "Taranoff" "Alexander"))
(execute session)

(bind session '(102 "Ananin" "Vladimir"))
(execute session)

(prepare session "select * from person")
(execute session)

(let loop ((answer-record(fetch session)))
  (if answer-record
      (begin
        (write answer-record)
        (newline)
        (loop (fetch session)))
      #f))

(prepare session "drop table person")
(execute session)

(dismiss session)
(dismiss connection)

The output of the program looks like this :

(100 "Tsichevski" "Vladimir")
(101 "Taranoff" "Alexander")
(102 "Ananin" "Vladimir")

Exceptions

The special class named rdbms-error is created for dealing with database exceptions. The instances of that class provide the application with (system-specific) error code and error message (11).

More examples

TBD

HTTP/CGI support

TBD

Generic tree interface

Bigloo class: node

Abstract bigloo class, the base class for tree node objects. Each node may have a number of named attributes. The attribute names are symbols, the values are usually strings. All the functionality provided as a set of generic procedures, the base node class objects do not hold any data.

Node attributes

generic procedure: node-atts self::node => pair-nil

List of node attributes. The generic function returns '().

generic procedure: node-add-attribute! self::node attname::symbol attvalue::bstring

Add the attribute named attname and value attvalue to node self. The generic procedure modifies the node attribute list using the node-atts-set! method.

abstract procedure: node-atts-set! self::node atts::pair-nil
Set the node attribute list. This method should be redefined in concrete subclasses.

generic procedure: node-attribute-string self::node attname::symbol => string or #f

Return the value of the first attribute of node self with name attname.

generic procedure: node-attribute-list self::node attname::symbol => pair-nil

Return the list of attributes of node self with name attname.

generic procedure: node-remove-attribute! self::node attname::symbol . attvalues

Remove the attributes of node self with name attname. If optional arguments attvalues are specified, only the attributes which values are within the attvalues list are removed.

generic procedure: node-replace-attribute! self::node attname::symbol . attvalues

Remove the attributes of node self with name attname. If optional arguments attvalues are specified, add new attributes with name attname and values attvalues. Otherwise the procedure effect is equivalent to that of node-remove-attribute!.

generic procedure: node-set-attribute! self::node attname::symbol attvalue::bstring

Set the value of specified attribute. Add the new attribute if necessary.

Node tree navigation

generic procedure: node-parents self::node => pair-nil

Get list of node parents or empty list for top nodes. The generic procedure returns an empty list.

generic procedure: node-parent self::node => node

Return first node as returned by node-parents, or self if node has no parents.

(let((self(make-node)))
  ;; generic node nether has parents
  (eq? self(node-parent self)))
=> #t

abstract procedure: node-parents-set! self::node parents::pair-nil

Set the node parents list. This method should be redefined in concrete subclasses.

generic procedure: node-root self::node => node

Return the topmost node of the node tree, recursively calling the node-parent.

generic procedure: node-ancestors self::node => pair-nil

Collect all the node-parents and their parents up to root node or nodes. Node self is also included into the list.

(let*((root(make-node))
      (child(make-dl-node (list root))))
  (node-ancestors child))
=> (#0=#|NODE| #|DL-NODE [PARENTS: (#0#)]|)

abstract procedure: node-children-set! self::node children::pair-nil

Set the node children list. This method should be redefined in concrete subclasses.

generic procedure: node-add-child! self::node child::node #!optional after::node

Insert child node child into list of node self children. If the concrete implementation supports ordering of the children, the optional after argument may be specified, to define the node insertion position. The generic procedure uses node-children-set! to do the insertion.

generic procedure: node-bind! self::node parent::node

Insert node self into the tree. The parent node is registered in self's parent list. The self node prepended to all parent's children lists using node-add-child!.

No checking for duplicates is performed.

(let*((parent(make-dl-node '()))
      (child(make-dl-node '())))
  (node-bind! child parent)
  parent)

generic procedure: node-bind-descendants! self::node

Do node-bind! for all descendants of node self.

generic procedure: node-children self::node => pair-nil

Return children list of self.

generic procedure: node-subtree self::node => pair

Return list including node self and all the self's descendants.

generic procedure: node-descendants self::node => pair-nil

Defined as:

(define-generic(node-descendants::pair-nil self::node)
  (cdr(node-subtree self)))

generic procedure: node-remove! self::node

Remove the node self from the tree. The meaning of this method is subclass implementation-dependent. The generic procedure does nothing.

generic procedure: node-siblings self::node => pair-nil

Return all the children of node returned by node-parent, excluding the node self.

generic procedure: node-rsiblings self::node => pair-nil

Right siblings of node. Return all the children of node returned by node-parent after the node self in children list.

generic procedure: node-lsiblings self::node => pair-nil

Left siblings of node. Return all the children of node returned by node-parent before the node self in children list.

generic procedure: node-ifollows self::node => node

Node that follows the node self or the self node if no node follows.

generic procedure: node-ipreced self::node => node

Node that precedes the node self or the self node if no node precedes.

generic procedure: node-next-hierarchy self::node => node

Return either the node immediately following self in sibling list, or the node following parent node of self, if self is the last node in the list of siblings.

generic procedure: node-prev-hierarchy self::node => node

Return either the node that immediately precedes self in sibling list, or the parent node of self, if self is the first node in the list of siblings.

Node naming and grove lookup

The concrete tree implementation may supply the mechanism for naming tree nodes to let the node be found given the path string is known. The described here naming scheme is based upon LDAP entries naming and used basically by LDAP library See section Bigloo LDAP interface.

Every node has its own Relative Distinct Name (RDN), which must be unique between node siblings. The node RDN along with RDNs of node ancestors form the full node path, which is called Distinct Name (DN). The DN is result of string concatenation of node RDN and RDNs of node ancestors, delimited by comma character.

This module provides the generic procedures for getting and setting node DNs and RDNs along with useful procedures for parsing DN strings.

abstract procedure: node-rdn self::node => bstring

Return the RDN (Relative Distinct Name) of node. The RDN must be unique between node siblings. This method should be redefined in concrete subclasses.

abstract procedure: node-modrdn! self::node newrdn::bstring #!optional deleteatt?

Change the RDN of the node self. Using of optional deleteatt? is specific for LDAP node implementation only.

generic procedure: node-dn self::node => bstring

Get the DN (Distinct Name) if the node self. The generic function constructs DN by concatenating the RDN's of all the ancestors of the node, beginning with the node self itself, delimited by comma character. This procedure is relevant mostly for LDAP nodes.

procedure: dn-parent s::bstring => #unspecified

Parse the DN string, return DN for parent node.

(dn-parent "uid=wowa,dc=jet,dc=msk,dc=ru")
=>  "dc=jet,dc=msk,dc=ru"

procedure: dn-rdn s::bstring => bstring
Parse the DN of the node self, return DN of parent node.
(dn-rdn "uid=wowa,dc=jet,dc=msk,dc=ru")
=>  "uid=wowa"

procedure: dn-relative dn::bstring base::bstring => #unspecified

`Subtract' two DNs, return the difference as a list of RDNs. Return #f if the dn string does not begins with the base string.

(dn-relative
  "s=r,cn=wowa,o=jet,c=ru"
  "o=jet,c=ru")
=> (#"cn=wowa" #"s=r")

generic procedure: node-lookup self::node dn::bstring => node or #f

Lookup node with the dn given in same grove as self. Return #f if not found.

procedure: node-lookup-global dn::bstring =>

Find node in a global node registry.

Other node procedures

generic procedure: node-data self::node => bstring

Some of classes derived from node class are assumed to redefine this method. The generic implementation concatenates the strings obtained by applying node-data to all the children of self.

See the examples in sgml-node description.

procedure: current-node #!optional value

current-node is parameter procedure See section Bigloo Common Library. Plays the role of global variable to store current position in any tree of nodes in end user applications. This procedure is defined for convenience only, none of the library functionality relies on it.

generic procedure: node-title self::node => bstring

Node printed name. It is assumed that subclasses provide its own implementation. By default try the value of cn attribute or uses bigloo class name of the node.

generic procedure: node-display self::node port::output-port

This procedure is called by object-display method for nodes. The generic procedure displays the string as returned by node-title.

generic procedure: node-valid? self::node => bool

The meaning of this method is subclass implementation-dependent. The generic procedure returns #t.

XML parser (expat interface)

This chapter describes the Bigloo interface to expat, the popular XML parser by James Clark. The original expat library may be obtained at http://www.jclark.com/xml/expat.html, or you can use repackaged for use with configure variant from ftp://bigloo-lib.sourceforge.net/pub/bigloo-lib/expat-1.1.tar.gz

TBD

xml2expat

xml2expat is a tool which converts XML text to Bigloo object file format. It is useful, for example, when working with XML templates to produce dynamic HTML pages or in any similar situation when all the XML files are known at the compilation time, so you do not need to add the XML support into you application.

TBD

GTK+ interface

This chapter describes the interface for GTK+, the Open Source Free Software GUI Toolkit, primarily developed for use with the X Window System. The most detailed information about GTK+ may be found at http://www.gtk.org.

The interface is designed after the popular guile-gtk analog, the GTK+ interface for using with guile scheme implementation. My intention was to make the interface as compatible with that of guile-gtk as possible in order to utilize the tutorials, examples and other software written for guile-gtk.

For generation of multiple interfaces to GTK+ functions the cgen utility was developed See section cgen - bigloo preprocessor, which was used to process the specification of GTK+ interface found in guile-gtk.

guile-gtk may be found at http://www.ping.de/sites/zagadka/guile-gtk/.

Testing the GTK interface

Since the main goal of GTK+ is to provide a graphical user interface, it is practically impossible to test it automatically. Instead, a test application was derived from analogous program provided with GTK+ (file gtk/testgtk.c in GTK+ distribution) and guile-gtk. Also this application may be used as a source of examples how to use bigloo-gtk.

testgtk program

The testgtk is port of testgtk.c provided with GTK+ distribution, to bigloo-gtk. Initially is was derived from testgtk.scm provided with guile-gtk. Now most of the text is redesigned, many tests made more up-to-date than the corresponding guile-gtk analogs.

All the original tests testgtk.c from latest GTK+ distribution are listed in main testgtk window, labels for whose that are still unimplemented are grayed.

The simplest way to run the testgtk is to process its source code by bigloo-bgtk driver program:

bigloo-bgtk ./testgtk.defs

but to make all the tests work, you probably have to compile and run binary executable:

make testgtk && ./testgtk

example programs

Bigloo-gtk provides a small set of examples, derived from whose provided in "GTK+ Tutorial". You'll find the examples in gtk/examples/ subdirectory. All the examples are shell scripts, though may be compiled. You need to install the package before running this examples.

Bigloo-gtk reference

Currently this reference guide of very far from completeness. Only selected calls are documented. Look at working tests code in testgtk.defs for example.

GDK Reference Manual

The gdk event object

procedure: gdk-event-type event::gdk-event => gdk-event-type
procedure: gdk-event-window event::gdk-event => gdk-window
procedure: gdk-event-send-event event::gdk-event => bool
procedure: gdk-event-visibility-state event::gdk-event => gdk-visibility-state
procedure: gdk-event-time event::gdk-event => int
procedure: gdk-event-x event::gdk-event => double
procedure: gdk-event-y event::gdk-event => double
procedure: gdk-event-pressure event::gdk-event => double
procedure: gdk-event-xtilt event::gdk-event => double
procedure: gdk-event-ytilt event::gdk-event => double
procedure: gdk-event-button event::gdk-event => int
procedure: gdk-event-button-state event::gdk-event => bool
procedure: gdk-event-is-hint event::gdk-event => bool
procedure: gdk-event-source event::gdk-event => gdk-input-source
procedure: gdk-event-deviceid event::gdk-event => int
procedure: gdk-event-x-root event::gdk-event => double
procedure: gdk-event-y-root event::gdk-event => double
procedure: gdk-event-key-state event::gdk-event => bool
procedure: gdk-event-keyval event::gdk-event => uint
procedure: gdk-event-string event::gdk-event => string
procedure: gdk-event-subwindow event::gdk-event => gdk-window
procedure: gdk-event-notify-detail event::gdk-event => gdk-notify-type
procedure: gdk-event-in event::gdk-event => bool
procedure: gdk-event-configure-x event::gdk-event => int
procedure: gdk-event-configure-y event::gdk-event => int
procedure: gdk-event-configure-width event::gdk-event => int
procedure: gdk-event-configure-height event::gdk-event => int
procedure: gdk-window-get-id window::gdk-window => int

The gdk color object

procedure: gdk-color-red o::gdk-color => uint
o
=>

procedure: gdk-color-green o::gdk-color => uint
o
=>

procedure: gdk-color-blue o::gdk-color => uint
o
=>

procedure: gdk-color-parse spec::string #!optional color::gdk-color => gdk-color

The gdk-color-parse procedure looks up the string name of a color, given in spec argument, with respect to the screen associated with the default colormap. On return it initializes the object given in a color argument with the exact color value. Use of uppercase or lowercase does not matter. If the color is not specified, the new instance of type gdk-color is allocated through gdk-color-alloc. If the color name is not resolved, an exception is raised.

(gdk-color-parse "red") => #<foreign:GDK-COLOR:fe471d10>

The gdk font object

procedure: gdk-font-unref font::gdk-font => #unspecified
font
=>

procedure: gdk-font-ref font::gdk-font => #unspecified
font
=>

procedure: gdk-font-load name::string => gdk-font
name
=>

The gdk drawing procedures

procedure: gdk-draw-string window::gdk-window font::gdk-font gc::gdk-gc x::int y::int string::string => #unspecified
window font gc x y string
=>

procedure: gdk-draw-arc window::gdk-window gc::gdk-gc filled::bool x::int y::int width::int height::int angle1::int angle2::int => #unspecified
window gc filled x y width height angle1 angle2
=>

procedure: gdk-draw-rectangle window::gdk-window gc::gdk-gc filled::bool x::int y::int width::int height::int
window gc filled x y width height
=>

procedure: gdk-draw-line window::gdk-window gc::gdk-gc x1::int y1::int x2::int y2::int => #unspecified
window gc x1 y1 x2 y2
=>

procedure: gdk-draw-pixmap drawable::gdk-window gc::gdk-gc src::gdk-window xsrc::int ysrc::int xdest::int ydest::int width::int height::int => #unspecified
drawable gc src xsrc ysrc xdest ydest width height
=>

The gdk pixmap object

procedure: gdk-pixmap-new window width::int height::int #!optional depth => gdk-window
window width height depth
=>

The gdk window object

procedure: gdk-window-get-parent window::gdk-window => gdk-window
window
=>

procedure: gdk-window-clear-area-e window::gdk-window x::int y::int width::int height::int => #unspecified
window x y width height
=>

procedure: gdk-window-clear-area window::gdk-window x::int y::int width::int height::int => #unspecified
window x y width height
=>

procedure: gdk-window-clear window::gdk-window => #unspecified
window
=>

procedure: gdk-gc-set-line-attributes gc::gdk-gc line_width::int line_style::gdk-line-style cap_style::gdk-cap-style join_style::gdk-join-style => #unspecified
gc line_width line_style cap_style join_style
=>

procedure: gdk-gc-set-exposures gc::gdk-gc exposures::bool => #unspecified
gc exposures
=>

procedure: gdk-gc-set-subwindow gc::gdk-gc mode::gdk-subwindow-mode => #unspecified
gc mode
=>

procedure: gdk-gc-set-clip-origin gc::gdk-gc x::int y::int => #unspecified
gc x y
=>

procedure: gdk-gc-set-ts-origin gc::gdk-gc x::int y::int => #unspecified
gc x y
=>

procedure: gdk-gc-set-fill gc::gdk-gc fill::gdk-fill => #unspecified
gc fill
=>

procedure: gdk-gc-set-function gc::gdk-gc function::gdk-function => #unspecified
gc function
=>

procedure: gdk-gc-set-font gc::gdk-gc font::gdk-font => #unspecified
gc font
=>

procedure: gdk-gc-set-background gc::gdk-gc color::gdk-color => #unspecified
gc color
=>

procedure: gdk-gc-set-foreground gc::gdk-gc color::gdk-color => #unspecified
gc color
=>

procedure: gdk-gc-new window::gdk-window => gdk-gc
window
=>

The gdk colormap object

procedure: gdk-colormap-alloc-color colormap::gdk-colormap color::gdk-color writeable::bool best_match::bool => bool
colormap color writeable best_match
=>

gdk miscellaneous procedures

procedure: gdk-beep => #unspecified
=>

procedure: gdk-flush => #unspecified
=>

Types

Introduction to the Type System

Every type in GTK+ is given an unique identifier. These identifiers have a type named gtk-type (they are sequential integers really).

A few numbers are preassigned to built-in GTK+ types (such an integers, strings, booleans etc.). All other type ids are allocated along with the first instance of that type.

procedure: gtk-type-name type::gtk-type => string
Get the GTK+ name of an existing type.

Note: the name returned is a GTK+ name, not a Bigloo type name, i.e. the value "GtkButton" will be returned for buttons, but not "gtk-button".

(gtk-type-name 2)
=> "gchar"

(gtk-type-name(gtk-object-type(gtk-button-new)))
=> "GtkButton"

procedure: gtk-type-from-name name::string => gtk-type

Given the name of an existing GTK+ type, return its type id.

(gtk-type-from-name "gint")
=> 5

(gtk-type-from-name "GtkObject")
=> 21

(gtk-button-new) ;; assure the button type is initialized
(gtk-type-from-name "GtkButton")
=> 40469

procedure: gtk-object-type object::gtk-object => gtk-type
Given an gtk-object or any ancestor of gtk-object, ruturn the object type identifier

Example: get the type of gtk-button instance.

(gtk-object-type(gtk-button-new)) => 40469

procedure: gtk-object-klass o::gtk-object => gtk-object-class

Get GTK+ object class reference by instance. The gtk-object-class structures may be useful for introspection purposes only (to inspect object signals etc.).

(gtk-object-klass(gtk-button-new))
=> #<foreign:GTK-OBJECT-CLASS:84b3078>

procedure: gtk-object-class-type o::gtk-object-class => gtk-type

Get type identifier by GTK+ object class. o

(gtk-object-class-type(gtk-object-klass(gtk-button-new)))
=> 40469

Basic Concepts

Simple Types

Enumerations and Flags

Callbacks

Any Bigloo procedure with matching prototype may be used as signal or event handler in Bigloo.

Composite Types

Objects

procedure: gtk-object-destroyed object::gtk-object => bool
Was an object destroyed with gtk-object-destroy?
(define button(gtk-button-new))
(gtk-object-destroyed button)
=> #f
(gtk-object-destroy button)
(gtk-object-destroyed button)
=> #t

procedure: gtk-object-destroy object::gtk-object
Ask the object's class to destroy the object.

Signals Overview

procedure: gtk-signal-emit-stop object::gtk-object signal

Stop the emission of the signal on object. signal is the string signal name or the integer identifier for the signal, which can be determined using the function gtk-signal-lookup. Attempting to stop the emission of a signal that isn't being emitted does nothing.

procedure: gtk-signal-disconnect object::gtk-object id::int

Disconnects a signal handler from an object. The signal handler is identified by the integer id which is returned by the gtk-signal-connect function.

Example: disable the button action after the first invocation.

(letrec((but(gtk-button-new "Hello"))
	(signal-id
	 (gtk-signal-connect
	  but "clicked"
	  (lambda args
	    (print "Hello, World")
	    (gtk-signal-disconnect but signal-id)))))
  ...)

procedure: gtk-signal-emit object::gtk-object signal arguments::pair-nil

Emit the signal specified by the integer or string identifier signal from object. The signal definition determines the parameters passed in the arguments list.

For example, if the signal is defined as:

  void (* parent_set) (GtkWidget *widget, GtkWidget *parent);

Then a call to emit the "parent_set" signal would look like:

(let((button(gtk-button-new)))
  (gtk-signal-emit button  "parent_set" *window*))
=> #unspecified

Notice that the widget argument is implicit in that the first argument to every signal is a type derived from GtkObject.

FIXME: signals returning the value are current not implemented!!!

gtk_signal_emit is normally used internally by widgets which know the signal identifier.

procedure: gtk-signal-connect object::gtk-object name::string function::procedure #!optional after::bool => uint

Connects a signal handling function to a signal emitting object. function is connected to the signal name emitted by object. The arguments and returns type of func should match the arguments and return type of the signal name.

gtk-signal-connect returns an integer identifier for the connection which can be used to refer to it in the future. Specifically it is useful for removing the connection and/or blocking it from being used.

Example: connect a click handler to a button. Being invoked, handler prints a message and disconnects itself.

(letrec((but(gtk-button-new "Hello"))
	(signal-id
	 (gtk-signal-connect
	  but "clicked"
	  (lambda(button)
	    (print "Hello, World")
	    (gtk-signal-disconnect button signal-id)))))
  ...)

procedure: gtk-signal-query-params query::gtk-signal-query => pair-nil

Signal introspection.

procedure: gtk-signal-new-generic name::string run-type::gtk-signal-run-type object-type::gtk-type return-type::gtk-type . params => uint

Create a new signal and give it the character string identifier name. name needs to be unique in the context of object-type's branch of the class hierarchy. That is, object-type cannot create a signal type with the same name as a signal type created by one of its parent types.

run-type specifies whether the class function should be run before ('first), after ('last) or both before and after normal signal handlers ('both). Additionally, the 'no-recurse value can be specified to specify that the signal should not be recursive. By default, emitting the same signal on the same widget will cause the signal to be emitted twice. However, if the 'no-recurse flag is specified, emitting the same signal on the same widget will cause the current signal emission to be restarted. This allows the widget programmer to specify the semantics of signal emission on a per signal basis. (The 'no-recurse flag is used by the gtk-adjustment widget).

The return-val and the remaining arguments specify the return value and the arguments to the signal handler respectively.

Note: There is an implicit first argument to every signal handler which is the widget the signal has been emitted from.

The variable argument list params specifies the types of the arguments (use gtk-type-from-name to get gtk type identifiers). It is OK to use (gtk-type-from-name "none") for return-val. (This corresponds to not returning a value.

gtk-signal-new returns the integer identifier of the newly created signal. Signal identifiers start numbering at 1 and increase upwards.

Note: gtk-signal-new is only needed by widget writers. A normal user of GTK will never needed to invoke this function.

(define button(gtk-button-new))
button
=> #<foreign:GTK-WIDGET:3e330>
(define guint-type(gtk-type-from-name "guint"))
guint-type => 6
(define button-type(gtk-type-from-name "GtkButton"))
button-type => 40469
(gtk-signal-new-generic "print-sum"
			'(both)
			button-type ;; signal object type
			guint-type  ;; signal return type
			guint-type  ;; signal 1st arg type
			guint-type  ;; signal 2st arg type
			)
(gtk-signal-connect button
                    "print-sum"
                    (lambda (button n1 n2) (print (+ n1 n2))))
=> 4
(gtk-signal-emit button "print-sum" 2 3)
-| 5

procedure: gtk-signal-query-object-type o::gtk-signal-query => gtk-type

Access the object-type of gtk-signal-query structure. See gtk-signal-query procedure description for more detail.

(gtk-signal-query-object-type
 (gtk-signal-query
  (gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject"))))
=> 21

procedure: gtk-signal-query-signal-id o::gtk-signal-query => uint

Access the signal-id of gtk-signal-query structure. See gtk-signal-query procedure description for more detail.

(gtk-signal-query-signal-id
 (gtk-signal-query
  (gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject"))))
=> 1

procedure: gtk-signal-query-signal-name o::gtk-signal-query => string

Access the signal-name of gtk-signal-query structure. See gtk-signal-query procedure description for more detail.

(gtk-signal-query-signal-name
 (gtk-signal-query
  (gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject"))))
=> "destroy"

procedure: gtk-signal-query-is-user-signal o::gtk-signal-query => bool

Access the is-user-signal of gtk-signal-query structure. See gtk-signal-query procedure description for more detail.

(gtk-signal-query-is-user-signal
 (gtk-signal-query
  (gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject"))))
=> #f

procedure: gtk-signal-query-signal-flags o::gtk-signal-query => gtk-signal-run-type

Access the signal-flags of gtk-signal-query structure. See gtk-signal-query procedure description for more detail.

(gtk-signal-query-signal-flags
 (gtk-signal-query
  (gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject"))))
=> '(no-hooks both last)

procedure: gtk-signal-query-return-val o::gtk-signal-query => gtk-type

Access the return-val of gtk-signal-query structure. See gtk-signal-query procedure description for more detail.

(gtk-type-name
 (gtk-signal-query-return-val
  (gtk-signal-query
   (gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject")))))
=> "void"

procedure: gtk-signal-lookup name::string type::gtk-type => uint

Returns the integer identifier for the signal referenced by name and type. If type does not define the signal name, then the signal is looked for in type's parent type recursively.

(gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject"))
=> 1

procedure: gtk-signal-name signal-id::uint => string

Lookup a signal by signal identifier signal-id, return signal name. This procedure is complementary to the gtk-signal-lookup procedure.

(gtk-signal-name(gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject")))
=> "destroy"

procedure: gtk-signal-query signal-id::uint => gtk-signal-query

Query signal information.

(let*((signal-id(gtk-signal-lookup "destroy"(gtk-type-from-name "GtkObject")))
      (signal(gtk-signal-query signal-id)))
  (print "type: " (gtk-signal-query-object-type signal))
  (print "signal-id: " (gtk-signal-query-signal-id signal))
  (print "signal-name: " (gtk-signal-query-signal-name signal))
  (print "is-user-signal: " (gtk-signal-query-is-user-signal signal))
  (print "signal-flags: " (gtk-signal-query-signal-flags signal))
  (print "return-val: " (gtk-signal-query-return-val signal)))
-|type: 21
-|signal-id: 1
-|signal-name: destroy
-|is-user-signal: #f
-|signal-flags: (NO-HOOKS BOTH LAST)
-|return-val: 1
-|1

Widget Overview

The accel group object

procedure: gtk-accel-group-remove accel_group::gtk-accel-group accel_key::uint accel_mods::gdk-modifier-type object::gtk-object => #unspecified
accel_group accel_key accel_mods object
=>

procedure: gtk-accel-group-add accel_group::gtk-accel-group accel_key::uint accel_mods::gdk-modifier-type accel_flags::gtk-accel-flags object::gtk-object accel_signal::string => #unspecified
accel_group accel_key accel_mods accel_flags object accel_signal
=>

procedure: gtk-accel-group-unlock accel_group::gtk-accel-group => #unspecified
accel_group
=>

procedure: gtk-accel-group-lock accel_group::gtk-accel-group => #unspecified
accel_group
=>

procedure: gtk-accel-group-detach accel_group::gtk-accel-group object::gtk-object => #unspecified
accel_group object
=>

procedure: gtk-accel-group-attach accel_group::gtk-accel-group object::gtk-object => #unspecified
accel_group object
=>

procedure: gtk-accel-group-new => gtk-accel-group
=>

The accel label widget

procedure: gtk-accel-label-set-accel-widget accel_label::gtk-accel-label accel_widget::gtk-widget => #unspecified
accel_label accel_widget
=>

procedure: gtk-accel-label-new label::string => gtk-widget
label
=>

The alignment widget

procedure: gtk-alignment-set alignment::gtk-alignment xalign::float yalign::float xscale::float yscale::float => #unspecified
alignment xalign yalign xscale yscale
=>

procedure: gtk-alignment-new xalign::float yalign::float xscale::float yscale::float => gtk-widget
xalign yalign xscale yscale
=>

The arg object

procedure: gtk-arg-type o::gtk-arg => gtk-type
o
=>

procedure: gtk-arg-name o::gtk-arg => string
o
=>

The arrow widget

procedure: gtk-arrow-set arrow::gtk-arrow arrow_type::gtk-arrow-type shadow_type::gtk-shadow-type => #unspecified
arrow arrow_type shadow_type
=>

procedure: gtk-arrow-new arrow_type::gtk-arrow-type shadow_type::gtk-shadow-type => gtk-widget
arrow_type shadow_type
=>

The aspect frame widget

procedure: gtk-aspect-frame-set aspect_frame::gtk-aspect-frame xalign::float yalign::float ratio::float obey_child::bool => #unspecified
aspect_frame xalign yalign ratio obey_child
=>

procedure: gtk-aspect-frame-new label::string xalign::float yalign::float ratio::float obey_child::bool => gtk-widget
label xalign yalign ratio obey_child
=>

The bin widget

The box widget

procedure: gtk-box-set-child-packing box::gtk-box child::gtk-widget expand::bool fill::bool padding::int pack_type::gtk-pack-type => #unspecified
box child expand fill padding pack_type
=>

procedure: gtk-box-reorder-child box::gtk-box child::gtk-widget pos::uint => #unspecified
box child pos
=>

procedure: gtk-box-set-spacing box::gtk-box spacing::int => #unspecified
box spacing
=>

procedure: gtk-box-set-homogeneous box::gtk-box homogenous::bool => #unspecified
box homogenous
=>

procedure: gtk-box-pack-end-defaults box::gtk-box child::gtk-widget => #unspecified
box child
=>

procedure: gtk-box-pack-start-defaults box::gtk-box child::gtk-widget => #unspecified
box child
=>

procedure: gtk-box-pack-end box::gtk-box child::gtk-widget #!optional expand fill padding => #unspecified
box child expand fill padding
=>

procedure: gtk-box-pack-start box::gtk-box child::gtk-widget #!optional expand fill padding => #unspecified
box child expand fill padding
=>

The handle box widget

procedure: gtk-handle-box-new => gtk-widget
=>

The button box widget

procedure: gtk-button-box-set-child-ipadding widget::gtk-button-box ipad_x::int ipad_y::int => #unspecified
widget ipad_x ipad_y
=>

procedure: gtk-button-box-set-child-size widget::gtk-button-box min_width::int min_height::int => #unspecified
widget min_width min_height
=>

procedure: gtk-button-box-set-layout widget::gtk-button-box layout_style::gtk-button-box-style => #unspecified
widget layout_style
=>

procedure: gtk-button-box-set-spacing widget::gtk-button-box spacing::int => #unspecified
widget spacing
=>

procedure: gtk-button-box-get-layout widget::gtk-button-box => gtk-button-box-style
widget
=>

procedure: gtk-button-box-get-spacing widget::gtk-button-box => int
widget
=>

procedure: gtk-button-box-set-child-ipadding-default ipad_x::int ipad_y::int => #unspecified
ipad_x ipad_y
=>

procedure: gtk-button-box-set-child-size-default min_width::int min_height::int => #unspecified
min_width min_height
=>

The button widget

procedure: gtk-button-leave button::gtk-button => #unspecified
button
=>

procedure: gtk-button-enter button::gtk-button => #unspecified
button
=>

procedure: gtk-button-clicked button::gtk-button => #unspecified
button
=>

procedure: gtk-button-released button::gtk-button => #unspecified
button
=>

procedure: gtk-button-pressed button::gtk-button => #unspecified
button
=>

procedure: gtk-button-new label::string => gtk-widget
label
=>

procedure: gtk-button-child o::gtk-button => gtk-widget
o
=>

procedure: gtk-button-in-button o::gtk-button => bool
o
=>

procedure: gtk-button-button-down o::gtk-button => bool
o
=>

The calendar widget

procedure: gtk-calendar-thaw calendar::gtk-calendar => #unspecified
calendar
=>

procedure: gtk-calendar-freeze calendar::gtk-calendar => #unspecified
calendar
=>

procedure: gtk-calendar-clear-marks calendar::gtk-calendar => #unspecified
calendar
=>

procedure: gtk-calendar-unmark-day calendar::gtk-calendar day::int => int
calendar day
=>

procedure: gtk-calendar-mark-day calendar::gtk-calendar day::int => int
calendar day
=>

procedure: gtk-calendar-select-day calendar::gtk-calendar day::int => #unspecified
calendar day
=>

procedure: gtk-calendar-select-month calendar::gtk-calendar month::int year::int => int
calendar month year
=>

procedure: gtk-calendar-new => gtk-widget
=>

The check button widget

procedure: gtk-check-button-new label::string => gtk-widget
label
=>

The curve widget

procedure: gtk-curve-set-curve-type curve::gtk-curve type::gtk-curve-type => #unspecified
curve type
=>

procedure: gtk-curve-set-range curve::gtk-curve min_x::float max_x::float min_y::float max_y::float => #unspecified
curve min_x max_x min_y max_y
=>

procedure: gtk-curve-set-gamma curve::gtk-curve gamma::float => #unspecified
curve gamma
=>

procedure: gtk-curve-reset curve::gtk-curve => #unspecified
curve
=>

procedure: gtk-curve-new => gtk-widget
=>

The spin button widget

procedure: gtk-spin-button-set-update-policy spin_button::gtk-spin-button policy::gtk-spin-button-update-policy => #unspecified
spin_button policy
=>

procedure: gtk-spin-button-set-value spin_button::gtk-spin-button value::float => #unspecified
spin_button value
=>

procedure: gtk-spin-button-get-value-as-int spin_button::gtk-spin-button => int
spin_button
=>

procedure: gtk-spin-button-get-value-as-float spin_button::gtk-spin-button => float
spin_button
=>

procedure: gtk-spin-button-set-digits spin_button::gtk-spin-button digits::int => #unspecified
spin_button digits
=>

procedure: gtk-spin-button-get-adjustment spin_button::gtk-spin-button => gtk-adjustment
spin_button
=>

procedure: gtk-spin-button-set-adjustment spin_button::gtk-spin-button adjustment::gtk-adjustment => #unspecified
spin_button adjustment
=>

procedure: gtk-spin-button-new adjustment::gtk-adjustment climb_rate::float digits::int => gtk-widget
adjustment climb_rate digits
=>

The check menu item widget

procedure: gtk-check-menu-item-toggled check_menu_item::gtk-check-menu-item => #unspecified
check_menu_item
=>

procedure: gtk-check-menu-item-set-show-toggle menu_item::gtk-check-menu-item always::bool => #unspecified
menu_item always
=>

procedure: gtk-check-menu-item-set-state check_menu_item::gtk-check-menu-item state::bool => #unspecified
check_menu_item state
=>

procedure: gtk-check-menu-item-new label::string => gtk-widget
label
=>

procedure: gtk-check-menu-item-set-active check_menu_item::gtk-check-menu-item is_active::bool => #unspecified
check_menu_item is_active
=>

procedure: gtk-check-menu-item-active o::gtk-check-menu-item => bool
o
=>

The compound list widget

procedure: gtk-clist-set-auto-sort clist::gtk-clist auto_sort::bool => #unspecified
clist auto_sort
=>

procedure: gtk-clist-sort clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-set-sort-type clist::gtk-clist sort_type::gtk-sort-type => #unspecified
clist sort_type
=>

procedure: gtk-clist-set-sort-column clist::gtk-clist column::int => #unspecified
clist column
=>

procedure: gtk-clist-swap-rows clist::gtk-clist row1::int row2::int => #unspecified
clist row1 row2
=>

procedure: gtk-clist-unselect-all clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-clear clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-undo-selection clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-unselect-row clist::gtk-clist row::int column::int => #unspecified
clist row column
=>

procedure: gtk-clist-select-row clist::gtk-clist row::int column::int => #unspecified
clist row column
=>

procedure: gtk-clist-remove clist::gtk-clist row::int => #unspecified
clist row
=>

procedure: gtk-clist-get-selectable clist::gtk-clist row::int => bool
clist row
=>

procedure: gtk-clist-set-selectable clist::gtk-clist row::int selectable::bool => #unspecified
clist row selectable
=>

procedure: gtk-clist-set-shift clist::gtk-clist row::int column::int vertical::int horizontal::int => #unspecified
clist row column vertical horizontal
=>

procedure: gtk-clist-get-row-style clist::gtk-clist row::int => gtk-style
clist row
=>

procedure: gtk-clist-set-row-style clist::gtk-clist row::int style::gtk-style => #unspecified
clist row style
=>

procedure: gtk-clist-get-cell-style clist::gtk-clist row::int column::int => gtk-style
clist row column
=>

procedure: gtk-clist-set-cell-style clist::gtk-clist row::int column::int style::gtk-style => #unspecified
clist row column style
=>

procedure: gtk-clist-set-background clist::gtk-clist row::int color::gdk-color => #unspecified
clist row color
=>

procedure: gtk-clist-set-foreground clist::gtk-clist row::int color::gdk-color => #unspecified
clist row color
=>

procedure: gtk-clist-set-text clist::gtk-clist row::int column::int text::string => #unspecified
clist row column text
=>

procedure: gtk-clist-get-cell-type clist::gtk-clist row::int column::int => gtk-cell-type
clist row column
=>

procedure: gtk-clist-row-is-visible clist::gtk-clist row::int => gtk-visibility
clist row
=>

procedure: gtk-clist-moveto clist::gtk-clist row::int column::int row_align::float column_align::float => #unspecified
clist row column row_align column_align
=>

procedure: gtk-clist-set-row-height clist::gtk-clist height::int => #unspecified
clist height
=>

procedure: gtk-clist-set-column-max-width clist::gtk-clist column::int max_width::int => #unspecified
clist column max_width
=>

procedure: gtk-clist-set-column-min-width clist::gtk-clist column::int min_width::int => #unspecified
clist column min_width
=>

procedure: gtk-clist-set-column-width clist::gtk-clist column::int width::int => #unspecified
clist column width
=>

procedure: gtk-clist-optimal-column-width clist::gtk-clist column::int => int
clist column
=>

procedure: gtk-clist-columns-autosize clist::gtk-clist => int
clist
=>

procedure: gtk-clist-set-column-auto-resize clist::gtk-clist column::int auto_resize::bool => #unspecified
clist column auto_resize
=>

procedure: gtk-clist-set-column-resizeable clist::gtk-clist column::int resizeable::bool => #unspecified
clist column resizeable
=>

procedure: gtk-clist-set-column-visibility clist::gtk-clist column::int visible::bool => #unspecified
clist column visible
=>

procedure: gtk-clist-set-column-justification clist::gtk-clist column::int justification::gtk-justification => #unspecified
clist column justification
=>

procedure: gtk-clist-get-column-widget clist::gtk-clist column::int => gtk-widget
clist column
=>

procedure: gtk-clist-set-column-widget clist::gtk-clist column::int widget::gtk-widget => #unspecified
clist column widget
=>

procedure: gtk-clist-set-column-title clist::gtk-clist column::int title::string => #unspecified
clist column title
=>

procedure: gtk-clist-column-titles-passive clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-column-titles-active clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-column-title-passive clist::gtk-clist column::int => #unspecified
clist column
=>

procedure: gtk-clist-column-title-active clist::gtk-clist column::int => #unspecified
clist column
=>

procedure: gtk-clist-column-titles-hide clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-column-titles-show clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-thaw clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-freeze clist::gtk-clist => #unspecified
clist
=>

procedure: gtk-clist-set-button-actions list::gtk-clist button::uint button_actions::uint => #unspecified
list button button_actions
=>

procedure: gtk-clist-set-use-drag-icons list::gtk-clist use_icons::bool => #unspecified
list use_icons
=>

procedure: gtk-clist-set-reorderable clist::gtk-clist reorderable::bool => #unspecified
clist reorderable
=>

procedure: gtk-clist-set-selection-mode clist::gtk-clist mode::gtk-selection-mode => #unspecified
clist mode
=>

procedure: gtk-clist-get-vadjustment clist::gtk-clist => gtk-adjustment
clist
=>

procedure: gtk-clist-get-hadjustment clist::gtk-clist => gtk-adjustment
clist
=>

procedure: gtk-clist-set-vadjustment clist::gtk-clist adjustment::gtk-adjustment => #unspecified
clist adjustment
=>

procedure: gtk-clist-set-hadjustment clist::gtk-clist adjustment::gtk-adjustment => #unspecified
clist adjustment
=>

procedure: gtk-clist-new arg . titles => gtk-widget

Create gtk-clist type object with optional titles. There are two methods of calling this procedure.

Note: this procedure obsoletes guile-gtk gtk-clist-new-with-titles procedure.

Example1: create 3-column gtk-clist:

(gtk-clist-new 3)

Example1: create 2-column gtk-clist and set the column titles to "Column1" and "Column2":

(gtk-clist-new "Column1" "Column2")

procedure: gtk-clist-append clist::gtk-clist columns::pair => #unspecified

Append a row to clist. The columns parameter should be a list strings to form a new row. The length of columns should be equal to the number of columns in clist.

(gtk-clist-append
  (gtk-clist-new "Column1" "Column2")
  '("Value1" "Value2"))

procedure: gtk-clist-prepend w::gtk-clist columns::pair => #unspecified
Prepend a row to clist. The columns parameter should be a list strings to form a new row. The length of columns should be equal to the number of columns in clist.
(gtk-clist-prepend
  (gtk-clist-new "Column1" "Column2")
  '("Value1" "Value2"))

The color selector widget

procedure: gtk-color-selection-set-opacity colorsel::gtk-color-selection use_opacity::bool => #unspecified
colorsel use_opacity
=>

procedure: gtk-color-selection-set-update-policy colorsel::gtk-color-selection policy::gtk-update-type => #unspecified
colorsel policy
=>

procedure: gtk-color-selection-new => gtk-widget
=>

procedure: gtk-color-selection-dialog-new title::string => gtk-widget
title
=>

procedure: gtk-color-selection-dialog-colorsel o::gtk-color-selection-dialog => gtk-widget
o
=>

procedure: gtk-color-selection-dialog-main-vbox o::gtk-color-selection-dialog => gtk-widget
o
=>

procedure: gtk-color-selection-dialog-ok-button o::gtk-color-selection-dialog => gtk-widget
o
=>

procedure: gtk-color-selection-dialog-reset-button o::gtk-color-selection-dialog => gtk-widget
o
=>

procedure: gtk-color-selection-dialog-cancel-button o::gtk-color-selection-dialog => gtk-widget
o
=>

procedure: gtk-color-selection-dialog-help-button o::gtk-color-selection-dialog => gtk-widget
o
=>

procedure: gtk-color-selection-get-color selection::gtk-color-selection => pair

Return current color selection as list of four double values (RGB+opacity).

(let* ((window(gtk-color-selection-dialog-new "color selection dialog"))
       (selection(gtk-color-selection-dialog-colorsel window)))
  (gtk-color-selection-get-color selection))
=> (1.0 1.0 1.0 1.527836969495e-312)

The combo widget

procedure: gtk-combo-disable-activate combo::gtk-combo => #unspecified
combo
=>

procedure: gtk-combo-set-item-string combo::gtk-combo item::gtk-item item_value::string => #unspecified
combo item item_value
=>

procedure: gtk-combo-set-case-sensitive combo::gtk-combo val::bool => #unspecified
combo val
=>

procedure: gtk-combo-set-use-arrows-always combo::gtk-combo val::bool => #unspecified
combo val
=>

procedure: gtk-combo-set-use-arrows combo::gtk-combo val::bool => #unspecified
combo val
=>

procedure: gtk-combo-set-value-in-list combo::gtk-combo val::bool ok_if_empty::bool => #unspecified
combo val ok_if_empty
=>

procedure: gtk-combo-new => gtk-widget
=>

procedure: gtk-combo-entry o::gtk-combo => gtk-widget
o
=>

procedure: gtk-combo-button o::gtk-combo => gtk-widget
o
=>

procedure: gtk-combo-popup o::gtk-combo => gtk-widget
o
=>

procedure: gtk-combo-popwin o::gtk-combo => gtk-widget
o
=>

procedure: gtk-combo-list o::gtk-combo => gtk-widget
o
=>

procedure: gtk-combo-set-popdown-strings combo::gtk-combo strings::pair-nil => #unspecified
combo strings
=>

The container widget

procedure: gtk-container-unregister-toplevel container::gtk-container => #unspecified
container
=>

procedure: gtk-container-register-toplevel container::gtk-container => #unspecified
container
=>

procedure: gtk-container-focus container::gtk-container direction::gtk-direction-type => gtk-direction-type
container direction
=>

procedure: gtk-container-remove container::gtk-container widget::gtk-widget => #unspecified
container widget
=>

procedure: gtk-container-add container::gtk-container widget::gtk-widget => #unspecified
container widget
=>

procedure: gtk-container-border-width container::gtk-container border_width::int => #unspecified
container border_width
=>

procedure: gtk-container-set-focus-hadjustment container::gtk-container adjustment::gtk-adjustment => #unspecified
container adjustment
=>

procedure: gtk-container-set-focus-vadjustment container::gtk-container adjustment::gtk-adjustment => #unspecified
container adjustment
=>

procedure: gtk-container-set-border-width container::gtk-container border_width::uint => #unspecified
container border_width
=>

The font selector widget

procedure: gtk-font-selection-dialog-set-preview-text fontsel::gtk-font-selection-dialog text::string => #unspecified
fontsel text
=>

procedure: gtk-font-selection-dialog-set-font-name fontsel::gtk-font-selection-dialog fontname::string => bool
fontsel fontname
=>

procedure: gtk-font-selection-dialog-get-font fontsel::gtk-font-selection-dialog => gdk-font
fontsel
=>

procedure: gtk-font-selection-dialog-get-font-name fontsel::gtk-font-selection-dialog => string
fontsel
=>

procedure: gtk-font-selection-dialog-new title::string => gtk-widget
title
=>

procedure: gtk-font-selection-dialog-main-vbox o::gtk-font-selection-dialog => gtk-widget
o
=>

procedure: gtk-font-selection-dialog-action-area o::gtk-font-selection-dialog => gtk-widget
o
=>

procedure: gtk-font-selection-dialog-ok-button o::gtk-font-selection-dialog => gtk-widget
o
=>

procedure: gtk-font-selection-dialog-apply-button o::gtk-font-selection-dialog => gtk-widget
o
=>

procedure: gtk-font-selection-dialog-cancel-button o::gtk-font-selection-dialog => gtk-widget
o
=>

The file selector widget

procedure: gtk-file-selection-hide-fileop-buttons filesel::gtk-file-selection => #unspecified
filesel
=>

procedure: gtk-file-selection-show-fileop-buttons filesel::gtk-file-selection => #unspecified
filesel
=>

procedure: gtk-file-selection-get-filename filesel::gtk-file-selection => string
filesel
=>

procedure: gtk-file-selection-set-filename filesel::gtk-file-selection filename::string => #unspecified
filesel filename
=>

procedure: gtk-file-selection-new title::string => gtk-widget
title
=>

procedure: gtk-file-selection-dir-list o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-file-list o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-selection-entry o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-selection-text o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-main-vbox o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-ok-button o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-cancel-button o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-help-button o::gtk-file-selection => gtk-widget
o
=>

procedure: gtk-file-selection-action-area o::gtk-file-selection => gtk-widget
o
=>

The multi-column tree widget

The curve widget

The gamma curve widget

procedure: gtk-gamma-curve-new => gtk-widget
=>

procedure: gtk-gamma-curve-table o::gtk-gamma-curve => gtk-widget
o
=>

procedure: gtk-gamma-curve-curve o::gtk-gamma-curve => gtk-widget
o
=>

procedure: gtk-gamma-curve-gamma o::gtk-gamma-curve => float
o
=>

procedure: gtk-gamma-curve-gamma-dialog o::gtk-gamma-curve => gtk-widget
o
=>

procedure: gtk-gamma-curve-gamma-text o::gtk-gamma-curve => gtk-widget
o
=>

The dialog widget

procedure: gtk-dialog-new => gtk-widget
=>

procedure: gtk-dialog-vbox o::gtk-dialog => gtk-widget
o
=>

procedure: gtk-dialog-action-area o::gtk-dialog => gtk-widget
o
=>

The drawing area widget

procedure: gtk-drawing-area-size darea::gtk-drawing-area width::int height::int => #unspecified
darea width height
=>

procedure: gtk-drawing-area-new => gtk-widget
=>

The entry widget

procedure: gtk-entry-set-editable entry::gtk-entry editable::bool => #unspecified
entry editable
=>

procedure: gtk-entry-set-visibility entry::gtk-entry visible::bool => #unspecified
entry visible
=>

procedure: gtk-entry-select-region entry::gtk-entry start::int end::int => #unspecified
entry start end
=>

procedure: gtk-entry-set-position entry::gtk-entry position::int => #unspecified
entry position
=>

procedure: gtk-entry-prepend-text entry::gtk-entry text::string => #unspecified
entry text
=>

procedure: gtk-entry-append-text entry::gtk-entry text::string => #unspecified
entry text
=>

procedure: gtk-entry-set-text entry::gtk-entry text::string => #unspecified
entry text
=>

procedure: gtk-entry-new-with-max-length max::int => gtk-widget
max
=>

procedure: gtk-entry-new => gtk-widget
=>

The editable widget

procedure: gtk-editable-set-editable editable::gtk-editable is_editable::bool => #unspecified
editable is_editable
=>

procedure: gtk-editable-get-position editable::gtk-editable => int
editable
=>

procedure: gtk-editable-set-position editable::gtk-editable index::int => #unspecified
editable index
=>

procedure: gtk-editable-delete-selection editable::gtk-editable => #unspecified
editable
=>

procedure: gtk-editable-paste-clipboard editable::gtk-editable => #unspecified
editable
=>

procedure: gtk-editable-copy-clipboard editable::gtk-editable => #unspecified
editable
=>

procedure: gtk-editable-cut-clipboard editable::gtk-editable => #unspecified
editable
=>

procedure: gtk-editable-get-chars editable::gtk-editable start::int end::int => string
editable start end
=>

procedure: gtk-editable-delete-text editable::gtk-editable start::int end::int => #unspecified
editable start end
=>

procedure: gtk-editable-select-region editable::gtk-editable start::int end::int => #unspecified
editable start end
=>

The event box widget

procedure: gtk-event-box-new => gtk-widget
=>

The file selection dialog widget

The fixed widget

procedure: gtk-fixed-move fixed::gtk-fixed widget::gtk-widget x::int y::int => #unspecified
fixed widget x y
=>

procedure: gtk-fixed-put fixed::gtk-fixed widget::gtk-widget x::int y::int => #unspecified
fixed widget x y
=>

procedure: gtk-fixed-new => gtk-widget
=>

The frame widget

procedure: gtk-frame-set-shadow-type frame::gtk-frame type::gtk-shadow-type => #unspecified
frame type
=>

procedure: gtk-frame-set-label-align frame::gtk-frame xalign::float yalign::float => #unspecified
frame xalign yalign
=>

procedure: gtk-frame-set-label frame::gtk-frame label::string => #unspecified
frame label
=>

procedure: gtk-frame-new #!optional label => gtk-widget
label
=>

The gamma widget

The horizontal box widget

procedure: gtk-hbox-new #!optional homogenous spacing => gtk-widget
homogenous spacing
=>

The horizontal button box widget

procedure: gtk-hbutton-box-set-layout-default layout::gtk-button-box-style => #unspecified
layout
=>

procedure: gtk-hbutton-box-set-spacing-default spacing::int => #unspecified
spacing
=>

procedure: gtk-hbutton-box-get-layout-default => gtk-button-box-style
=>

procedure: gtk-hbutton-box-get-spacing-default => int
=>

procedure: gtk-hbutton-box-new => gtk-widget
=>

The horizontal paned widget

procedure: gtk-hpaned-new => gtk-widget
=>

The horizontal ruler widget

procedure: gtk-hruler-new => gtk-widget
=>

The horizontal scale widget

procedure: gtk-hscale-new adjustment::gtk-adjustment => gtk-widget
adjustment
=>

The vertical scale widget

procedure: gtk-vscale-new adjustment::gtk-adjustment => gtk-widget
adjustment
=>

The horizontal scrollbar widget

procedure: gtk-hscrollbar-new adjustment::gtk-adjustment => gtk-widget
adjustment
=>

The horizontal separator widget

procedure: gtk-hseparator-new => gtk-widget
=>

The image widget

The input dialog widget

procedure: gtk-input-dialog-new => gtk-widget
=>

procedure: gtk-input-dialog-close-button o::gtk-input-dialog => gtk-widget
o
=>

procedure: gtk-input-dialog-save-button o::gtk-input-dialog => gtk-widget
o
=>

The item widget

procedure: gtk-item-toggle item::gtk-item => #unspecified
item
=>

procedure: gtk-item-deselect item::gtk-item => #unspecified
item
=>

procedure: gtk-item-select item::gtk-item => #unspecified
item
=>

The label widget

procedure: gtk-label-set-pattern label::gtk-label str::string => #unspecified
label str
=>

procedure: gtk-label-set-line-wrap label::gtk-label wrap::bool => #unspecified
label wrap
=>

procedure: gtk-label-set-justify label::gtk-label jtype::gtk-justification => #unspecified
label jtype
=>

procedure: gtk-label-set-text label::gtk-label str::string => #unspecified
label str
=>

procedure: gtk-label-new str::string => gtk-widget
str
=>

procedure: gtk-label-parse-uline label::gtk-label name::string => uint
label name
=>

The list widget

procedure: gtk-list-remove-items list::gtk-list items::g-list => #unspecified
list items
=>

procedure: gtk-list-children o::gtk-list => g-list
o
=>

procedure: gtk-list-selection o::gtk-list => g-list
o
=>

procedure: gtk-list-undo-selection o::gtk-list => g-list
o
=>

procedure: gtk-list-undo-unselection o::gtk-list => g-list
o
=>

procedure: gtk-list-last-focus-child o::gtk-list => gtk-widget
o
=>

procedure: gtk-list-undo-focus-child o::gtk-list => gtk-widget
o
=>

procedure: gtk-list-htimer o::gtk-list => uint
o
=>

procedure: gtk-list-vtimer o::gtk-list => uint
o
=>

procedure: gtk-list-anchor o::gtk-list => int
o
=>

procedure: gtk-list-drag-pos o::gtk-list => int
o
=>

procedure: gtk-list-anchor-state o::gtk-list => gtk-state-type
o
=>

procedure: gtk-list-selection-mode o::gtk-list => gtk-selection-mode
o
=>

procedure: gtk-list-drag-selection o::gtk-list => bool
o
=>

procedure: gtk-list-add-mode o::gtk-list => bool
o
=>

procedure: gtk-list-set-selection-mode list::gtk-list mode::gtk-selection-mode => #unspecified
list mode
=>

procedure: gtk-list-child-position list::gtk-list child::gtk-widget => int
list child
=>

procedure: gtk-list-unselect-child list::gtk-list child::gtk-widget => #unspecified
list child
=>

procedure: gtk-list-select-child list::gtk-list child::gtk-widget => #unspecified
list child
=>

procedure: gtk-list-unselect-item list::gtk-list item::int => #unspecified
list item
=>

procedure: gtk-list-select-item list::gtk-list item::int => #unspecified
list item
=>

procedure: gtk-list-clear-items list::gtk-list start::int end::int => #unspecified
list start end
=>

procedure: gtk-list-new => gtk-widget
=>

The list item widget

procedure: gtk-list-item-deselect list_item::gtk-list-item => #unspecified
list_item
=>

procedure: gtk-list-item-select list_item::gtk-list-item => #unspecified
list_item
=>

procedure: gtk-list-item-new label::string => gtk-widget
label
=>

The menu widget

procedure: gtk-menu-detach menu::gtk-menu => #unspecified
menu
=>

procedure: gtk-menu-get-attach-widget menu::gtk-menu => gtk-widget
menu
=>

procedure: gtk-menu-set-active menu::gtk-menu index::int => #unspecified
menu index
=>

procedure: gtk-menu-get-active menu::gtk-menu => gtk-widget
menu
=>

procedure: gtk-menu-popdown menu::gtk-menu => #unspecified
menu
=>

procedure: gtk-menu-insert menu::gtk-menu child::gtk-widget position::int => #unspecified
menu child position
=>

procedure: gtk-menu-prepend menu::gtk-menu child::gtk-widget => #unspecified
menu child
=>

procedure: gtk-menu-append menu::gtk-menu child::gtk-widget => #unspecified

Append a menu item, created by any of gtk-menu-item-new, gtk-check-menu-item-new or gtk-radio-menu-item-new.

=>

procedure: gtk-menu-new => gtk-widget
=>

procedure: gtk-menu-ensure-uline-accel-group menu::gtk-menu => gtk-accel-group
menu
=>

procedure: gtk-menu-get-uline-accel-group menu::gtk-menu => gtk-accel-group
menu
=>

procedure: gtk-menu-popup menu::gtk-menu #!optional parent-menu-shell parent-menu-item callback button activate-time => #unspecified

Display the menu onscreen.

Arguments:

In the following example a button is created. Pressing the button pops up the menu menu. Change the callback value from #f to menu positioning procedure (commented out in this example), the menu will appear on screen at X=100, Y=300 position.

(let((button(gtk-button-new "Press me")))
  (gtk-signal-connect
   button "event"
   (lambda(button event)
     (and(eq?(gdk-event-type event) 'button-press)
  (gtk-menu-popup
    menu #f #f
    #f ;;(lambda (menu)(values 100 300))
    (gdk-event-button event)
    (gdk-event-time event))))))

See menu-popup file in examples catalog for full example text.

The menu bar widget

procedure: gtk-menu-bar-insert menu_bar::gtk-menu-bar child::gtk-widget position::int => #unspecified
menu_bar child position
=>

procedure: gtk-menu-bar-prepend menu_bar::gtk-menu-bar child::gtk-widget => #unspecified
menu_bar child
=>

procedure: gtk-menu-bar-append menu_bar::gtk-menu-bar child::gtk-widget => #unspecified
menu_bar child
=>

procedure: gtk-menu-bar-new => gtk-widget
=>

The menu shell widget

procedure: gtk-menu-shell-deactivate menu_shell::gtk-menu-shell => #unspecified
menu_shell
=>

procedure: gtk-menu-shell-insert menu_shell::gtk-menu-shell child::gtk-widget position::int => #unspecified
menu_shell child position
=>

procedure: gtk-menu-shell-prepend menu_shell::gtk-menu-shell child::gtk-widget => #unspecified
menu_shell child
=>

procedure: gtk-menu-shell-append menu_shell::gtk-menu-shell child::gtk-widget => #unspecified
menu_shell child
=>

The tearoff menu item widget

procedure: gtk-tearoff-menu-item-new => gtk-widget
=>

The menu item widget

procedure: gtk-menu-item-right-justify menu_item::gtk-menu-item => #unspecified
menu_item
=>

procedure: gtk-menu-item-activate menu_item::gtk-menu-item => #unspecified
menu_item
=>

procedure: gtk-menu-item-deselect menu_item::gtk-menu-item => #unspecified
menu_item
=>

procedure: gtk-menu-item-select menu_item::gtk-menu-item => #unspecified
menu_item
=>

procedure: gtk-menu-item-configure menu_item::gtk-menu-item show_toggle_indicator::bool show_submenu_indicator::bool => #unspecified
menu_item show_toggle_indicator show_submenu_indicator
=>

procedure: gtk-menu-item-set-placement menu_item::gtk-menu-item placement::gtk-submenu-placement => #unspecified
menu_item placement
=>

procedure: gtk-menu-item-remove-submenu menu_item::gtk-menu-item => #unspecified
menu_item
=>

procedure: gtk-menu-item-set-submenu menu_item::gtk-menu-item submenu::gtk-widget => #unspecified
menu_item submenu
=>

procedure: gtk-menu-item-new #!optional label => gtk-widget
Create new menu item with optional label.
=>

procedure: gtk-radio-menu-item-new #!optional group label => gtk-radio-menu-item

Create new gtk-radio-menu-item. The optional group argument may be either #f or other object of gtk-radio-menu-item type. In a later case all chained items form a group, ensuring only one item may be active at a time.

Example. This creates three items in a group:

(let*((one (gtk-radio-menu-item-new #f  "One"))
      (two (gtk-radio-menu-item-new one "Two"))
      (many(gtk-radio-menu-item-new two "Many")))
  ...)

The menu shell widget

The misc widget

procedure: gtk-misc-set-padding misc::gtk-misc xpad::int ypad::int => #unspecified
misc xpad ypad
=>

procedure: gtk-misc-set-alignment misc::gtk-misc xalign::float yalign::float => #unspecified
misc xalign yalign
=>

The notebook widget

procedure: gtk-notebook-tab-pos o::gtk-notebook => gtk-position-type
o
=>

procedure: gtk-notebook-reorder-child notebook::gtk-notebook child::gtk-widget position::int => #unspecified
notebook child position
=>

procedure: gtk-notebook-set-menu-label notebook::gtk-notebook child::gtk-widget menu_label::gtk-widget => #unspecified
notebook child menu_label
=>

procedure: gtk-notebook-get-menu-label notebook::gtk-notebook child::gtk-widget => gtk-widget
notebook child
=>

procedure: gtk-notebook-set-tab-label notebook::gtk-notebook child::gtk-widget tab_label::gtk-widget => #unspecified
notebook child tab_label
=>

procedure: gtk-notebook-get-tab-label notebook::gtk-notebook child::gtk-widget => gtk-widget
notebook child
=>

procedure: gtk-notebook-popup-disable notebook::gtk-notebook => #unspecified
notebook
=>

procedure: gtk-notebook-popup-enable notebook::gtk-notebook => #unspecified
notebook
=>

procedure: gtk-notebook-set-tab-vborder notebook::gtk-notebook tab_vborder::int => #unspecified
notebook tab_vborder
=>

procedure: gtk-notebook-set-tab-hborder notebook::gtk-notebook tab_hborder::int => #unspecified
notebook tab_hborder
=>

procedure: gtk-notebook-set-homogeneous-tabs notebook::gtk-notebook homogenous::bool => #unspecified
notebook homogenous
=>

procedure: gtk-notebook-set-tab-border notebook::gtk-notebook border_width::int => #unspecified
notebook border_width
=>

procedure: gtk-notebook-set-scrollable notebook::gtk-notebook scrollable::bool => #unspecified
notebook scrollable
=>

procedure: gtk-notebook-set-show-border notebook::gtk-notebook show_border::bool => #unspecified
notebook show_border
=>

procedure: gtk-notebook-set-show-tabs notebook::gtk-notebook show_tabs::bool => #unspecified
notebook show_tabs
=>

procedure: gtk-notebook-set-tab-pos notebook::gtk-notebook pos::gtk-position-type => #unspecified
notebook pos
=>

procedure: gtk-notebook-prev-page notebook::gtk-notebook => #unspecified
notebook
=>

procedure: gtk-notebook-next-page notebook::gtk-notebook => #unspecified
notebook
=>

procedure: gtk-notebook-set-page notebook::gtk-notebook page_num::int => #unspecified
notebook page_num
=>

procedure: gtk-notebook-page-num notebook::gtk-notebook child::gtk-widget => int
notebook child
=>

procedure: gtk-notebook-get-nth-page notebook::gtk-notebook page_num::int => gtk-widget
notebook page_num
=>

procedure: gtk-notebook-get-current-page notebook::gtk-notebook => int
notebook
=>

procedure: gtk-notebook-remove-page notebook::gtk-notebook page_num::int => #unspecified
notebook page_num
=>

procedure: gtk-notebook-insert-page-menu notebook::gtk-notebook child::gtk-widget tab_label::gtk-widget menu_label::gtk-widget position::int => #unspecified
notebook child tab_label menu_label position
=>

procedure: gtk-notebook-insert-page notebook::gtk-notebook child::gtk-widget tab_label::gtk-widget position::int => #unspecified
notebook child tab_label position
=>

procedure: gtk-notebook-prepend-page-menu notebook::gtk-notebook child::gtk-widget tab_label::gtk-widget menu_label::gtk-widget => #unspecified
notebook child tab_label menu_label
=>

procedure: gtk-notebook-prepend-page notebook::gtk-notebook child::gtk-widget tab_label::gtk-widget => #unspecified
notebook child tab_label
=>

procedure: gtk-notebook-append-page-menu notebook::gtk-notebook child::gtk-widget tab_label::gtk-widget menu_label::gtk-widget => #unspecified
notebook child tab_label menu_label
=>

procedure: gtk-notebook-append-page notebook::gtk-notebook child::gtk-widget tab_label::gtk-widget => #unspecified
notebook child tab_label
=>

procedure: gtk-notebook-new => gtk-widget
=>

The option menu widget

procedure: gtk-option-menu-menu o::gtk-option-menu => gtk-widget
o
=>

procedure: gtk-option-menu-menu-item o::gtk-option-menu => gtk-widget
o
=>

procedure: gtk-option-menu-width o::gtk-option-menu => uint
o
=>

procedure: gtk-option-menu-height o::gtk-option-menu => uint
o
=>

procedure: gtk-option-menu-set-history option_menu::gtk-option-menu index::int => #unspecified
option_menu index
=>

procedure: gtk-option-menu-remove-menu option_menu::gtk-option-menu => #unspecified
option_menu
=>

procedure: gtk-option-menu-set-menu option_menu::gtk-option-menu menu::gtk-widget => #unspecified
option_menu menu
=>

procedure: gtk-option-menu-get-menu option_menu::gtk-option-menu => gtk-widget
option_menu
=>

procedure: gtk-option-menu-new => gtk-widget
=>

The paned widget

procedure: gtk-paned-gutter-size paned::gtk-paned size::int => #unspecified
paned size
=>

procedure: gtk-paned-handle-size paned::gtk-paned size::int => #unspecified
paned size
=>

procedure: gtk-paned-add2 paned::gtk-paned child::gtk-widget => #unspecified
paned child
=>

procedure: gtk-paned-add1 paned::gtk-paned child::gtk-widget => #unspecified
paned child
=>

The pixmap widget

procedure: gtk-pixmap-new filename::string w::gtk-widget => gtk-widget
Read pixmap file filename, widget w must descend from realized window.

The plug widget

procedure: gtk-plug-new socket_id::int => gtk-widget
socket_id
=>

procedure: gtk-plug-socket-window o::gtk-plug => gdk-window
o
=>

procedure: gtk-plug-same-app o::gtk-plug => bool
o
=>

The preview widget

procedure: gtk-preview-get-cmap => gdk-colormap
=>

procedure: gtk-preview-get-visual => gdk-visual
=>

procedure: gtk-preview-set-reserved nreserved::int => #unspecified
nreserved
=>

procedure: gtk-preview-set-install-cmap install_cmap::bool => #unspecified
install_cmap
=>

procedure: gtk-preview-set-color-cube nred_shades::uint ngreen_shades::uint nblue_shades::uint ngray_shades::uint => #unspecified
nred_shades ngreen_shades nblue_shades ngray_shades
=>

procedure: gtk-preview-set-expand preview::gtk-preview expand::bool => #unspecified
preview expand
=>

procedure: gtk-preview-size preview::gtk-preview width::int height::int => #unspecified
preview width height
=>

procedure: gtk-preview-new type::gtk-preview-type => gtk-widget
type
=>

The progress bar widget

procedure: gtk-progress-get-text-from-value progress::gtk-progress value::float => string
progress value
=>

procedure: gtk-progress-get-current-text progress::gtk-progress => string
progress
=>

procedure: gtk-progress-set-activity-mode progress::gtk-progress activity_mode::bool => #unspecified
progress activity_mode
=>

procedure: gtk-progress-get-value progress::gtk-progress => float
progress
=>

procedure: gtk-progress-set-value progress::gtk-progress value::float => #unspecified
progress value
=>

procedure: gtk-progress-set-percentage progress::gtk-progress percentage::float => #unspecified
progress percentage
=>

procedure: gtk-progress-configure progress::gtk-progress value::float min::float max::float => #unspecified
progress value min max
=>

procedure: gtk-progress-set-adjustment progress::gtk-progress adjustment::gtk-adjustment => #unspecified
progress adjustment
=>

procedure: gtk-progress-set-format-string progress::gtk-progress format::string => #unspecified
progress format
=>

procedure: gtk-progress-set-text-alignment progress::gtk-progress x_align::float y_align::float => #unspecified
progress x_align y_align
=>

procedure: gtk-progress-set-show-text progress::gtk-progress show_text::bool => #unspecified
progress show_text
=>

procedure: gtk-progress-bar-update progress_bar::gtk-progress-bar percentage::float => #unspecified
progress_bar percentage
=>

procedure: gtk-progress-bar-set-activity-blocks progressbar::gtk-progress-bar blocks::int => #unspecified
progressbar blocks
=>

procedure: gtk-progress-bar-set-activity-step progressbar::gtk-progress-bar step::int => #unspecified
progressbar step
=>

procedure: gtk-progress-bar-set-discrete-blocks progressbar::gtk-progress-bar blocks::int => #unspecified
progressbar blocks
=>

procedure: gtk-progress-bar-new => gtk-widget
=>

The radio button widget

procedure: gtk-radio-button-new-from-widget #!optional samegroup label => gtk-widget
samegroup label
=>

The range widget

procedure: gtk-range-set-adjustment range::gtk-range adjustment::gtk-adjustment => #unspecified
range adjustment
=>

procedure: gtk-range-set-update-policy range::gtk-range policy::gtk-update-type => #unspecified
range policy
=>

procedure: gtk-range-get-adjustment range::gtk-range => gtk-adjustment
range
=>

The ruler widget

procedure: gtk-ruler-draw-pos ruler::gtk-ruler => #unspecified
ruler
=>

procedure: gtk-ruler-draw-ticks ruler::gtk-ruler => #unspecified
ruler
=>

procedure: gtk-ruler-set-range ruler::gtk-ruler lower::float upper::float position::float max_size::float => #unspecified
ruler lower upper position max_size
=>

procedure: gtk-ruler-set-metric ruler::gtk-ruler metric::gtk-metric-type => #unspecified
ruler metric
=>

The scale widget

procedure: gtk-scale-draw-value scale::gtk-scale => #unspecified
scale
=>

procedure: gtk-scale-value-width scale::gtk-scale => int
scale
=>

procedure: gtk-scale-set-value-pos scale::gtk-scale pos::gtk-position-type => #unspecified
scale pos
=>

procedure: gtk-scale-set-draw-value scale::gtk-scale draw_value::bool => #unspecified
scale draw_value
=>

procedure: gtk-scale-set-digits scale::gtk-scale digits::uint => #unspecified
scale digits
=>

The scrollbar widget

The scrolled window widget

procedure: gtk-scrolled-window-set-policy scrolled_window::gtk-scrolled-window hscrollbar_policy::gtk-policy-type vscrollbar_policy::gtk-policy-type => #unspecified
scrolled_window hscrollbar_policy vscrollbar_policy
=>

procedure: gtk-scrolled-window-get-vadjustment scrolled_window::gtk-scrolled-window => gtk-adjustment
scrolled_window
=>

procedure: gtk-scrolled-window-get-hadjustment scrolled_window::gtk-scrolled-window => gtk-adjustment
scrolled_window
=>

procedure: gtk-scrolled-window-add-with-viewport scrolled_window::gtk-scrolled-window child::gtk-widget => #unspecified
scrolled_window child
=>

procedure: gtk-scrolled-window-new #!optional hadjustment vadjustment => gtk-widget
hadjustment vadjustment
=>

The separator widget

The statusbar widget

procedure: gtk-statusbar-remove statusbar::gtk-statusbar context_id::uint message_id::uint => #unspecified
statusbar context_id message_id
=>

procedure: gtk-statusbar-get-context-id statusbar::gtk-statusbar context_description::string => uint
statusbar context_description
=>

procedure: gtk-statusbar-pop statusbar::gtk-statusbar context_id::uint => #unspecified
statusbar context_id
=>

procedure: gtk-statusbar-push statusbar::gtk-statusbar context_id::uint text::string => uint
statusbar context_id text
=>

procedure: gtk-statusbar-new => gtk-widget
=>

The table widget

procedure: gtk-table-set-col-spacings table::gtk-table spacing::int => #unspecified
table spacing
=>

procedure: gtk-table-set-row-spacings table::gtk-table spacing::int => #unspecified
table spacing
=>

procedure: gtk-table-set-col-spacing table::gtk-table column::int spacing::int => #unspecified
table column spacing
=>

procedure: gtk-table-set-row-spacing table::gtk-table row::int spacing::int => #unspecified
table row spacing
=>

procedure: gtk-table-attach-defaults table::gtk-table child::gtk-widget left_attach::int right_attach::int top_attach::int bottom_attach::int => #unspecified
table child left_attach right_attach top_attach bottom_attach
=>

procedure: gtk-table-attach table::gtk-table child::gtk-widget left_attach::int right_attach::int top_attach::int bottom_attach::int #!optional xoptions yoptions xpadding ypadding => #unspecified
table child left_attach right_attach top_attach bottom_attach xoptions yoptions xpadding ypadding
=>

procedure: gtk-table-new rows::int columns::int homogenous::bool => gtk-widget
rows columns homogenous
=>

The tips query widget

procedure: gtk-tips-query-set-labels tips_query::gtk-tips-query label_inactive::string label_no_tip::string => #unspecified
tips_query label_inactive label_no_tip
=>

procedure: gtk-tips-query-set-caller tips_query::gtk-tips-query caller::gtk-widget => #unspecified
tips_query caller
=>

procedure: gtk-tips-query-stop-query tips_query::gtk-tips-query => #unspecified
tips_query
=>

procedure: gtk-tips-query-start-query tips_query::gtk-tips-query => #unspecified
tips_query
=>

procedure: gtk-tips-query-new => gtk-widget
=>

The text widget

procedure: gtk-text-forward-delete text::gtk-text nchars::uint => #unspecified
text nchars
=>

procedure: gtk-text-backward-delete text::gtk-text nchars::uint => #unspecified
text nchars
=>

procedure: gtk-text-insert text::gtk-text font fore back chars::string #!optional length => #unspecified
text font fore back chars length
=>

procedure: gtk-text-thaw text::gtk-text => #unspecified
text
=>

procedure: gtk-text-freeze text::gtk-text => #unspecified
text
=>

procedure: gtk-text-get-length text::gtk-text => uint
text
=>

procedure: gtk-text-get-point text::gtk-text => uint
text
=>

procedure: gtk-text-set-point text::gtk-text index::uint => #unspecified
text index
=>

procedure: gtk-text-set-adjustments text::gtk-text hadj::gtk-adjustment vadj::gtk-adjustment => #unspecified
text hadj vadj
=>

procedure: gtk-text-set-line-wrap text::gtk-text line_wrap::bool => #unspecified
text line_wrap
=>

procedure: gtk-text-set-word-wrap text::gtk-text word_wrap::bool => #unspecified
text word_wrap
=>

procedure: gtk-text-set-editable text::gtk-text editable::bool => #unspecified
text editable
=>

procedure: gtk-text-new #!optional hadj vadj => gtk-widget
hadj vadj
=>

procedure: gtk-text-hadj o::gtk-text => gtk-adjustment
o
=>

procedure: gtk-text-vadj o::gtk-text => gtk-adjustment
o
=>

The toggle button widget

procedure: gtk-check-button-new label::string => gtk-widget
label
=>

procedure: gtk-toggle-button-get-active toggle_button::gtk-toggle-button => bool
toggle_button
=>

procedure: gtk-toggle-button-set-active toggle_button::gtk-toggle-button is_active::bool => #unspecified
toggle_button is_active
=>

procedure: gtk-toggle-button-active o::gtk-toggle-button => bool
o
=>

procedure: gtk-toggle-button-draw-indicator o::gtk-toggle-button => bool
o
=>

The tool bar widget

procedure: gtk-toolbar-set-tooltips toolbar::gtk-toolbar enable::bool => #unspecified
toolbar enable
=>

procedure: gtk-toolbar-set-space-size toolbar::gtk-toolbar space_size::int => #unspecified
toolbar space_size
=>

procedure: gtk-toolbar-set-style toolbar::gtk-toolbar style::gtk-toolbar-style => #unspecified
toolbar style
=>

procedure: gtk-toolbar-set-orientation toolbar::gtk-toolbar orientation::gtk-orientation => #unspecified
toolbar orientation
=>

procedure: gtk-toolbar-insert-widget toolbar::gtk-toolbar widget::gtk-widget tooltip_text::string tooltip_private_text::string position::int => #unspecified
toolbar widget tooltip_text tooltip_private_text position
=>

procedure: gtk-toolbar-prepend-widget toolbar::gtk-toolbar widget::gtk-widget tooltip_text::string tooltip_private_text::string => #unspecified
toolbar widget tooltip_text tooltip_private_text
=>

procedure: gtk-toolbar-append-widget toolbar::gtk-toolbar widget::gtk-widget tooltip_text::string tooltip_private_text::string => #unspecified
toolbar widget tooltip_text tooltip_private_text
=>

procedure: gtk-toolbar-insert-space toolbar::gtk-toolbar position::int => #unspecified
toolbar position
=>

procedure: gtk-toolbar-prepend-space toolbar::gtk-toolbar => #unspecified
toolbar
=>

procedure: gtk-toolbar-append-space toolbar::gtk-toolbar => #unspecified
toolbar
=>

procedure: gtk-toolbar-new orientation::gtk-orientation style::gtk-toolbar-style => gtk-widget
orientation style
=>

The tool tips widget

procedure: gtk-tooltips-force-window tooltips::gtk-tooltips => #unspecified
tooltips
=>

procedure: gtk-tooltips-set-colors tooltips::gtk-tooltips background::gdk-color foreground::gdk-color => #unspecified
tooltips background foreground
=>

procedure: gtk-tooltips-set-tip tooltips::gtk-tooltips widget::gtk-widget tip_text tip_private::string => #unspecified
tooltips widget tip_text tip_private
=>

procedure: gtk-tooltips-set-delay tooltips::gtk-tooltips delay::int => #unspecified
tooltips delay
=>

procedure: gtk-tooltips-disable tooltips::gtk-tooltips => #unspecified
tooltips
=>

procedure: gtk-tooltips-enable tooltips::gtk-tooltips => #unspecified
tooltips
=>

procedure: gtk-tooltips-new => gtk-tooltips
=>

The tree widget

procedure: gtk-tree-set-view-lines tree::gtk-tree flag::bool => #unspecified
tree flag
=>

procedure: gtk-tree-set-view-mode tree::gtk-tree mode::gtk-tree-view-mode => #unspecified
tree mode
=>

procedure: gtk-tree-set-selection-mode tree::gtk-tree mode::gtk-selection-mode => #unspecified
tree mode
=>

procedure: gtk-tree-child-position tree::gtk-tree child::gtk-widget => int
tree child
=>

procedure: gtk-tree-unselect-child tree::gtk-tree child::gtk-widget => #unspecified
tree child
=>

procedure: gtk-tree-select-child tree::gtk-tree child::gtk-widget => #unspecified
tree child
=>

procedure: gtk-tree-unselect-item tree::gtk-tree item::int => #unspecified
tree item
=>

procedure: gtk-tree-select-item tree::gtk-tree item::int => #unspecified
tree item
=>

procedure: gtk-tree-clear-items tree::gtk-tree start::int end::int => #unspecified
tree start end
=>

procedure: gtk-tree-remove-item tree::gtk-tree child::gtk-widget => #unspecified
tree child
=>

procedure: gtk-tree-insert tree::gtk-tree child::gtk-widget position::int => #unspecified
tree child position
=>

procedure: gtk-tree-prepend tree::gtk-tree child::gtk-widget => #unspecified
tree child
=>

procedure: gtk-tree-append tree::gtk-tree child::gtk-widget => #unspecified
tree child
=>

procedure: gtk-tree-new => gtk-widget
=>

procedure: gtk-tree-item-collapse tree_item::gtk-tree-item => #unspecified
tree_item
=>

procedure: gtk-tree-item-expand tree_item::gtk-tree-item => #unspecified
tree_item
=>

procedure: gtk-tree-item-deselect tree_item::gtk-tree-item => #unspecified
tree_item
=>

procedure: gtk-tree-item-select tree_item::gtk-tree-item => #unspecified
tree_item
=>

procedure: gtk-tree-item-remove-subtree tree_item::gtk-tree-item => #unspecified
tree_item
=>

procedure: gtk-tree-item-set-subtree tree_item::gtk-tree-item subtree::gtk-widget => #unspecified
tree_item subtree
=>

procedure: gtk-tree-item-new label::string => gtk-widget
label
=>

The tree item widget

The vertical box widget

procedure: gtk-vbox-new #!optional homogenous spacing => gtk-widget
homogenous spacing
=>

The vertical button box widget

procedure: gtk-vbutton-box-set-layout-default layout::gtk-button-box-style => #unspecified
layout
=>

procedure: gtk-vbutton-box-set-spacing-default spacing::int => #unspecified
spacing
=>

procedure: gtk-vbutton-box-get-layout-default => gtk-button-box-style
=>

procedure: gtk-vbutton-box-get-spacing-default => int
=>

procedure: gtk-vbutton-box-new => gtk-widget
=>

The viewport widget

procedure: gtk-viewport-set-shadow-type viewport::gtk-viewport type::gtk-shadow-type => #unspecified
viewport type
=>

procedure: gtk-viewport-set-vadjustment viewport::gtk-viewport adjustment::gtk-adjustment => #unspecified
viewport adjustment
=>

procedure: gtk-viewport-set-hadjustment viewport::gtk-viewport adjustment::gtk-adjustment => #unspecified
viewport adjustment
=>

procedure: gtk-viewport-get-vadjustment viewport::gtk-viewport => gtk-adjustment
viewport
=>

procedure: gtk-viewport-get-hadjustment viewport::gtk-viewport => gtk-adjustment
viewport
=>

procedure: gtk-viewport-new hadjustment::gtk-adjustment vadjustment::gtk-adjustment => gtk-widget
hadjustment vadjustment
=>

The vertical paned widget

procedure: gtk-vpaned-new => gtk-widget
=>

The vertical ruler widget

procedure: gtk-vruler-new => gtk-widget
=>

The vertical scrollbar widget

procedure: gtk-vscrollbar-new adjustment::gtk-adjustment => gtk-widget
adjustment
=>

The vertical separator widget

procedure: gtk-vseparator-new => gtk-widget
=>

The base widget

procedure: gtk-grab-remove widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-grab-get-current => gtk-widget
=>

procedure: gtk-grab-add widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-style o::gtk-widget => gtk-style
o
=>

procedure: gtk-widget-window o::gtk-widget => gdk-window
o
=>

procedure: gtk-widget-mapped widget::gtk-widget => bool
widget
=>

procedure: gtk-widget-get-default-style => gtk-style
=>

procedure: gtk-widget-get-default-visual => gdk-visual
=>

procedure: gtk-widget-get-default-colormap => gdk-colormap
=>

procedure: gtk-widget-set-default-style style::gtk-style => #unspecified
style
=>

procedure: gtk-widget-set-default-visual visual::gdk-visual => #unspecified
visual
=>

procedure: gtk-widget-set-default-colormap cmap::gdk-colormap => #unspecified
cmap
=>

procedure: gtk-widget-pop-style => #unspecified
=>

procedure: gtk-widget-pop-visual => #unspecified
=>

procedure: gtk-widget-pop-colormap => #unspecified
=>

procedure: gtk-widget-push-style style::gtk-style => #unspecified
style
=>

procedure: gtk-widget-push-visual visual::gdk-visual => #unspecified
visual
=>

procedure: gtk-widget-push-colormap cmap::gdk-colormap => #unspecified
cmap
=>

procedure: gtk-widget-is-ancestor widget::gtk-widget ancestor::gtk-widget => bool
widget ancestor
=>

procedure: gtk-widget-get-extension-events widget::gtk-widget => gdk-event-mask
widget
=>

procedure: gtk-widget-get-events widget::gtk-widget => gdk-event-mask
widget
=>

procedure: gtk-widget-get-style widget::gtk-widget => gtk-style
widget
=>

procedure: gtk-widget-get-visual widget::gtk-widget => gdk-visual
widget
=>

procedure: gtk-widget-get-colormap widget::gtk-widget => gdk-colormap
widget
=>

procedure: gtk-widget-get-ancestor widget::gtk-widget type::gtk-type => gtk-widget
widget type
=>

procedure: gtk-widget-get-toplevel widget::gtk-widget => gtk-widget
widget
=>

procedure: gtk-widget-set-extension-events widget::gtk-widget events::gdk-event-mask => #unspecified
widget events
=>

procedure: gtk-widget-set-events widget::gtk-widget events::gdk-event-mask => #unspecified
widget events
=>

procedure: gtk-widget-set-usize widget::gtk-widget height::int width::int => #unspecified
widget height width
=>

procedure: gtk-widget-set-uposition widget::gtk-widget x::int y::int => #unspecified
widget x y
=>

procedure: gtk-widget-set-style widget::gtk-widget style::gtk-style => #unspecified
widget style
=>

procedure: gtk-widget-set-parent widget::gtk-widget parent::gtk-widget => #unspecified
widget parent
=>

procedure: gtk-widget-set-sensitive widget::gtk-widget sensitive::bool => #unspecified
widget sensitive
=>

procedure: gtk-widget-set-state widget::gtk-widget state::gtk-state-type => #unspecified
widget state
=>

procedure: gtk-widget-get-name widget::gtk-widget => string
widget
=>

procedure: gtk-widget-set-name widget::gtk-widget name::string => #unspecified
widget name
=>

procedure: gtk-widget-grab-default widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-grab-focus widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-popup widget::gtk-widget x::int y::int => #unspecified
widget x y
=>

procedure: gtk-widget-reparent widget::gtk-widget new_parent::gtk-widget => #unspecified
widget new_parent
=>

procedure: gtk-widget-activate widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-event widget::gtk-widget event::gdk-event => bool
widget event
=>

procedure: gtk-widget-add-accelerator widget::gtk-widget accel_signal::string accel_group::gtk-accel-group accel_key::uint accel_mods::gdk-modifier-type accel_flags::gtk-accel-flags => #unspecified
widget accel_signal accel_group accel_key accel_mods accel_flags
=>

procedure: gtk-widget-unrealize widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-realize widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-unmap widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-map widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-hide-all widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-show-all widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-hide widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-show widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-unparent widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-destroy widget::gtk-widget => #unspecified
widget
=>

procedure: gtk-widget-unset-flags widget::gtk-widget flags::gtk-widget-flags => #unspecified
widget flags
=>

procedure: gtk-widget-set-flags widget::gtk-widget flags::gtk-widget-flags => #unspecified
widget flags
=>

procedure: gtk-widget-flags widget::gtk-widget => gtk-widget-flags
widget
=>

procedure: gtk-widget-state widget::gtk-widget => gtk-state-type
widget
=>

The window widget

procedure: gtk-window-activate-default window::gtk-window => int
window
=>

procedure: gtk-window-activate-focus window::gtk-window => int
window
=>

procedure: gtk-window-position window::gtk-window position::gtk-window-position => #unspecified
window position
=>

procedure: gtk-window-set-policy window::gtk-window allow_shrink::bool allow_grow::bool auto_shrink::bool => #unspecified
window allow_shrink allow_grow auto_shrink
=>

procedure: gtk-window-set-default window::gtk-window default::gtk-widget => #unspecified
window default
=>

procedure: gtk-window-set-focus window::gtk-window focus::gtk-widget => #unspecified
window focus
=>

procedure: gtk-window-set-wmclass window::gtk-window wmclass_class::string wmclass_name::string => #unspecified
window wmclass_class wmclass_name
=>

procedure: gtk-window-set-title window::gtk-window title::string => #unspecified
window title
=>

procedure: gtk-window-new #!optional type => gtk-widget
type
=>

procedure: gtk-window-set-position window::gtk-window position::gtk-window-position => #unspecified
window position
=>

Utility objects

The accelerator table object

The adjustment object

procedure: gtk-adjustment-set-value adjustment::gtk-adjustment value::float => #unspecified
adjustment value
=>

procedure: gtk-adjustment-clamp-page adjustment::gtk-adjustment lower::float upper::float => #unspecified
adjustment lower upper
=>

procedure: gtk-adjustment-value-changed adjustment::gtk-adjustment => #unspecified
adjustment
=>

procedure: gtk-adjustment-changed adjustment::gtk-adjustment => #unspecified
adjustment
=>

procedure: gtk-adjustment-new value::float lower::float upper::float step_increment::float page_increment::float page_size::float => gtk-object
value lower upper step_increment page_increment page_size
=>

procedure: gtk-adjustment-value o::gtk-adjustment => float
o
=>

procedure: gtk-adjustment-lower o::gtk-adjustment => float
o
=>

procedure: gtk-adjustment-upper o::gtk-adjustment => float
o
=>

procedure: gtk-adjustment-step-increment o::gtk-adjustment => float
o
=>

procedure: gtk-adjustment-page-increment o::gtk-adjustment => float
o
=>

procedure: gtk-adjustment-page-size o::gtk-adjustment => float
o
=>

The GC object

The data object

The style object

Initialization, exit and other features

Initializing and exiting bigloo-gtk

procedure: gtk-input-remove tag::int => #unspecified
tag
=>

procedure: gtk-events-pending => int
=>

procedure: gtk-init argv => pair-nil

Init the GTK and GDK environment. You must call this procedure prior making any other GTK+ call. The argv is the same list of arguments that were passed to the application. The procedure process some of list elements and returns the copy of argv with all processed arguments removed.

Example: provided that localhost:0 is valid address of X display:

(gtk-init "my-application" "--display" "localhost:0" "file1" "file2")
=> ("my-application" "file1" "file2")

procedure: gtk-exit #!optional code => #unspecified
code
=>

procedure: gtk-main-iteration-do val::bool => int
val
=>

procedure: gtk-main-iteration => int
=>

procedure: gtk-main-quit => #unspecified
=>

procedure: gtk-main-level => int
=>

procedure: gtk-main => #unspecified
=>

procedure: gtk-timeout-remove id::uint => #unspecified
Remove timeout, previously created by identifier id returned by gtk-timeout-add.

In this example the "Hello" message is printed only once.

(letrec((id(gtk-timeout-add
	    1000
	    (lambda()
	      (print "Hello")
	      (gtk-timeout-remove id)))))
  ...)

procedure: gtk-timeout-add interval::uint thunk::procedure => uint

Add a thunk procedure that will be called every interval milliseconds. Return the timeout identifier suitable for passing to gtk-timeout-remove.

The thunk must be procedure of no arguments. If this procedure returns #f, the timeout is removed just after the first thunk invocation.

Example1: print "Hello" every second.

(gtk-timeout-add 1000 (lambda()(print "Hello")))
=> 9

Example2: print "Hello" only once.

(gtk-timeout-add 1000 (lambda()(print "Hello") #f))
=> 9

procedure: gtk-idle-remove id::uint => #unspecified
Remove timeout, previously created by identifier id returned by gtk-idle-add. In this example the "Hello" message is printed only once.
(letrec((id(gtk-idle-add
	    (lambda()
	      (print "Hello")
	      (gtk-idle-remove id)))))
  ...)

procedure: gtk-idle-add callback::procedure => uint

Add a thunk procedure that will be called (as GTK+ tutorial says) "when nothing else is happening". Return the idle identifier suitable for passing to gtk-idle-remove.

The thunk must be procedure of no arguments. If this procedure returns #f, the idle task is removed just after the first thunk invocation.

Example1: print "Hello" repeatedly.

(gtk-idle-add 1000 (lambda()(print "Hello")))
=> 9

Example2: print "Hello" only once.

(gtk-idle-add 1000 (lambda()(print "Hello") #f))
=> 9

Customization of the library

Simplified menu creation

Simplified tree creation

Pop up help mechanism

Resource Files

procedure: gtk-rc-parse file::string => #unspecified
file
=>

Macros defined by all objects

Using bigloo-gtk

The simplest bigloo-gtk program

Hello world in bigloo-gtk

An enhanced hello world

Making Hello World II robust

Object internals

Signal internals

Widget internals

Bigloo LDAP interface

This chapter describes a scheme interface for client LDAP library. The interface allows to write LDAP clients with Bigloo scheme. It was tested with OpenLDAP-1.2.9 package from http://www.openldap.org (12).

The chapter includes many verbatim excerpts from corresponding original manual pages, describing the C interface, which are provided with the package from http://www.openldap.org

API for C library

LDAP types

foreign: ldap
LDAP server connection handle, resulted from successful call of ldap-open or ldap-init.

Bigloo type: attlist

List of attribute names and values. LDAP types is a scheme list, each element of which is a scheme list itself, the first element of which is an attribute name (scheme string), and the rest of which is (possibly empty) list of attribute values (scheme strings). For example :

'(("objectclass" "organizationalPerson")
  ("telephonenumber" "1234567" "7654321"))

LDAP connection

procedure: ldap-init #!optional host::string port::int
host
LDAP server hostname string. See ldap_init(3) manual page for details.
port
LDAP server port number. See ldap_init(3) manual page for details. Allocates an LDAP structure but does not open an initial connection Return LDAP connection handle of type ldap. See also ldap_init(3) manual page.

procedure: ldap-open #!optional host::string port::int
host
LDAP server hostname string. See ldap_open(3) manual page for details.
port
LDAP server port number. See ldap_open(3) manual page for details.

Opens a connection to an LDAP server and allocates an LDAP structure

Return LDAP connection handle of type ldap.

See also ldap_open(3) manual page.

procedure: ldap-bind! ld::ldap who::string cred::string
ld
Result of a successful call to ldap-open or ldap-init
who
Specifies DN for an LDAP entry corresponding to user logging in
cred
Specifies the userPassword attribute value of a LDAP entry corresponding to the user logging in or other credentials

ldap-bind! provides the connection with authentication information, and is an interface to ldap_simple_bind C client library function.

Example

This binds the user with DN cn=root,o=jet,c=ru and password secret :

(let((ld(ldap-open)))
 (ldap-bind! ld "cn=root,o=jet,c=ru" "secret")
 ...
 )

See also ldap_simple_bind(3) manual page.

procedure: ldap-unbind! ld::ldap
ld
Result of a successful call to ldap-open or ldap-init

ldap-unbind! unbinds from directory, terminates current association, closes connection and frees resources contained in the corresponding LDAP structure

See also ldap_unbind(3) manual page.

LDAP data modifying

procedure: ldap-add ld::ldap dn::string mods::attlist => #unspecified
ld
Result of a successful call to ldap-open or ldap-init
dn
Specifies DN for a LDAP entry to add
mods
Specifies non-empty attlist. See section LDAP types.

ldap-add adds new LDAP entry, it is an interface to ldap_add C library function.

Return #unspecified. Generates exception in case of error. Use ldap-errno to get LDAP error code.

Example :

(let((ld(ldap-open))) ;; open default LDAP connection
 (ldap-bind ld "cn=root,o=jet,c=ru" "secret") ;; introduce self to server
 ;; add new entry
 (ldap-add ld
         "cn=Tsichevski,o=jet,c=ru"
         '(("cn" "Tsichevski Vladimir")
           ("objectclass" "person")
           ("organization" "jet"))))

See also ldap_add(3) manual page.

procedure: ldap-modify-add ld::ldap dn::string mods::ldapattr
ld
Result of a successful call to ldap-open or ldap-init
dn
Specifies DN for an existing LDAP entry Specifies non-empty list of modifiers. See section LDAP types.

ldap-modify-add adds new attributes to LDAP entry, it is an interface to ldap_modify C library function.

Example :

(let((ld(ldap-open)))
 (ldap-bind ld "cn=root,o=jet,c=ru" "secret")
 (ldap-modify-add ld
                 "cn=Tsichevski,o=jet,c=ru"
                 '(("cn" "Tsichevski Vladimir")
                 ("objectclass" "person")
                 ("organization" "jet"))))

See alsoldap_modify(3) manual page.

procedure: ldap-modify-delete ld::ldap dn::string mods::attlist
ld
Result of a successful call to ldap-open or ldap-init
dn
Specifies DN for an existing LDAP entry
mods
Specifies non-empty attlist. See section LDAP types.

ldap-modify-delete removes attributes from LDAP entry, and is an interface to ldap_modify C API function.

Example :

In the following example the value jet of attribute organization will be removed from entry cn=Tsichevski,o=jet,c=ru.

(let((ld(ldap-open)))
 (ldap-bind ld "cn=root,o=jet,c=ru" "secret")
 (ldap-modify-delete ld
                 "cn=Tsichevski,o=jet,c=ru"
                 '(("organization" "jet"))))

In the next example the entire attribute organization will be removed from cn=Tsichevski,o=jet,c=ru entry.

(let((ld(ldap-open)))
 (ldap-bind ld "cn=root,o=jet,c=ru" "secret")
 (ldap-modify-delete ld
                 "cn=Tsichevski,o=jet,c=ru"
                 '(("organization"))))

See also ldap_modify(3) manual page.

procedure: ldap-modify-replace ld::ldap dn::string mods::attlist
ld
Result of a successful call to ldap-open or ldap-init
dn
Specifies the distinct name of an existing LDAP entry
mods
Specifies non-empty attlist. See section LDAP types.

ldap-modify-replace replaces attributes of LDAP entry, creating the attribute in necessary, and is an interface to ldap_modify LDAP client library.

Example :

In the following example the new value jet of attribute organization replaces the old value in entry cn=Tsichevski,o=jet,c=ru.

(let((ld(ldap-open)))
 (ldap-bind ld "cn=root,o=jet,c=ru" "secret")
 (ldap-modify-replace ld
                 "cn=Tsichevski,o=jet,c=ru"
                 '(("organization" "jet"))))

See also ldap_modify(3) manual page.

procedure: ldap-delete ld::ldap dn::string
ld
Result of a successful call to ldap-open or ldap-init
dn
Specifies DN for an existing LDAP entry to remove

ldap-delete removes LDAP entry, and is an interface to ldap_delete C API function.

Example :

(let((ld(ldap-open)))
 (ldap-bind ld "cn=root,o=jet,c=ru" "secret")
 (ldap-delete ld
         "cn=Tsichevski,o=jet,c=ru"))

See also ldap_delete(3) manual page.

LDAP searching

procedure: ldap-search ld::ldap #!key base scope filter atts attrsonly?

ld
Result of a successful call to ldap-open or ldap-init
base
Search base DN. System default value used if not specified. See ldap.conf(5) manual page.
scope
Symbol base or integer 0, to search the object itself, symbol onelevel or integer 1, to search the object's immediate children, symbol subtree or integer 2 to get all the object subtree. The default is subtree.
filter
String representation of the filter to apply. See ldap_search(3) manual page for details. Default is "objectclass=*".
atts
List of names of LDAP attributes to be shown in search results. If omitted, all the attributes will be shown.
attrsonly
If true, then search result will have only the names of LDAP attributes (no attribute values).

ldap-search returns integer result LDAP message id or raises an exception in case of error.

See example in ldap-next-entry.

See also ldap_search(3) manual page.

procedure: ldap-count-entries ld::ldap msg::ldap-message => int

ld
Result of a successful call to ldap-open or ldap-init LDAP message object, resulted from successful invocation of ldap-result

Return value

ldap-count-entries returns the number of entries in search result or raises an exception in case of error.

Example :

In this example the total number of entries in LDAP tree is measured :

(let*((ld(ldap-open))
 (msgid(ldap-search ld atts: '()));; only DN's, no attributes
 (result(ldap-result ld msgid)))
 (ldap-count-entries ld result))

See also ldap_count_entries(3) manual page.

procedure: ldap-first-entry ld::ldap msg::ldap-message*
ld
Result of a successful call to ldap-open or ldap-init LDAP message object, resulted from successful invocation of ldap-result

ldap-first-entry returns the first result entry or #f if no more entries available.

The following returns root entry in LDAP tree:

(let*((ld(ldap-open))
 (msgid(ldap-search ld atts: '()))
 (result(ldap-result ld msgid)))
 (ldap-first-entry ld result))

See also ldap_first_entry(3) manual page.

procedure: ldap-get-dn ld::ldap msg::ldap-message*
ld
Result of a successful call to ldap-open or ldap-init
msg
LDAP message object as returned from ldap-first-entry or ldap-next-entry

return DN of LDAP message

See also ldap_get_dn(3) manual page.

procedure: ldap-get-attributes ld::ldap msg::ldap-message* => attlist
ld
Result of a successful call to ldap-open or ldap-init
msg
LDAP message object as returned from ldap-first-entry or ldap-next-entry

Return list of entry attributes in form of attlist. See section LDAP types.

Example :

See example in ldap-next-entry.

procedure: ldap-get-values ld::ldap msg::ldap-message* attr::string
ld
Result of a successful call to ldap-open or ldap-init
msg
The LDAP message object returned from ldap-first-entry, ldap-next-entry
attr
The attribute name (scheme string)

returns values of specific attribute

Return list of attribute values (scheme strings) or #f of entry has no such attribute.

Example :

The following statement returns first value of attribute objectclass of LDAP root entry

(let*((ld(ldap-open))
 (msgid(ldap-search ld))
 (result(ldap-result ld msgid))
 (msg(ldap-first-entry ld result)))
 (ldap-get-values ld result "objectclass"))

=> ("organization")

See also ldap_get_values(3) manual page.

procedure: ldap-message-free msg::ldap-message*
msg
LDAP message object returned from ldap-first-entry, ldap-next-entry

frees an LDAP message structure

procedure: ldap-next-entry ld::ldap msg::ldap-message*
ld
Result of a successful call to ldap-open or ldap-init LDAP message object, resulted from successful invocation of ldap-result

ldap-next-entry returns the result entry following given entry or #f if no more entries available.

Example :

This opens LDAP connection, and retrieves all antries in the LDAP tree :

(let*((ld(ldap-open))
      (msgid(ldap-search ld atts: '()))
      (result(ldap-result ld msgid)))
  (let loop((msg(ldap-first-entry ld result))
            (accu '()))
    (if msg
        (let((node(cons(ldap-get-dn ld msg)
                       (ldap-get-attributes ld msg))))
          (loop
           (ldap-next-entry ld msg)
           (cons node accu)))
        (begin(ldap-message-free result)
              (reverse accu)))))
=>
(("dc=jet,dc=msk,dc=ru"
  ("cn" "Jet Infosystems Int.")
  ("objectclass" "dmd"))
 ("uid=archive,dc=jet,dc=msk,dc=ru"
  ("uid" "archive")
  ("objectclass" "documentSeries")
  ("cn" "Archive of documents"))
...

See also ldap_first_entry(3) manual page.

procedure: ldap-result ld::ldap msgid::int #!optional timeout
ld
Result of a successful call to ldap-open or ldap-init
msgid
Specifies LDAP request id, returned by successful invocation of one of LDAP operation routines (e.g., ldap-search, ldap-modify).
timeout
Optionally specifies the response waiting timeout in seconds. If is not provided the infinite wait assumed.

This routine is used to wait for and return the result of an operation previously initiated by one of the LDAP operation routines (e.g., ldap-search, ldap-modify).

ldap-result returns the result LDAP message or raises an exception in case of error.

See example in ldap-next-entry.

See also ldap_result(3) manual page.

LDAP cache control

procedure: ldap-flush-cache! ld::ldap
ld
Result of a successful call to ldap-open or ldap-init

Deletes cache contents, but does not effect it in any other way

See also ldap_flush_cache(3) manual page.

procedure: ldap-destroy-cache! ld::ldap
ld
Result of a successful call to ldap-open or ldap-init

Turn off caching and completely remove cache from memory

See also ldap_destroy_cache(3) manual page.

procedure: ldap-disable-cache! ld::ldap
ld
Result of a successful call to ldap-open or ldap-init

Temporarily disables use of cache (new requests are not cached and cache is not checked when returning results). It does not delete the cache contents from memory

See also ldap_disable_cache(3) manual page.

procedure: ldap-enable-cache! ld::ldap timeout::int maxmem::int
ld
Result of a successful call to ldap-open or ldap-init
timeout
Timeout in seconds. Used to decide how long to keep cached requests
maxmem
Cache size limit in bytes. Used to set an upper bound on how much memory cache will use. You can specify 0 for maxmem to restrict cache size by the timeout only.

Turns on local caching or changes cache parameters (lifetime of cached requests and memory used).

See also ldap_enable_cache(3) manual page.

procedure: ldap-set-cache-options! ld::ldap opts::int
ld
Result of a successful call to ldap-open or ldap-init
opts
See ldap_set_cache_options(3) manual page for details.

See ldap_set_cache_options(3) manual page for details.

procedure: ldap-uncache-entry! ld::ldap dn::string
ld
Result of a successful call to ldap-open or ldap-init
dn
DN of entry to remove.

Removes all requests that make reference to the DN from the cache

See also ldap_uncache_entry(3) manual page.

procedure: ldap-uncache-request! ld::ldap msgid::int
ld
Result of a successful call to ldap-open or ldap-init
msgid
Specifies LDAP request id, returned by successful invocation of one of LDAP operation routines (e.g., ldap-search, ldap-modify).

remove the request indicated by the LDAP request id msgid from the cache

See also ldap_uncache_request(3) manual page.

LDAP errors handling

procedure: ldap-errno ld::ldap => int
ld
Result of a successful call to ldap-open or ldap-init

Result of the last LDAP API call. The value of 0 if no error. To get a readable error description use ldap-error-string.

procedure: ldap-error-string errno::int => string
errno
LDAP error number. Use ldap-errno to get this value from ldap structure.

Interface to ldap_err2string() C API call.

See also ldap_err2string(3) manual page.

LDAP misc utilities

procedure: ldap-explode-dn dn::string
dn
DN string as returned by ldap-get-dn

Takes a DN as returned by ldap-get-dn and breaks it up into its component parts. This is an interface to ldap_explode_dn() C call.

See also ldap_explode_dn(3) manual page.

Example :

(ldap-explode-dn " o=jet, c=ru") => ("c=ru" " o=jet")

procedure: ldap-answer ld::ldap msgid::int => pair-nil

Given a result of successful ldap-search operation msgid, returns the list of LDAP entries. Every element of this list is a result of cons operation on the DN of the entry, and entry attribute list in a attlist format.

This example code does essentially same operation as the example code provided in ldap-next-entry section.

(let*((ld(ldap-open))
      (msgid(ldap-search ld)))
  (ldap-answer ld msgid))

procedure: ldap-delete-recursive ld::ldap dn::bstring => pair-nil

This procedure deletes the LDAP entry along with all descendants of that entry. Return the entry list just deleted in a form described in ldap-answer section.

procedure: current-ldap #!optional new-value

Realizes the concept of default LDAP connection. Other procedures use the result of calling current-ldap procedure as a default LDAP connection handle.

=>

procedure: ldap-defbase #!optional arg => bstring

Realizes the ldap default base concept according to the following rules:

(ldap-defbase)
=> "dc=jet,dc=msk,dc=ru"

procedure: ldap-commit! dn::bstring new-atts::pair #!optional ldap

Intellectual LDAP entry update. Reads the LDAP entry, examines the difference between the old attributes and the new ones. Performs the appropriate updates: removes the obsolete attributes with the use of ldap-modify-delete, adds the new attributes using ldap-modify-add, replaces the attribute values with the use of ldap-modify-replace.

Concept Index

Jump to: a - c - l - m - p - r - s

a

  • adding attributes to LDAP entry
  • adding LDAP entry
  • afile
  • c

  • control flow
  • l

  • LDAP attributes adding
  • LDAP attributes removing
  • LDAP attributes replacing
  • LDAP cache deleting, LDAP cache deleting
  • LDAP cache disabling
  • LDAP cache enabling
  • LDAP cache options
  • LDAP connection authorize, LDAP connection authorize
  • LDAP connection default
  • LDAP connection initialize
  • LDAP connection management
  • LDAP connection opening
  • LDAP DN parsing
  • LDAP entry adding
  • LDAP entry caching control
  • LDAP entry removing
  • LDAP errors, LDAP errors
  • LDAP message attributes
  • LDAP message releasing
  • LDAP request caching control
  • LDAP search performing
  • LDAP search results browsing, LDAP search results browsing, LDAP search results browsing, LDAP search results browsing
  • LDAP search results retrieving, LDAP search results retrieving
  • LDAP update incremental
  • List Library
  • m

  • modules
  • MzScheme compatibility, MzScheme compatibility, MzScheme compatibility, MzScheme compatibility, MzScheme compatibility, MzScheme compatibility, MzScheme compatibility, MzScheme compatibility, MzScheme compatibility
  • p

  • process time measuring
  • r

  • RDBMS connection closing
  • RDBMS connection opening
  • RDBMS errors reporting
  • RDBMS query executing
  • RDBMS query parameter binding for input
  • RDBMS query preparing
  • RDBMS query result obtaining
  • RDBMS query result querying
  • RDBMS query result structure querying
  • RDBMS session answer canceling
  • RDBMS session creating
  • RDBMS session releasing
  • RDBMS transaction beginning
  • RDBMS transaction committing
  • RDBMS transaction rolling back
  • Regular Expressions (Basic)
  • removing LDAP attributes
  • removing LDAP entries
  • replacing LDAP attributes
  • s

  • SRFI
  • SRFI-13
  • String Library
  • Type Index

    Jump to: a - c - i - l - n - s - t

    a

  • attlist
  • c

  • connection
  • i

  • iconv
  • l

  • ldap
  • n

  • node
  • s

  • session
  • t

  • tm
  • transaction
  • Procedure Index

    Jump to: a - b - c - d - e - f - g - h - i - k - l - m - n - o - p - r - s - t - u - x

    a

  • acquire on connection
  • b

  • begin-transaction! on connection
  • bind! on session
  • build-path
  • c

  • cancel! on session
  • case-lambda
  • char->hex
  • check-substring-spec
  • close
  • commit-transaction! on connection
  • crypt
  • ctime
  • current-directory
  • current-ldap
  • current-milliseconds
  • current-node
  • current-seconds
  • cuserid
  • d

  • daylight
  • dbname
  • describe on session
  • directory-exists?
  • dismiss! on connection
  • dismiss! on session
  • dn-parent
  • dn-rdn
  • dn-relative
  • e

  • environ
  • errno
  • error-string on rdbms-object
  • execute on session
  • f

  • fdread
  • fdwrite
  • fetch! on session
  • format
  • fprintf
  • g

  • gdk-beep
  • gdk-color-blue
  • gdk-color-green
  • gdk-color-parse
  • gdk-color-red
  • gdk-colormap-alloc-color
  • gdk-draw-arc
  • gdk-draw-line
  • gdk-draw-pixmap
  • gdk-draw-rectangle
  • gdk-draw-string
  • gdk-event-button
  • gdk-event-button-state
  • gdk-event-configure-height
  • gdk-event-configure-width
  • gdk-event-configure-x
  • gdk-event-configure-y
  • gdk-event-deviceid
  • gdk-event-in
  • gdk-event-is-hint
  • gdk-event-key-state
  • gdk-event-keyval
  • gdk-event-notify-detail
  • gdk-event-pressure
  • gdk-event-send-event
  • gdk-event-source
  • gdk-event-string
  • gdk-event-subwindow
  • gdk-event-time
  • gdk-event-type
  • gdk-event-visibility-state
  • gdk-event-window
  • gdk-event-x
  • gdk-event-x-root
  • gdk-event-xtilt
  • gdk-event-y
  • gdk-event-y-root
  • gdk-event-ytilt
  • gdk-flush
  • gdk-font-load
  • gdk-font-ref
  • gdk-font-unref
  • gdk-gc-new
  • gdk-gc-set-background
  • gdk-gc-set-clip-origin
  • gdk-gc-set-exposures
  • gdk-gc-set-fill
  • gdk-gc-set-font
  • gdk-gc-set-foreground
  • gdk-gc-set-function
  • gdk-gc-set-line-attributes
  • gdk-gc-set-subwindow
  • gdk-gc-set-ts-origin
  • gdk-pixmap-new
  • gdk-window-clear
  • gdk-window-clear-area
  • gdk-window-clear-area-e
  • gdk-window-get-id
  • gdk-window-get-parent
  • getlogin
  • getpid
  • getppid
  • getpwnam
  • gmtime
  • gtk-accel-group-add
  • gtk-accel-group-attach
  • gtk-accel-group-detach
  • gtk-accel-group-lock
  • gtk-accel-group-new
  • gtk-accel-group-remove
  • gtk-accel-group-unlock
  • gtk-accel-label-new
  • gtk-accel-label-set-accel-widget
  • gtk-adjustment-changed
  • gtk-adjustment-clamp-page
  • gtk-adjustment-lower
  • gtk-adjustment-new
  • gtk-adjustment-page-increment
  • gtk-adjustment-page-size
  • gtk-adjustment-set-value
  • gtk-adjustment-step-increment
  • gtk-adjustment-upper
  • gtk-adjustment-value
  • gtk-adjustment-value-changed
  • gtk-alignment-new
  • gtk-alignment-set
  • gtk-arg-name
  • gtk-arg-type
  • gtk-arrow-new
  • gtk-arrow-set
  • gtk-aspect-frame-new
  • gtk-aspect-frame-set
  • gtk-box-pack-end
  • gtk-box-pack-end-defaults
  • gtk-box-pack-start
  • gtk-box-pack-start-defaults
  • gtk-box-reorder-child
  • gtk-box-set-child-packing
  • gtk-box-set-homogeneous
  • gtk-box-set-spacing
  • gtk-button-box-get-layout
  • gtk-button-box-get-spacing
  • gtk-button-box-set-child-ipadding
  • gtk-button-box-set-child-ipadding-default
  • gtk-button-box-set-child-size
  • gtk-button-box-set-child-size-default
  • gtk-button-box-set-layout
  • gtk-button-box-set-spacing
  • gtk-button-button-down
  • gtk-button-child
  • gtk-button-clicked
  • gtk-button-enter
  • gtk-button-in-button
  • gtk-button-leave
  • gtk-button-new
  • gtk-button-pressed
  • gtk-button-released
  • gtk-calendar-clear-marks
  • gtk-calendar-freeze
  • gtk-calendar-mark-day
  • gtk-calendar-new
  • gtk-calendar-select-day
  • gtk-calendar-select-month
  • gtk-calendar-thaw
  • gtk-calendar-unmark-day
  • gtk-check-button-new, gtk-check-button-new
  • gtk-check-menu-item-active
  • gtk-check-menu-item-new
  • gtk-check-menu-item-set-active
  • gtk-check-menu-item-set-show-toggle
  • gtk-check-menu-item-set-state
  • gtk-check-menu-item-toggled
  • gtk-clist-append
  • gtk-clist-clear
  • gtk-clist-column-title-active
  • gtk-clist-column-title-passive
  • gtk-clist-column-titles-active
  • gtk-clist-column-titles-hide
  • gtk-clist-column-titles-passive
  • gtk-clist-column-titles-show
  • gtk-clist-columns-autosize
  • gtk-clist-freeze
  • gtk-clist-get-cell-style
  • gtk-clist-get-cell-type
  • gtk-clist-get-column-widget
  • gtk-clist-get-hadjustment
  • gtk-clist-get-row-style
  • gtk-clist-get-selectable
  • gtk-clist-get-vadjustment
  • gtk-clist-moveto
  • gtk-clist-new
  • gtk-clist-optimal-column-width
  • gtk-clist-prepend
  • gtk-clist-remove
  • gtk-clist-row-is-visible
  • gtk-clist-select-row
  • gtk-clist-set-auto-sort
  • gtk-clist-set-background
  • gtk-clist-set-button-actions
  • gtk-clist-set-cell-style
  • gtk-clist-set-column-auto-resize
  • gtk-clist-set-column-justification
  • gtk-clist-set-column-max-width
  • gtk-clist-set-column-min-width
  • gtk-clist-set-column-resizeable
  • gtk-clist-set-column-title
  • gtk-clist-set-column-visibility
  • gtk-clist-set-column-widget
  • gtk-clist-set-column-width
  • gtk-clist-set-foreground
  • gtk-clist-set-hadjustment
  • gtk-clist-set-reorderable
  • gtk-clist-set-row-height
  • gtk-clist-set-row-style
  • gtk-clist-set-selectable
  • gtk-clist-set-selection-mode
  • gtk-clist-set-shift
  • gtk-clist-set-sort-column
  • gtk-clist-set-sort-type
  • gtk-clist-set-text
  • gtk-clist-set-use-drag-icons
  • gtk-clist-set-vadjustment
  • gtk-clist-sort
  • gtk-clist-swap-rows
  • gtk-clist-thaw
  • gtk-clist-undo-selection
  • gtk-clist-unselect-all
  • gtk-clist-unselect-row
  • gtk-color-selection-dialog-cancel-button
  • gtk-color-selection-dialog-colorsel
  • gtk-color-selection-dialog-help-button
  • gtk-color-selection-dialog-main-vbox
  • gtk-color-selection-dialog-new
  • gtk-color-selection-dialog-ok-button
  • gtk-color-selection-dialog-reset-button
  • gtk-color-selection-get-color
  • gtk-color-selection-new
  • gtk-color-selection-set-opacity
  • gtk-color-selection-set-update-policy
  • gtk-combo-button
  • gtk-combo-disable-activate
  • gtk-combo-entry
  • gtk-combo-list
  • gtk-combo-new
  • gtk-combo-popup
  • gtk-combo-popwin
  • gtk-combo-set-case-sensitive
  • gtk-combo-set-item-string
  • gtk-combo-set-popdown-strings
  • gtk-combo-set-use-arrows
  • gtk-combo-set-use-arrows-always
  • gtk-combo-set-value-in-list
  • gtk-container-add
  • gtk-container-border-width
  • gtk-container-focus
  • gtk-container-register-toplevel
  • gtk-container-remove
  • gtk-container-set-border-width
  • gtk-container-set-focus-hadjustment
  • gtk-container-set-focus-vadjustment
  • gtk-container-unregister-toplevel
  • gtk-curve-new
  • gtk-curve-reset
  • gtk-curve-set-curve-type
  • gtk-curve-set-gamma
  • gtk-curve-set-range
  • gtk-dialog-action-area
  • gtk-dialog-new
  • gtk-dialog-vbox
  • gtk-drawing-area-new
  • gtk-drawing-area-size
  • gtk-editable-copy-clipboard
  • gtk-editable-cut-clipboard
  • gtk-editable-delete-selection
  • gtk-editable-delete-text
  • gtk-editable-get-chars
  • gtk-editable-get-position
  • gtk-editable-paste-clipboard
  • gtk-editable-select-region
  • gtk-editable-set-editable
  • gtk-editable-set-position
  • gtk-entry-append-text
  • gtk-entry-new
  • gtk-entry-new-with-max-length
  • gtk-entry-prepend-text
  • gtk-entry-select-region
  • gtk-entry-set-editable
  • gtk-entry-set-position
  • gtk-entry-set-text
  • gtk-entry-set-visibility
  • gtk-event-box-new
  • gtk-events-pending
  • gtk-exit
  • gtk-file-selection-action-area
  • gtk-file-selection-cancel-button
  • gtk-file-selection-dir-list
  • gtk-file-selection-file-list
  • gtk-file-selection-get-filename
  • gtk-file-selection-help-button
  • gtk-file-selection-hide-fileop-buttons
  • gtk-file-selection-main-vbox
  • gtk-file-selection-new
  • gtk-file-selection-ok-button
  • gtk-file-selection-selection-entry
  • gtk-file-selection-selection-text
  • gtk-file-selection-set-filename
  • gtk-file-selection-show-fileop-buttons
  • gtk-fixed-move
  • gtk-fixed-new
  • gtk-fixed-put
  • gtk-font-selection-dialog-action-area
  • gtk-font-selection-dialog-apply-button
  • gtk-font-selection-dialog-cancel-button
  • gtk-font-selection-dialog-get-font
  • gtk-font-selection-dialog-get-font-name
  • gtk-font-selection-dialog-main-vbox
  • gtk-font-selection-dialog-new
  • gtk-font-selection-dialog-ok-button
  • gtk-font-selection-dialog-set-font-name
  • gtk-font-selection-dialog-set-preview-text
  • gtk-frame-new
  • gtk-frame-set-label
  • gtk-frame-set-label-align
  • gtk-frame-set-shadow-type
  • gtk-gamma-curve-curve
  • gtk-gamma-curve-gamma
  • gtk-gamma-curve-gamma-dialog
  • gtk-gamma-curve-gamma-text
  • gtk-gamma-curve-new
  • gtk-gamma-curve-table
  • gtk-grab-add
  • gtk-grab-get-current
  • gtk-grab-remove
  • gtk-handle-box-new
  • gtk-hbox-new
  • gtk-hbutton-box-get-layout-default
  • gtk-hbutton-box-get-spacing-default
  • gtk-hbutton-box-new
  • gtk-hbutton-box-set-layout-default
  • gtk-hbutton-box-set-spacing-default
  • gtk-hpaned-new
  • gtk-hruler-new
  • gtk-hscale-new
  • gtk-hscrollbar-new
  • gtk-hseparator-new
  • gtk-idle-add
  • gtk-idle-remove
  • gtk-init
  • gtk-input-dialog-close-button
  • gtk-input-dialog-new
  • gtk-input-dialog-save-button
  • gtk-input-remove
  • gtk-item-deselect
  • gtk-item-select
  • gtk-item-toggle
  • gtk-label-new
  • gtk-label-parse-uline
  • gtk-label-set-justify
  • gtk-label-set-line-wrap
  • gtk-label-set-pattern
  • gtk-label-set-text
  • gtk-list-add-mode
  • gtk-list-anchor
  • gtk-list-anchor-state
  • gtk-list-child-position
  • gtk-list-children
  • gtk-list-clear-items
  • gtk-list-drag-pos
  • gtk-list-drag-selection
  • gtk-list-htimer
  • gtk-list-item-deselect
  • gtk-list-item-new
  • gtk-list-item-select
  • gtk-list-last-focus-child
  • gtk-list-new
  • gtk-list-remove-items
  • gtk-list-select-child
  • gtk-list-select-item
  • gtk-list-selection
  • gtk-list-selection-mode
  • gtk-list-set-selection-mode
  • gtk-list-undo-focus-child
  • gtk-list-undo-selection
  • gtk-list-undo-unselection
  • gtk-list-unselect-child
  • gtk-list-unselect-item
  • gtk-list-vtimer
  • gtk-main
  • gtk-main-iteration
  • gtk-main-iteration-do
  • gtk-main-level
  • gtk-main-quit
  • gtk-menu-append
  • gtk-menu-bar-append
  • gtk-menu-bar-insert
  • gtk-menu-bar-new
  • gtk-menu-bar-prepend
  • gtk-menu-detach
  • gtk-menu-ensure-uline-accel-group
  • gtk-menu-get-active
  • gtk-menu-get-attach-widget
  • gtk-menu-get-uline-accel-group
  • gtk-menu-insert
  • gtk-menu-item-activate
  • gtk-menu-item-configure
  • gtk-menu-item-deselect
  • gtk-menu-item-new
  • gtk-menu-item-remove-submenu
  • gtk-menu-item-right-justify
  • gtk-menu-item-select
  • gtk-menu-item-set-placement
  • gtk-menu-item-set-submenu
  • gtk-menu-new
  • gtk-menu-popdown
  • gtk-menu-popup
  • gtk-menu-prepend
  • gtk-menu-set-active
  • gtk-menu-shell-append
  • gtk-menu-shell-deactivate
  • gtk-menu-shell-insert
  • gtk-menu-shell-prepend
  • gtk-misc-set-alignment
  • gtk-misc-set-padding
  • gtk-notebook-append-page
  • gtk-notebook-append-page-menu
  • gtk-notebook-get-current-page
  • gtk-notebook-get-menu-label
  • gtk-notebook-get-nth-page
  • gtk-notebook-get-tab-label
  • gtk-notebook-insert-page
  • gtk-notebook-insert-page-menu
  • gtk-notebook-new
  • gtk-notebook-next-page
  • gtk-notebook-page-num
  • gtk-notebook-popup-disable
  • gtk-notebook-popup-enable
  • gtk-notebook-prepend-page
  • gtk-notebook-prepend-page-menu
  • gtk-notebook-prev-page
  • gtk-notebook-remove-page
  • gtk-notebook-reorder-child
  • gtk-notebook-set-homogeneous-tabs
  • gtk-notebook-set-menu-label
  • gtk-notebook-set-page
  • gtk-notebook-set-scrollable
  • gtk-notebook-set-show-border
  • gtk-notebook-set-show-tabs
  • gtk-notebook-set-tab-border
  • gtk-notebook-set-tab-hborder
  • gtk-notebook-set-tab-label
  • gtk-notebook-set-tab-pos
  • gtk-notebook-set-tab-vborder
  • gtk-notebook-tab-pos
  • gtk-object-class-type
  • gtk-object-destroy
  • gtk-object-destroyed
  • gtk-object-klass
  • gtk-object-type
  • gtk-option-menu-get-menu
  • gtk-option-menu-height
  • gtk-option-menu-menu
  • gtk-option-menu-menu-item
  • gtk-option-menu-new
  • gtk-option-menu-remove-menu
  • gtk-option-menu-set-history
  • gtk-option-menu-set-menu
  • gtk-option-menu-width
  • gtk-paned-add1
  • gtk-paned-add2
  • gtk-paned-gutter-size
  • gtk-paned-handle-size
  • gtk-pixmap-new
  • gtk-plug-new
  • gtk-plug-same-app
  • gtk-plug-socket-window
  • gtk-preview-get-cmap
  • gtk-preview-get-visual
  • gtk-preview-new
  • gtk-preview-set-color-cube
  • gtk-preview-set-expand
  • gtk-preview-set-install-cmap
  • gtk-preview-set-reserved
  • gtk-preview-size
  • gtk-progress-bar-new
  • gtk-progress-bar-set-activity-blocks
  • gtk-progress-bar-set-activity-step
  • gtk-progress-bar-set-discrete-blocks
  • gtk-progress-bar-update
  • gtk-progress-configure
  • gtk-progress-get-current-text
  • gtk-progress-get-text-from-value
  • gtk-progress-get-value
  • gtk-progress-set-activity-mode
  • gtk-progress-set-adjustment
  • gtk-progress-set-format-string
  • gtk-progress-set-percentage
  • gtk-progress-set-show-text
  • gtk-progress-set-text-alignment
  • gtk-progress-set-value
  • gtk-radio-button-new-from-widget
  • gtk-radio-menu-item-new
  • gtk-range-get-adjustment
  • gtk-range-set-adjustment
  • gtk-range-set-update-policy
  • gtk-rc-parse
  • gtk-ruler-draw-pos
  • gtk-ruler-draw-ticks
  • gtk-ruler-set-metric
  • gtk-ruler-set-range
  • gtk-scale-draw-value
  • gtk-scale-set-digits
  • gtk-scale-set-draw-value
  • gtk-scale-set-value-pos
  • gtk-scale-value-width
  • gtk-scrolled-window-add-with-viewport
  • gtk-scrolled-window-get-hadjustment
  • gtk-scrolled-window-get-vadjustment
  • gtk-scrolled-window-new
  • gtk-scrolled-window-set-policy
  • gtk-signal-connect
  • gtk-signal-disconnect
  • gtk-signal-emit
  • gtk-signal-emit-stop
  • gtk-signal-lookup
  • gtk-signal-name
  • gtk-signal-new-generic
  • gtk-signal-query
  • gtk-signal-query-is-user-signal
  • gtk-signal-query-object-type
  • gtk-signal-query-params
  • gtk-signal-query-return-val
  • gtk-signal-query-signal-flags
  • gtk-signal-query-signal-id
  • gtk-signal-query-signal-name
  • gtk-spin-button-get-adjustment
  • gtk-spin-button-get-value-as-float
  • gtk-spin-button-get-value-as-int
  • gtk-spin-button-new
  • gtk-spin-button-set-adjustment
  • gtk-spin-button-set-digits
  • gtk-spin-button-set-update-policy
  • gtk-spin-button-set-value
  • gtk-statusbar-get-context-id
  • gtk-statusbar-new
  • gtk-statusbar-pop
  • gtk-statusbar-push
  • gtk-statusbar-remove
  • gtk-table-attach
  • gtk-table-attach-defaults
  • gtk-table-new
  • gtk-table-set-col-spacing
  • gtk-table-set-col-spacings
  • gtk-table-set-row-spacing
  • gtk-table-set-row-spacings
  • gtk-tearoff-menu-item-new
  • gtk-text-backward-delete
  • gtk-text-forward-delete
  • gtk-text-freeze
  • gtk-text-get-length
  • gtk-text-get-point
  • gtk-text-hadj
  • gtk-text-insert
  • gtk-text-new
  • gtk-text-set-adjustments
  • gtk-text-set-editable
  • gtk-text-set-line-wrap
  • gtk-text-set-point
  • gtk-text-set-word-wrap
  • gtk-text-thaw
  • gtk-text-vadj
  • gtk-timeout-add
  • gtk-timeout-remove
  • gtk-tips-query-new
  • gtk-tips-query-set-caller
  • gtk-tips-query-set-labels
  • gtk-tips-query-start-query
  • gtk-tips-query-stop-query
  • gtk-toggle-button-active
  • gtk-toggle-button-draw-indicator
  • gtk-toggle-button-get-active
  • gtk-toggle-button-set-active
  • gtk-toolbar-append-space
  • gtk-toolbar-append-widget
  • gtk-toolbar-insert-space
  • gtk-toolbar-insert-widget
  • gtk-toolbar-new
  • gtk-toolbar-prepend-space
  • gtk-toolbar-prepend-widget
  • gtk-toolbar-set-orientation
  • gtk-toolbar-set-space-size
  • gtk-toolbar-set-style
  • gtk-toolbar-set-tooltips
  • gtk-tooltips-disable
  • gtk-tooltips-enable
  • gtk-tooltips-force-window
  • gtk-tooltips-new
  • gtk-tooltips-set-colors
  • gtk-tooltips-set-delay
  • gtk-tooltips-set-tip
  • gtk-tree-append
  • gtk-tree-child-position
  • gtk-tree-clear-items
  • gtk-tree-insert
  • gtk-tree-item-collapse
  • gtk-tree-item-deselect
  • gtk-tree-item-expand
  • gtk-tree-item-new
  • gtk-tree-item-remove-subtree
  • gtk-tree-item-select
  • gtk-tree-item-set-subtree
  • gtk-tree-new
  • gtk-tree-prepend
  • gtk-tree-remove-item
  • gtk-tree-select-child
  • gtk-tree-select-item
  • gtk-tree-set-selection-mode
  • gtk-tree-set-view-lines
  • gtk-tree-set-view-mode
  • gtk-tree-unselect-child
  • gtk-tree-unselect-item
  • gtk-type-from-name
  • gtk-type-name
  • gtk-vbox-new
  • gtk-vbutton-box-get-layout-default
  • gtk-vbutton-box-get-spacing-default
  • gtk-vbutton-box-new
  • gtk-vbutton-box-set-layout-default
  • gtk-vbutton-box-set-spacing-default
  • gtk-viewport-get-hadjustment
  • gtk-viewport-get-vadjustment
  • gtk-viewport-new
  • gtk-viewport-set-hadjustment
  • gtk-viewport-set-shadow-type
  • gtk-viewport-set-vadjustment
  • gtk-vpaned-new
  • gtk-vruler-new
  • gtk-vscale-new
  • gtk-vscrollbar-new
  • gtk-vseparator-new
  • gtk-widget-activate
  • gtk-widget-add-accelerator
  • gtk-widget-destroy
  • gtk-widget-event
  • gtk-widget-flags
  • gtk-widget-get-ancestor
  • gtk-widget-get-colormap
  • gtk-widget-get-default-colormap
  • gtk-widget-get-default-style
  • gtk-widget-get-default-visual
  • gtk-widget-get-events
  • gtk-widget-get-extension-events
  • gtk-widget-get-name
  • gtk-widget-get-style
  • gtk-widget-get-toplevel
  • gtk-widget-get-visual
  • gtk-widget-grab-default
  • gtk-widget-grab-focus
  • gtk-widget-hide
  • gtk-widget-hide-all
  • gtk-widget-is-ancestor
  • gtk-widget-map
  • gtk-widget-mapped
  • gtk-widget-pop-colormap
  • gtk-widget-pop-style
  • gtk-widget-pop-visual
  • gtk-widget-popup
  • gtk-widget-push-colormap
  • gtk-widget-push-style
  • gtk-widget-push-visual
  • gtk-widget-realize
  • gtk-widget-reparent
  • gtk-widget-set-default-colormap
  • gtk-widget-set-default-style
  • gtk-widget-set-default-visual
  • gtk-widget-set-events
  • gtk-widget-set-extension-events
  • gtk-widget-set-flags
  • gtk-widget-set-name
  • gtk-widget-set-parent
  • gtk-widget-set-sensitive
  • gtk-widget-set-state
  • gtk-widget-set-style
  • gtk-widget-set-uposition
  • gtk-widget-set-usize
  • gtk-widget-show
  • gtk-widget-show-all
  • gtk-widget-state
  • gtk-widget-style
  • gtk-widget-unmap
  • gtk-widget-unparent
  • gtk-widget-unrealize
  • gtk-widget-unset-flags
  • gtk-widget-window
  • gtk-window-activate-default
  • gtk-window-activate-focus
  • gtk-window-new
  • gtk-window-position
  • gtk-window-set-default
  • gtk-window-set-focus
  • gtk-window-set-policy
  • gtk-window-set-position
  • gtk-window-set-title
  • gtk-window-set-wmclass
  • h

  • has-answer? on session
  • i

  • iconv
  • iconv-close
  • iconv-open
  • isatty
  • k

  • kmp-step
  • l

  • ldap-add
  • ldap-answer
  • ldap-bind!
  • ldap-commit!
  • ldap-count-entries
  • ldap-defbase
  • ldap-delete
  • ldap-delete-recursive
  • ldap-destroy-cache!
  • ldap-disable-cache!
  • ldap-enable-cache!
  • ldap-errno
  • ldap-error-string
  • ldap-explode-dn
  • ldap-first-entry
  • ldap-flush-cache!
  • ldap-get-attributes
  • ldap-get-dn
  • ldap-get-values
  • ldap-init
  • ldap-message-free
  • ldap-modify-add
  • ldap-modify-delete
  • ldap-modify-replace
  • ldap-next-entry
  • ldap-open
  • ldap-result
  • ldap-search
  • ldap-set-cache-options!
  • ldap-unbind!
  • ldap-uncache-entry!
  • ldap-uncache-request!
  • load-relative-extension
  • localtime
  • m

  • make-directory
  • make-iconv
  • make-kmp-restart-vector
  • make-parameter
  • make-tm
  • md5
  • mktime
  • mmap
  • munmap
  • n

  • node-add-attribute!
  • node-add-child!
  • node-ancestors
  • node-attribute-list
  • node-attribute-string
  • node-atts
  • node-atts-set!
  • node-bind!
  • node-bind-descendants!
  • node-children
  • node-children-set!
  • node-data
  • node-descendants
  • node-display
  • node-dn
  • node-ifollows
  • node-ipreced
  • node-lookup
  • node-lookup-global
  • node-lsiblings
  • node-modrdn!
  • node-next-hierarchy
  • node-parent
  • node-parents
  • node-parents-set!
  • node-prev-hierarchy
  • node-rdn
  • node-remove!
  • node-remove-attribute!
  • node-replace-attribute!
  • node-root
  • node-rsiblings
  • node-set-attribute!
  • node-siblings
  • node-subtree
  • node-title
  • node-valid?
  • o

  • open
  • p

  • prepare on session
  • printf
  • putenv
  • r

  • read-date
  • read-string
  • regcomp
  • regerror
  • regexp
  • regexp-match
  • regexp-match-positions
  • regexp-replace*
  • regfree
  • reverse-list->string
  • reverse-string-concatenate
  • reverse-string-concatenate/shared
  • rollback-transaction! on connection
  • s

  • stat
  • strftime
  • string->hex
  • string->list
  • string-any
  • string-append/shared
  • string-ci<
  • string-ci<=
  • string-ci<>
  • string-ci=
  • string-ci>
  • string-ci>=
  • string-concatenate
  • string-concatenate/shared
  • string-contains
  • string-contains-ci
  • string-copy
  • string-copy!
  • string-count
  • string-delete
  • string-downcase
  • string-downcase!
  • string-drop
  • string-drop-right
  • string-every
  • string-fill!
  • string-filter
  • string-fold
  • string-fold-right
  • string-for-each
  • string-hash
  • string-hash-ci
  • string-index
  • string-index-right
  • string-join
  • string-map
  • string-map!
  • string-null?
  • string-pad
  • string-pad-right
  • string-parse-final-start+end
  • string-parse-start+end
  • string-prefix-ci?
  • string-prefix-length
  • string-prefix-length-ci
  • string-prefix?
  • string-replace
  • string-reverse
  • string-reverse!
  • string-search-kmp
  • string-skip
  • string-skip-right
  • string-suffix-ci?
  • string-suffix-length
  • string-suffix-length-ci
  • string-suffix?
  • string-tabulate
  • string-take
  • string-take-right
  • string-titlecase
  • string-titlecase!
  • string-tokenize
  • string-trim
  • string-trim-both
  • string-trim-right
  • string-unfold
  • string-unfold-right
  • string-upcase
  • string-upcase!
  • string-xcopy!
  • string<
  • string<=
  • string<>
  • string=
  • string>
  • string>=
  • strxfrm
  • substring-spec-ok?
  • substring/shared
  • t

  • times
  • timezone
  • tm->utctime
  • tzname
  • u

  • utctime->tm
  • x

  • xsubstring
  • SourceForge Logo


    This document was generated on 2 August 2000 using texi2html 1.56k.