Metagnostic
home

Miscellanea for Dolphin Smalltalk

Goodies

JNIPort

Z-Kit

ListTree

Space Breakdown

F.M.B.

Ghoul

Miscellanea

Experiments

Changes

Prerequisites

Licence

This page collects together a number of minor (often trivial) packages that either I think are nevertheless useful enough to publish for their own sake, or which are required by other (possibly forthcoming) packages in my goodies.


The packages are:

Package Relative File Locator

two kinds of FileLocator that work relative to a package when used in the IDE, or relative to the image when deployed. One benefit is that it means I don't have to follow, let alone impose, the absurd practise of keeping packages in an image-relative position.

Varargs

Wrapper class for C's va_list that allows external interfacing to many varargs-style functions. Also includes an implementation of String>>sprintfWithArguments: which takes an array of arguments for sprintf() (which can include floating point numbers) and formats accordingly.

String Extensions

A few extra methods for String. Specifically versions of #sprintf that take more arguments and access to C's strcmp() (which provide case-sensitive ordering of Strings — in the C locale).

Stream Extensions

A few trivial methods added to WriteStream for writing out WORDs, DWORDs and SDWORDs, plus big-endian equivalents.

Abstract Collections

The standard Smalltalk Collections hierarchy has several concrete containers that don't inherit from proper abstract superclasses, which makes them difficult to extend. This package includes a number of classes that try to fake a reasonable abstraction by inheriting from the concrete class, and then overriding enough methods (back to subclassResponsibility) to act as an abstract base class for the same protocol.

Collection Adaptors

Builds on the Abstract Collections package to provide a number of simple adaptor classes. Adaptors wrap some existing object that implements a small part of the interface of some collection/stream, and extends it to support the entire interface.

Null Streams

Builds on the Abstract Collections package to provide two trivial Streams. A WriteStream that discards everything that is written to it, and a ReadStream that always answers the same object to #next. Both keep track of their positions.

Rolling Accumulator

A circular buffer class.

Binary Arrays

A few more binary arrays to complete the portfolio provided with Dolphin.

Sort Blocks

Simple <diadicValuable> objects that can be used as sort blocks.

Always

Simple <*adicValueable> objects that always answer the same value.

Hashed Pair

Class of “pair” objects that are optimised for use as keys in dictionaries to allow/simulate dictionaries with 2 or more keys. Also some helper methods added to Dictionary.

Storage Size

A single method added to Object that estimates its memory footprint in bytes.

Anonymous Subclass

Tiny framework for making anonymous subclasses (i.e. ones that are not linked into the browsable hierarchy) of existing classes.

Ghost Classes

Builds on Anonymous Subclass to provide a framework for creating ephemeral and dynamically generated classes — ghost classes &mdash such as are used by JNIPort.

Object Methods

Builds on Anonymous Subclass to provide a framework for defining and managing object-specific methods.

Windows Shell Extensions

Trivial extension to the Windows Shell package which adds methods for retrieving the names of Windows' standard folders (desktop, favourites, program files, etc). Also extends BrowseFolderDialog to allow you to specify that network folders should be included in the list.


Packages

Package sizes and versions
Name Size Version
CU Package-relative File Locator 11829 3.01
CU Varargs 22545 2.02
CU String Extensions 6885 1.00
CU Stream Extensions 13498 2.00
CU Stream Extensions Tests 9391 1.02
CU Abstract Collections 51193 4.02
CU Collection Adaptors 34195 1.02
CU Null Streams 7557 1.02
CU Rolling Accumulator 7243 2.00
CU Binary Arrays 6126 2.00
CU Sortblocks 16398 3.01
CU Always 5976 3.01
CU Hashed Pair 10870 1.00
CU Storage Size 1809 1.00
CU Anonymous Subclass 2092 1.00
CU Ghost Classes 7592 1.01
CU Object Methods 9044 1.00
CU Windows Shell Extensions 4809 1.00

Copyright © Chris Uppal, 2003-2005