;;; -*- mode: scheme; scheme48-package: (config) -*-

;;; See the LICENSE file for copyright and licensing information.

(define-structure server
  (export start-server stop-server)
  (open scheme request hooks i/o sockets threads threads-internal
        debug-messages string-utilities simple-signals handle
        display-conditions time response receiving xml table
        define-record-types stack crash-log)
  (files (scm server)))

(define-structure stack
  (export make-stack pop push peek stack-length empty?)
  (open scheme cells)
  (files (scm stack)))

(define-structure crash-log
  (export crash-log log-file-directory set-log-file-directory!
          crash-logs-enabled? enable-crash-logs disable-crash-logs
          delete-crash-logs? delete-crash-logs save-crash-logs)
  (open scheme threads fluids posix-files posix-processes 
        posix-process-data i/o-internal)
  (files (scm crash-log)))

(define-structure request
    (export read-request request-header request-header-list
            add-request-header! request->string)
  (open scheme extended-ports i/o tables sorting table-utilities
        string-utilities simple-signals simple-conditions
        display-conditions handle ascii hooks debug-messages srfi-13
        srfi-14)
  (files (scm request)))

(define-structure response
    (export make-response write-response
            add-response-header-value! set-response-header-value!
            response-header-values response-content set-response-content!
            set-response-html!)
  (open scheme i/o tables table-utilities ascii define-record-types
        extended-ports)
  (files (scm response)))

(define-structure table-utilities
    (export table-first table-keys table-replace! table-add! table-map)
  (open scheme tables srfi-16)
  (files (scm table-utilities)))

(define-structure string-utilities
  (export string->javascript url-decode url-encode char->digit path-ref)
  (open scheme ascii srfi-13 srfi-14 string-cursor)
  (files (scm string-utilities)))

(define-structure string-cursor
  (export string-cursor cursor-current cursor-forward cursor-back
          cursor-remove! cursor-insert! cursor-replace! cursor-string
          cursor-last? cursor-rewind)
  (open scheme define-record-types)
  (files (scm string-cursor)))

(define-structure hooks
  (export add-or-replace-hook-proc! remove-hook-proc! hook-filter
          hook-names hook-proc-names)
  (open scheme)
  (files (scm hooks)))

(define-structure postgresql
    (export connect disconnect reset-connection query-tuples
            query-tuples* query-map query-for-each run-command
            simple-query (with-db-connection :syntax)
            call-with-db-connection connection-information
            set-connection-information! connection-good?)
  (open scheme load-dynamic-externals external-calls queues
        proposals fluids extended-ports debug-messages
        simple-signals)
  (files (scm postgresql)))

(define-structure cookies
  (export add-response-cookie!)
  (open scheme response posix-time string-utilities)
  (files (scm cookies)))

(define-structure database-session
  (export)
  (open scheme server hooks request response postgresql cookies
        string-utilities srfi-13 srfi-14)
  (files (scm database-session)))

(define-structure xml
    (export xml entitize xml-join (template :syntax) literally)
  (open scheme posix-regexps srfi-1 string-utilities string-cursor
        extended-ports define-record-types)
  (files (scm xml)))

(define-structure html
    (export iframe-javascript)
  (open scheme)
  (files (scm html)))

(define-structure json
    (export to-json empty-json-object null-json-object)
  (open scheme tables extended-ports ascii)
  (files (scm json)))

(define-structure registered-procs
    (export register-rpc-procs! register-rpc-proc! remove-proc!
	    register-plain-procs! register-plain-proc!)
  (open scheme server request response hooks json srfi-1 receiving)
  (files (scm registered-procs)))

(define-structure filter-hook-examples
  (export downcase-filter! make-htmlifying-filter)
  (open scheme request response srfi-13 xml)
  (files (scm filter-hook-examples)))

(define-structure markdown
  (export markdown)
  (open scheme filters)
  (files (scm markdown)))

(define-structure filters
  (export filter-through filter-chain)
  (open scheme receiving posix i/o i/o-helpers interrupts)
  (files (scm filters)))

(define-structure i/o-helpers
  (export read-fully)
  (open scheme silly)
  (files (scm io-helpers)))

(define-structure let-keys
    (export (let-keys :syntax)
            (let-keys-primitive :syntax)
            (let-string-keys :syntax))
    (open scheme tables signals)
    (files (scm let-keys)))

(define-structure testing
  (export run-tests)
  (open scheme)
  (files (scm testing)))

(define-structure graph
  (export remove-edge find-weight add-graph-edge-maybe
          graph-vertices find-paths path-cost shortest-path)
  (open scheme srfi-1)
  (files (scm graph)))

(define-structure misc
  (export values->list seconds->string wall-time)
  (open scheme time debug-messages)
  (files (scm misc)))