Étoilé core framework – traits, collection protocols, high order functions, metamodel, UTI etc.
Objective-C Makefile Other
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Documentation/Templates Added a doc menu template that lists GNUstep and Cocoa INSTALL files Apr 28, 2014
EtoileFoundation.xcodeproj various tweaks to jordyd's updates. Oct 9, 2016
EtoileThread Convert tabs to 4 spaces Sep 27, 2016
EtoileXML Convert tabs to 4 spaces Sep 27, 2016
Headers Removed DEALLOC in conflict with identically named macro in GNUstep.sh Nov 14, 2016
Source various tweaks to jordyd's updates. Oct 9, 2016
Tests Fixed nil EtoileFoundation package in test suite on GNUstep Nov 16, 2016
iOSCompatibility Convert tabs to 4 spaces Sep 27, 2016
.gitignore Add .gitignore from CoreObject, which ignores xcode temporary files Apr 25, 2014
.travis.yml Updated travis scripts to run test builds on both macOS and Linux/GNU… Dec 15, 2016
COPYING Renamed UKPluginsRegistry to ETPlugInRegistry, cleaned and documented… Apr 22, 2011
ChangeLog.deprecated Deprecated the ChangeLog and removed old EtoileExtensionsKit ChangeLo… Apr 5, 2012
EtoileFoundationInfo.plist Harcoded bundle identifier to eliminate bundle collision on GNUstep Nov 14, 2016
GNUmakefile Don't compile EtoileXML for Linux test builds Dec 15, 2016
INSTALL.Cocoa.md Cleaned and updated README (and wrapped the lines) May 1, 2014
INSTALL.GNUstep.md Fixed markdown link and a note that contains unwanted characters Jun 3, 2014
NEWS.md Replaced Etoile 0.4.3 mention by CoreObject 0.5 Jun 3, 2014
README.md Cleaned and updated README (and wrapped the lines) May 1, 2014
TODO.md Fixed HOM integration with dictionaries to ensure their processed rep… Jun 3, 2014
UTIClassBindings.plist Add an extra UTI database file for storing information about which Ob… May 16, 2009
UTIDefinitions.plist * Add UTIs for Smalltalk and ParserKit source code. Apr 29, 2012
test-linux.sh Don't compile EtoileXML for Linux test builds Dec 15, 2016
test-macosx.sh Updated travis scripts to run test builds on both macOS and Linux/GNU… Dec 15, 2016

README.md

EtoileFoundation

Maintainers : Quentin Mathe quentin.mathe@gmail.com, David Chisnall Authors : David Chisnall, Quentin Mathe, Uli Kusterer, Yen-Ju Chen, Eric Wasylishen License : Modified BSD License Version : 0.6

Build Status

EtoileFoundation is the core framework for all Etoile projects, providing numerous convenience methods on top of the OpenStep foundation and significantly better support for reflection. Here is a summary of some the interesting features:

  • mirror-based reflection (work-in-progress)
  • mixins and traits
  • prototypes
  • double-dispatch
  • collection class protocol and additions
  • UUID
  • convenient macros such as FOREACH
  • dynamic C array
  • metamodel
  • UTI
  • generic history model
  • socket
  • stack trace recording

Note: Restartable exceptions are not available in this release.

Two sub-frameworks are bundled with it:

  • EtoileThread which allows objects to transparently be run in a separate thread.
  • EtoileXML which is a light-weight and tolerant XML parsing framework whose main ability is to handle truncated and not well-formed XML documents. For example, with XML streams used by the XMPP protocol, the XML is received in fragments.

Warning: EtoileThread is not available in this release.

Build and Install

Read INSTALL.Cocoa or INSTALL.GNUstep documents.

Mac OS X and iOS support

EtoileFoundation is supported on Mac OS X (10.6 or higher) and iOS (5 or higher), minus the parts that only work with the GNUstep runtime (prototypes, restartable exceptions and some introspection stuff).

An Xcode project is bundled to build both EtoileFoundation and EtoileXML on Mac OS X, and EtoileFoundation on iOS.

Note: EtoileXML is unsupported on iOS presently. For now, ETSocket and NSData(ETHash) are also missing on iOS, because the system doesn't include the OpenSSL library.

NSObject+Prototypes.m, NSBlocks.m and CArray.m are not compiled on Mac OS X.

ETSocket.m, ETStackTraceRecorder.m, NSData+Hash.m, NSObject+Prototypes.m, NSBlocks.m and CArray.m are not compiled on iOS.

Warning: Xcode 4.6 or higher is required to build these projects.

Developer Notes

If you want to use classes from EtoileThread or EtoileXML, their headers must be imported explicitly and EtoileThread or EtoileXML must be linked explicitly. EtoileFoundation doesn't link them.

Unlike EtoileThread which has no dependency, EtoileXML depends on EtoileFoundation and links it.

EtoileThread (not available)

See the README in the EtoileThread subdirectory.

EtoileXML

See the README in the EtoileXML subdirectory.