Parasol Framework
  • Gallery
  • API
  • Wiki
  • GitHub
    •  Overview
        • BroadcastEvent()
        • GetEventID()
        • SubscribeEvent()
        • UnsubscribeEvent()
        • FieldName()
        • FindField()
        • GetField()
        • GetFieldArray()
        • GetFieldVariable()
        • SetArray()
        • SetField()
        • AddInfoTag()
        • AnalysePath()
        • CompareFilePaths()
        • CopyFile()
        • CreateFolder()
        • CreateLink()
        • DeleteFile()
        • DeleteVolume()
        • IdentifyFile()
        • LoadFile()
        • MoveFile()
        • OpenDir()
        • ReadFileToBuffer()
        • ReadInfoTag()
        • ResolveGroupID()
        • ResolvePath()
        • ResolveUserID()
        • ScanDir()
        • SetDefaultPermissions()
        • SetVolume()
        • UnloadFile()
        • AccessMemory()
        • AllocMemory()
        • CheckMemoryExists()
        • FreeResource()
        • MemoryIDInfo()
        • MemoryPtrInfo()
        • ReallocMemory()
        • ReleaseMemory()
        • AddMsgHandler()
        • ProcessMessages()
        • ScanMessages()
        • SendMessage()
        • UpdateMessage()
        • WaitForObjects()
        • AccessObject()
        • Action()
        • ActionList()
        • AsyncAction()
        • CheckAction()
        • CheckObjectExists()
        • CurrentContext()
        • FindClass()
        • FindObject()
        • GetActionMsg()
        • GetClassID()
        • GetObjectPtr()
        • GetOwnerID()
        • InitObject()
        • ListChildren()
        • LockObject()
        • NewObject()
        • NotifySubscribers()
        • ParentContext()
        • QueueAction()
        • ReleaseObject()
        • ResolveClassID()
        • ResolveClassName()
        • SetContext()
        • SetName()
        • SetOwner()
        • SubscribeAction()
        • UnsubscribeAction()
        • AdjustLogLevel()
        • AllocateID()
        • CurrentTask()
        • GenCRC32()
        • GetResource()
        • GetSystemState()
        • PreciseTime()
        • RegisterFD()
        • SetResource()
        • SetResourcePath()
        • SubscribeTimer()
        • UpdateTimer()
        • WaitTime()
    • Audio
    • Core
    • Display
    • Fluid
    • Font
    • Network
    • Vector
      • Audio
      • Sound
      • File
      • MetaClass
      • Module
      • StorageDevice
      • Task
      • Thread
      • Time
      • Compression
      • Config
      • Script
      • XML
      • Controller
      • BlurFX
      • ColourFX
      • CompositeFX
      • ConvolveFX
      • DisplacementFX
      • FilterEffect
      • FloodFX
      • ImageFX
      • LightingFX
      • MergeFX
      • MorphologyFX
      • OffsetFX
      • RemapFX
      • SourceFX
      • TurbulenceFX
      • WaveFunctionFX
      • Scintilla
      • ScintillaSearch
      • Bitmap
      • Clipboard
      • Display
      • Document
      • Font
      • Picture
      • Pointer
      • Surface
      • SVG
      • ClientSocket
      • HTTP
      • NetSocket
      • Proxy
      • Vector
      • VectorClip
      • VectorColour
      • VectorEllipse
      • VectorFilter
      • VectorGradient
      • VectorGroup
      • VectorImage
      • VectorPath
      • VectorPattern
      • VectorPolygon
      • VectorRectangle
      • VectorScene
      • VectorShape
      • VectorSpiral
      • VectorText
      • VectorTransition
      • VectorViewport
      • VectorWave
      • Linux Builds
      • Windows Builds
      • Customising Your Build
      • Parasol Objects
      • Parasol In Depth
      • Fluid Reference Manual
      • Common API
      • FileSearch API
      • GUI API
      • JSON API
      • VFX API
      • Widgets
      • RIPL Reference Manual
      • Parasol Cmd Tool
      • Flute / Unit Testing
      • Embedded Document Format
      • FDL Reference Manual
      • FDL Tools
      • Action Reference Manual
      • System Error Codes

Core Module

Functions

Events

BroadcastEvent | GetEventID | SubscribeEvent | UnsubscribeEvent

Fields

FieldName | FindField | GetField | GetFieldArray | GetFieldVariable | SetArray | SetField

Files

AddInfoTag | AnalysePath | CompareFilePaths | CopyFile | CreateFolder | CreateLink | DeleteFile | DeleteVolume | IdentifyFile | LoadFile | MoveFile | OpenDir | ReadFileToBuffer | ReadInfoTag | ResolveGroupID | ResolvePath | ResolveUserID | ScanDir | SetDefaultPermissions | SetVolume | UnloadFile

Memory

AccessMemory | AllocMemory | CheckMemoryExists | FreeResource | MemoryIDInfo | MemoryPtrInfo | ReallocMemory | ReleaseMemory

Messages

AddMsgHandler | ProcessMessages | ScanMessages | SendMessage | UpdateMessage | WaitForObjects

Objects

AccessObject | Action | ActionList | AsyncAction | CheckAction | CheckObjectExists | CurrentContext | FindClass | FindObject | GetActionMsg | GetClassID | GetObjectPtr | GetOwnerID | InitObject | ListChildren | LockObject | NewObject | NotifySubscribers | ParentContext | QueueAction | ReleaseObject | ResolveClassID | ResolveClassName | SetContext | SetName | SetOwner | SubscribeAction | UnsubscribeAction

System

AdjustLogLevel | AllocateID | CurrentTask | GenCRC32 | GetResource | GetSystemState | PreciseTime | RegisterFD | SetResource | SetResourcePath | SubscribeTimer | UpdateTimer | WaitTime

Structures

ActionArray | ActionTable | ChildEntry | ClipRectangle | ColourFormat | CompressedItem | CompressionFeedback | DateTime | DirInfo | Edges | FRGB | Field | FieldArray | FieldDef | FileFeedback | FileInfo | Function | FunctionField | HSV | InputEvent | MemInfo | Message | ObjectSignal | RGB16 | RGB32 | RGB8 | RGBPalette | SystemState | Unit | dcAudio | dcDeviceInput | dcKeyEntry | dcRequest

Classes

CompressedStream | Compression | Config | File | MetaClass | Module | Script | StorageDevice | Task | Thread | Time

Constants

AC | ALIGN | CCF | CF | CLF | CLIPMODE | CMF | CNF | CON | DATA | DEVICE | DMF | DRL | EDGE | EVG | FBK | FD | FDB | FDL | FDT | FFR | FL | FOF | IDTYPE | JET | JTYPE | KEY | KQ | LAYOUT | LDF | LOC | MAX | MEM | MFF | MHF | MOF | MOVE | MSF | MSGID | MTF | NETMSG | NF | OPF | PERMIT | PMF | PTC | RDF | RES | RFD | RP | RSF | SCF | SEEK | STR | STT | THF | TOI | TSF | TSTATE | VAS | VLF | VOLUME

AccessMemory()

Grants access to memory blocks by identifier.

ERR AccessMemory(MEMORYID Memory, MEM Flags, INT MilliSeconds, APTR * Result)
ParameterDescription
MemoryThe ID of the memory block to access.
FlagsSet to READ, WRITE or READ_WRITE.
MilliSecondsThe millisecond interval to wait before a timeout occurs. Use at least 40ms for best results.
ResultMust refer to an APTR for storing the resolved address.

Call AccessMemory() to resolve a memory ID to its address and acquire a lock so that it is inaccessible to other threads.

Memory blocks should never be locked for extended periods of time. Ensure that all locks are matched with a call to ReleaseMemory() within the same code block.

Error Codes

OkayOperation successful.
ArgsThe MilliSeconds value is less or equal to zero.
TimeOutFunction timed-out before successful completion.
MemoryDoesNotExistThe supplied Memory ID does not refer to an existing memory block.
SystemLockedPart of the system is unreachable due to a persistent lock.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

AccessObject()

Grants exclusive access to objects via unique ID.

ERR AccessObject(OBJECTID Object, INT MilliSeconds, OBJECTPTR * Result)
ParameterDescription
ObjectThe unique ID of the target object.
MilliSecondsThe limit in milliseconds before a timeout occurs. The maximum limit is 60000, and 100 is recommended.
ResultA pointer storage variable that will store the resulting object address.

This function resolves an object ID to its address and acquires a lock on the object so that other threads cannot use it simultaneously.

If the Object is already locked, the function will wait until it becomes available. This must occur within the amount of time specified in the Milliseconds parameter. If the time expires, the function will return with an ERR::TimeOut error code. If successful, ERR::Okay is returned and a reference to the object's address is stored in the Result variable.

It is crucial that calls to AccessObject() are followed with a call to ReleaseObject() once the lock is no longer required. Calls to AccessObject() will also nest, so they must be paired with ReleaseObject() correctly.

It is recommended that C++ developers use the ScopedObjectLock class to acquire object locks rather than making direct calls to AccessObject(). The following example illustrates lock acquisition within a 1 second time limit:

{
   pf::ScopedObjectLock<OBJECTPTR> obj(my_object_id, 1000);
   if (lock.granted()) {
      obj.acDraw();
   }
}

Error Codes

OkayOperation successful.
TimeOutFunction timed-out before successful completion.
SystemLockedPart of the system is unreachable due to a persistent lock.
NoMatchingObjectNo matching object was found for the given object ID.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

Action()

This function is responsible for executing action routines.

ERR Action(AC Action, OBJECTPTR Object, APTR Parameters)
ParameterDescription
ActionAn action or method ID must be specified.
ObjectThe target object.
ParametersOptional parameter structure associated with Action.

This function is the key entry point for executing actions and method routines. An action is a predefined function call that can be called on any object, while a method is a function call that is specific to a class implementation. You can find a complete list of available actions and their associated details in the Parasol Wiki. The actions and methods supported by any class will be referenced in their auto-generated documentation.

Here are two examples that demonstrate how to make an action call. The first performs an activation, which does not require any additional arguments. The second performs a move operation, which requires three additional arguments to be passed to the Action() function:

1. Action(AC::Activate, Picture, NULL);

2. struct acMove move = { 30, 15, 0 };
   Action(AC::Move, Window, &move);

In all cases, action calls in C++ can be simplified by using their corresponding stub functions:

1.  acActivate(Picture);

2a. acMove(Window, 30, 15, 0);

2b. Window->move(30, 15, 0);

If the class of an object does not support the Action ID, an error code of ERR::NoSupport is returned. To test an object to see if its class supports an action, use the CheckAction() function.

Error Codes

OkayOperation successful.
NoActionThe Action is not supported by the object's supporting class.
IllegalActionIDThe Action parameter is invalid.
ObjectCorruptThe Object state is corrupted.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

ActionList()

Returns a pointer to the global action table.

void ActionList(struct ActionTable ** Actions, INT * Size)
ParameterDescription
ActionsA pointer to the Core's action table struct ActionTable * is returned. Please note that the first entry in the ActionTable list has all fields driven to NULL, because valid action ID's start from one, not zero. The final action in the list is also terminated with NULL fields in order to indicate an end to the list. Knowing this is helpful when scanning the list or calculating the total number of actions supported by the Core.
SizeTotal number of elements in the returned list.

This function returns an array of all actions supported by the Core, including name, arguments and structure size. The ID of each action is indicated by its index within the array.

The Name field specifies the name of the action. The Args field refers to the action's argument definition structure, which lists the argument names and their relevant types. This is matched by the Size field, which indicates the byte-size of the action's related argument structure. If the action does not support arguments, the Args and Size fields will be set to NULL. The following illustrates two argument definition examples:

struct FunctionField argsCopyData[] = {
   { "Destination", FD_LONG  },
   { NULL, 0 }
};

struct FunctionField argsResize[] = {
   { "Width",  FD_DOUBLE },
   { "Height", FD_DOUBLE },
   { "Depth",  FD_DOUBLE },
   { NULL, 0 }
};

The argument types that can be used by actions are limited to those listed in the following table:

NameDescription
FD::LONGA 32-bit integer value ranging from -2,147,483,647 to 2,147,483,648.
FD::LARGEA 64-bit integer value.
FD::PTRA standard address space pointer.
FD::STRINGA pointer to a null-terminated string.
FD::DOUBLEA 64-bit floating point value.
FD::OBJECTThis flag is sometimes set in conjunction with the FD_LONG type. It indicates that the argument refers to an object ID.
FD::PTRSIZEThis argument type can only be used if it follows an FD_PTR type, and if the argument itself is intended to reflect the size of the buffer referred to by the previous FD_PTR argument.
FD::RESULTThis special flag is set in conjunction with the other data-based argument types. Example: If the developer is required to supply a pointer to a LONG field in which the function will store a result, the correct argument definition will be FD_RESULT|FD_LONG|FD_PTR. To make the definition of these argument types easier, FD_PTRRESULT and FD_LONGRESULT macros are also available for use.
Core module documentation © Paul Manias 1996-2025

AddInfoTag()

Adds new tags to FileInfo structures.

ERR AddInfoTag(struct FileInfo * Info, CSTRING Name, CSTRING Value)
ParameterDescription
InfoPointer to a valid FileInfo structure.
NameThe name of the tag, which must be declared in camel-case.
ValueThe value to associate with the tag name. If NULL, any existing tag with a matching Name will be removed.

This function adds file tags to FileInfo structures. It is intended for use by the Core and external drivers only. Tags allow extended attributes to be associated with a file, for example the number of seconds of audio in an MP3 file.

Error Codes

OkayOperation successful.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

AddMsgHandler()

Adds a new message handler for processing incoming messages.

ERR AddMsgHandler(APTR Custom, MSGID MsgType, FUNCTION * Routine, struct MsgHandler ** Handle)
ParameterDescription
CustomA custom pointer that will be passed to the message handler when messages are received.
MsgTypeThe message type that the handler will intercept. If zero, all incoming messages are passed to the handler.
RoutineRefers to the function that will handle incoming messages.
HandleThe resulting handle of the new message handler - retain for FreeResource().

This function allows handlers to be added for the interception of incoming messages. Message handling works as follows:

During a call to ProcessMessages(), each incoming message will be scanned to determine if a message handler is able to process that message. All handlers that accept the message type will be called with a copy of the message structure and any additional data. The message is then removed from the message queue.

When calling AddMsgHandler(), you can provide an optional Custom pointer that will have meaning to the handler. The MsgType acts as a filter so that only messages with the same type identifier will be passed to the handler. The Routine parameter must point to the function handler, which will follow this definition:

ERR handler(APTR Custom, MSGID MsgID, INT MsgType, APTR Message, INT MsgSize)

The handler must return ERR::Okay if the message was handled. This means that the message will not be passed to message handlers that are yet to receive the message. Throw ERR::NothingDone if the message has been ignored or ERR::Continue if the message was processed but may be analysed by other handlers. Throw ERR::Terminate to break the current ProcessMessages() loop. When using Fluid, this is best achieved by writing check(errorcode) in the handler.

The handler will be identified by a unique pointer returned in the Handle parameter. This handle will be garbage collected or can be passed to FreeResource() once it is no longer required.

Error Codes

OkayMessage handler successfully processed.
AllocMemoryA call to AllocMemory() failed to create a new memory block.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

AdjustLogLevel()

Adjusts the base-line of all log messages.

INT AdjustLogLevel(INT Delta)
ParameterDescription
DeltaThe level of adjustment to make to new log messages. Zero is no change. The maximum level is +/- 6.

This function adjusts the detail level of all outgoing log messages. To illustrate, setting the Delta value to 1 would result in level 5 (API) log messages being bumped to level 6. If the user's maximum log level output is 5, no further API messages will be output until the base-line is reduced to normal.

The main purpose of AdjustLogLevel() is to reduce log noise. For instance, creating a new desktop window will result in a large number of new log messages. Raising the base-line by 2 before creating the window would eliminate the noise if the user has the log level set to 5 (API). Re-running the program with a log level of 7 or more would make the messages visible again.

Adjustments to the base-line are accumulative, so small increments of 1 or 2 are encouraged. To revert logging to the previous base-line, call this function again with a negation of the previously passed value.

Result

Returns the absolute base-line value that was active prior to calling this function.

Core module documentation © Paul Manias 1996-2025

AllocMemory()

Allocates a new memory block on the heap.

ERR AllocMemory(INT Size, MEM Flags, APTR * Address, MEMORYID * ID)
ParameterDescription
SizeThe size of the memory block.
FlagsOptional flags.
AddressRefer to an APTR to store the address of the allocated memory block.
IDRefer to a MEMORYID to store the UID of the allocated memory block.

The AllocMemory() function will allocate a new block of memory on the program's heap. The client will need to define the minimum byte Size, optional Flags and a variable to store the resulting Address and/or ID of the memory block. For example:

APTR address;
if (!AllocMemory(1000, MEM::DATA, &address, NULL)) {
   ...
   FreeResource(address);
}

A number of flag definitions are available that affect the memory allocation process. They are:

NameDescription
MEM::AUDIOThe memory space is reserved by an audio device such as a sound card.
MEM::CALLERThis flag is usable only in routines that are supporting a class method. It forces the memory allocation to be tracked to the object that made the method call. This is particularly important in methods that return memory blocks that do not form a part of the object itself.
MEM::CODESet if the memory will contain executable program code.
MEM::DATAThe default type, DATA, is used to indicate a standard memory allocation from system RAM.
MEM::HIDDENHidden blocks are not recorded and are excluded from resource tracking.
MEM::MANAGEDEnables custom resource management for the memory block. The start of the block will need to be reserved with a pointer to a ResourceManager structure, which is included as part of the block's declared Size. The Free() callback will be called when the block is removed.
MEM::NO_BLOCKPermanently turn off all accesses to this memory block. This means that multiple threads can have full read/write access to the memory block at once regardless of other acces flags.
MEM::NO_BLOCKINGPermanently turn off all accesses to this memory block. This means that multiple threads can have full read/write access to the memory block at once regardless of other acces flags.
MEM::NO_CLEARDo not clear the memory on allocation (saves time).
MEM::NO_LOCKFor AllocMemory() only, indicates that the (private) memory block should not be locked on return.
MEM::NO_POOLGives a hint to the allocator to allocate the block outside of the memory pool.
MEM::READThe memory is explicitly marked as readable.
MEM::READ_WRITESynonym for READ | WRITE
MEM::STRINGIdentifies the memory content as a null terminated string. Useful for debugging and run-time type identification in scripts.
MEM::TEXTUREThe memory space is reserved by a video driver for hosting texture graphics.
MEM::TMP_LOCKEnables temporary locking restrictions. Prevents processes from sleeping while holding a lock on the memory block.
MEM::UNTRACKEDAllocating an untracked memory block will prevent the memory block from being tracked back to the object holding the current context.
MEM::VIDEOThe memory space is reserved by a video device such as a graphics card for display purposes, e.g. framebuffer.
MEM::WRITEThe memory is explicitly marked as writeable.

Notice that memory allocation can be returned as an address pointer and/or as a unique memory ID. Typically a private address with no ID reference is sufficient.

If the client retrieves both the ID and Address pointer, an internal call will be made to AccessMemory() to lock the memory block. This means that before freeing the memory block the client must call ReleaseMemory() to unlock it. Blocks that are persistently locked will remain in memory until the process is terminated.

Memory that is allocated through AllocMemory() is automatically cleared with zero-byte values. When allocating large blocks it may be wise to turn off this feature, achieved by setting the MEM::NO_CLEAR flag.

Error Codes

OkayOperation successful.
FailedThe block could not be allocated due to insufficient memory space.
ArgsInvalid arguments passed to function.
ArrayFullAlthough memory space for the block was available, all available memory records are in use.
AccessMemoryThe block was allocated but access to it was not granted, causing failure.
Core module documentation © Paul Manias 1996-2025

AllocateID()

Generates unique ID's for general purposes.

INT AllocateID(IDTYPE Type)
ParameterDescription
TypeThe type of ID that is required.

This function generates unique ID's that can be used in other Core functions. A Type indicator is required and the resulting number will be unique to that Type only.

ID allocations are permanent, so there is no need to free the allocated ID once it is no longer required.

Result

A unique ID matching the requested type will be returned. This function can return zero if the Type is unrecognised, or if an internal error occurred.

Core module documentation © Paul Manias 1996-2025

AnalysePath()

Analyses paths to determine their type (file, folder or volume).

ERR AnalysePath(CSTRING Path, LOC * Type)
ParameterDescription
PathThe path to analyse.
TypeThe result will be stored in the variable referred to by this parameter. The return types are DIRECTORY, FILE and VOLUME. Set this parameter to NULL if you are only interested in checking if the file exists.

This function will analyse a path and determine the type of file that the path is referring to. For instance, a path of user:documents/ would indicate a folder reference. A path of system: would be recognised as a volume. A path of user:documents/copyright.txt would be recognised as a file.

Ambiguous references are analysed to get the correct type - for example user:documents/helloworld could refer to a folder or file, so the path is analysed to check the file type. On exceptional occasions where the path could be interpreted as either a folder or a file, preference is given to the folder.

File path approximation is supported if the Path is prefixed with a ~ character (e.g. ~pictures:photo could be matched to photo.jpg in the same folder).

To check if a volume name is valid, call ResolvePath() first and then pass the resulting path to this function.

If the queried path does not exist, a fail code is returned. This behaviour makes the AnalysePath() function a good candidate for testing the validity of a path string.

Error Codes

OkayThe path was analysed and the result is stored in the Type variable.
DoesNotExistResource does not exist.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

AsyncAction()

Execute an action in parallel, via a separate thread.

ERR AsyncAction(AC Action, OBJECTPTR Object, APTR Args, FUNCTION * Callback)
ParameterDescription
ActionAn action or method ID must be specified here.
ObjectA pointer to the object that is going to perform the action.
ArgsIf the action or method is documented as taking parameters, provide the correct parameter structure here.
CallbackThis function will be called after the thread has finished executing the action.

This function follows the same principles of execution as the Action() function, with the difference of executing the action in parallel via a dynamically allocated thread. Please refer to the Action() function for general information on action execution.

To receive feedback of the action's completion, use the Callback parameter and supply a function. The prototype for the callback routine is callback(ACTIONID ActionID, OBJECTPTR Object, ERR Error, APTR Meta)

It is crucial that the target object is not destroyed while the thread is executing. Use the Callback routine to receive notification of the thread's completion and then free the object if desired. The callback will be processed when the main thread makes a call to ProcessMessages(), so as to maintain an orderly execution process within the application.

The 'Error' parameter in the callback reflects the error code returned by the action after it has been called. Note that if AsyncAction() fails, the callback will never be executed because the thread attempt will have been aborted.

Please note that there is some overhead involved when safely initialising and executing a new thread. This function is at its most effective when used to perform lengthy processes such as the loading and parsing of data.

Error Codes

OkayOperation successful.
InitError in Init()ialising an object.
IllegalMethodIDIllegal method ID (number outside of valid range).
MissingClassThe class could not be found in the system.
NewObjectA call to NewObject() failed to produce a new object.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

BroadcastEvent()

Broadcast an event to all event listeners in the system.

ERR BroadcastEvent(APTR Event, INT EventSize)
ParameterDescription
EventPointer to an event structure.
EventSizeThe size of the Event structure, in bytes.

Use BroadcastEvent() to broadcast an event to all listeners for that event in the system. An event structure is required that must start with a 64-bit EventID acquired from GetEventID(), followed by any required data that is relevant to that event. Here are some examples:

typedef struct { EVENTID EventID; char Name[1]; } evVolumeCreated;
typedef struct { EVENTID EventID; OBJECTID TaskID; } evTaskCreated;
typedef struct { EVENTID EventID; OBJECTID TaskID; OBJECTID ProcessID; } evTaskRemoved;

Error Codes

OkayOperation successful.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

CheckAction()

Checks objects to see whether or not they support certain actions.

ERR CheckAction(OBJECTPTR Object, AC Action)
ParameterDescription
ObjectThe target object.
ActionA registered action or method ID.

This function returns ERR::True if an object's class supports a given action or method ID. For example:

if (CheckAction(pic, AC::Query) IS ERR::True) {
   // The Query action is supported.
}

Error Codes

TrueThe object supports the specified action.
FalseThe action is not supported.
LostClassThe object has lost its class reference.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

CheckMemoryExists()

Checks if a memory block still exists.

ERR CheckMemoryExists(MEMORYID ID)
ParameterDescription
IDThe ID of the memory block that will be checked.

Use CheckMemoryExists() to confirm if a specific memory block still exists by referencing its ID.

Error Codes

OkayThe block exists.
FalseThe block does not exist.
Core module documentation © Paul Manias 1996-2025

CheckObjectExists()

Checks if a particular object is still available in the system.

ERR CheckObjectExists(OBJECTID Object)
ParameterDescription
ObjectThe object identity to verify.

The CheckObjectExists() function verifies the presence of any object created by NewObject().

Error Codes

TrueThe object exists.
FalseThe object ID does not exist.
LockFailedFailed to lock a required resource.
Core module documentation © Paul Manias 1996-2025

CompareFilePaths()

Checks if two file paths refer to the same physical file.

ERR CompareFilePaths(CSTRING PathA, CSTRING PathB)
ParameterDescription
PathAFile location 1.
PathBFile location 2.

This function will test two file paths, checking if they refer to the same file in a storage device. It uses a string comparison on the resolved path names, then attempts a second test based on an in-depth analysis of file attributes if the string comparison fails. In the event of a match, ERR::Okay is returned. All other error codes indicate a mis-match or internal failure.

The targeted paths do not have to refer to an existing file or folder in order to match (i.e. match on string comparison succeeds).

Error Codes

OkayThe file paths refer to the same file.
FalseThe file paths refer to different files.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

CopyFile()

Makes copies of folders and files.

ERR CopyFile(CSTRING Source, CSTRING Dest, FUNCTION * Callback)
ParameterDescription
SourceThe source location.
DestThe destination location.
CallbackOptional callback for receiving feedback during the operation.

This function is used to copy files and folders to new locations. When copying folders it will do so recursively, so as to copy all sub-folders and files within the location.

It is important that you are aware that different types of string formatting can give different results. The following examples illustrate:

Copying parasol:makefile to parasol:documents results in a file called parasol:documents.

Copying parasol:makefile to parasol:documents/ results in a file called parasol:documents/makefile.

Copying parasol:pictures/ to parasol:documents/ results in a folder at parasol:documents/pictures and includes a copy of all folders and files found within the pictures folder.

Copying parasol:pictures/ to parasol:documents results in a folder at parasol:documents (if the documents folder already exists, it receives additional content from the pictures folder).

This function will overwrite any destination file(s) that already exist.

The Source parameter should always clarify the type of location that is being copied. For example if copying a folder, a forward slash must terminate the string or it will be assumed that a file is the source.

The Callback parameter can be set with a function that matches this prototype:

LONG Callback(struct FileFeedback *)

For each file that is processed during the copy operation, a &FileFeedback structure is passed that describes the source file and its target. The callback must return a constant value that can potentially affect file processing. Valid values are FFR::Okay (copy the file), FFR::Skip (do not copy the file) and FFR::Abort (abort the process completely and return ERR::Cancelled as an error code).

Error Codes

OkayThe source was copied to its destination successfully.
FailedA failure occurred during the copy process.
ArgsInvalid arguments passed to function.
Core module documentation © Paul Manias 1996-2025

CreateFolder()

Makes new folders.

ERR CreateFolder(CSTRING Path, PERMIT Permissions)
ParameterDescription
PathThe location of the folder.
PermissionsSecurity permissions to apply to the created Dir(s). Set to NULL if only the current user should have access.

This function creates new folders. You are required to specify the full path of the new folder. Standard permission flags can be passed to determine the new permissions to set against the newly created Dir(s). If no permission flags are passed, only the current user will have access to the new folder (assuming that the file system supports security settings on the given media). This function will create multiple folders if the complete path does not exist at the time of the call.

On Unix systems you can define the owner and group ID's for the new folder by calling the SetDefaultPermissions() function prior to CreateFolder().

Error Codes

OkayOperation successful.
FailedGeneral failure.
NoSupportVirtual file system does not support folder creation.
FileExistsAn identically named file or folder already exists at the Path.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

CreateLink()

Creates symbolic links on Unix file systems.

ERR CreateLink(CSTRING From, CSTRING To)
ParameterDescription
FromThe symbolic link will be created at the location specified here.
ToThe file that you are linking to is specified here.

Use the CreateLink() function to create symbolic links on Unix file systems. The link connects a new file created at From to an existing file referenced at To. The To link is allowed to be relative to the From location - for instance, you can link documents:myfiles/newlink.txt to ../readme.txt or folder/readme.txt. The .. path component must be used when making references to parent folders.

The permission flags for the link are inherited from the file that you are linking to. If the file location referenced at From already exists as a file or folder, the function will fail with an ERR::FileExists error code.

This function does not automatically create folders in circumstances where new folders are required to complete the From link. You will need to call CreateFolder() to ensure that the necessary paths exist beforehand. If the file referenced at To does not exist, the link will be created without error, but any attempts to open the link will fail until the target file or folder exists.

Error Codes

OkayThe link was created successfully.
NoSupportThe file system or the host operating system does not support symbolic links.
MemoryGeneral memory error.
LowCapacityThere is no room on the device to create the new link.
NoPermissionThe user does not have permission to create the link, or the file system is mounted read-only.
BufferOverflowOne or both of the provided arguments is too long.
FileExistsThe location referenced at From already exists.
ResolvePathA volume could not be resolved.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

CurrentContext()

Returns a pointer to the object that has the current context.

OBJECTPTR CurrentContext()

This function returns a pointer to the object that has the current context. Context is primarily used to manage resource allocations. Manipulating the context is sometimes necessary to ensure that a resource is tracked to the correct object.

To get the context of the caller (the client), use ParentContext().

Result

Returns an object pointer (of which the process has exclusive access to). Cannot return NULL except in the initial start-up and late shut-down sequence of the Core.

Core module documentation © Paul Manias 1996-2025

CurrentTask()

Returns the active Task object.

objTask * CurrentTask()

This function returns the Task object of the active process.

If there is a legitimate circumstance where there is no current task (e.g. if this function is called during Core initialisation) then the "system task" may be returned, which has ownership of Core resources.

Result

Returns a pointer to the current Task object or NULL if failure.

Core module documentation © Paul Manias 1996-2025

DeleteFile()

Deletes files and folders.

ERR DeleteFile(CSTRING Path, FUNCTION * Callback)
ParameterDescription
PathString referring to the file or folder to be deleted. Folders must be denoted with a trailing slash.
CallbackOptional callback for receiving feedback during the operation.

This function will delete a file or folder when given a valid file location. The current user must have delete access to the given file. When deleting folders, all content will be scanned and deleted recursively. Individual deletion failures are ignored, although an error will be returned if the top-level folder still contains content on its deletion.

This function does not allow for the approximation of file names. To approximate a file location, open it as a File object or use ResolvePath() first.

The Callback parameter can be set with a function that matches the prototype LONG Callback(struct FileFeedback *).

Prior to the deletion of any file, a FileFeedback structure is passed that describes the file's location. The callback must return a constant value that can potentially affect file processing. Valid values are FFR::Okay (delete the file), FFR::Skip (do not delete the file) and FFR::Abort (abort the process completely and return ERR::Cancelled as an error code).

Error Codes

OkayThe file or folder was deleted successfully.
FileThe location could not be opened for deletion.
FileNotFoundFile not found.
NoSupportThe filesystem driver does not support deletion.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

DeleteVolume()

Deletes volumes from the system.

ERR DeleteVolume(CSTRING Name)
ParameterDescription
NameThe name of the volume.

This function deletes volume names from the system. Once a volume is deleted, any further references to it will result in errors unless the volume is recreated.

Error Codes

OkayThe volume was removed.
LockFailedFailed to lock a required resource.
NoPermissionAn attempt to delete a system volume was denied.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

FieldName()

Resolves a field ID to its registered name.

CSTRING FieldName(UINT FieldID)
ParameterDescription
FieldIDThe unique field hash to resolve.

Resolves a field identifier to its name. For this to work successfully, the field must have been registered with the internal dictionary. This is handled automatically when a new class is added to the system.

If the FieldID is not registered, the value is returned back as a hex string. The inclusion of this feature guarantees that an empty string will never be returned.

Result

The name of the field is returned.

Core module documentation © Paul Manias 1996-2025

FindClass()

Returns the internal MetaClass for a given class ID.

objMetaClass * FindClass(CLASSID ClassID)
ParameterDescription
ClassIDA class ID such as one retrieved from ResolveClassName().

This function will find a specific class by ID and return its MetaClass. If the class is not already loaded, the internal dictionary is checked to discover a module binary registered with that ID. If this succeeds, the module is loaded into memory and the correct MetaClass will be returned.

In any event of failure, NULL is returned.

If the ID of a named class is not known, call ResolveClassName() first and pass the resulting ID to this function.

Result

Returns a pointer to the MetaClass structure that has been found as a result of the search, or NULL if no matching class was found.

Core module documentation © Paul Manias 1996-2025

FindField()

Finds field descriptors for any class, by ID.

struct Field * FindField(OBJECTPTR Object, UINT FieldID, OBJECTPTR * Target)
ParameterDescription
ObjectThe target object.
FieldIDThe 'FID' number to lookup.
Target(Optional) The object that represents the field is returned here (in case a field belongs to an integrated child object).

The FindField() function checks if an object supports a specified field by scanning its class descriptor for a FieldID. If a matching field is declared, its descriptor is returned. For example:

if (auto field = FindField(Display, FID_Width, NULL)) {
   log.msg("The field name is \"%s\".", field->Name);
}

The resulting Field structure is immutable.

Note: To lookup the field definition of a MetaClass, use the MetaClass.FindField() method.

Result

Returns a pointer to the Field descriptor, otherwise NULL if not found.

Core module documentation © Paul Manias 1996-2025

FindObject()

Searches for objects by name.

ERR FindObject(CSTRING Name, CLASSID ClassID, FOF Flags, OBJECTID * ObjectID)
ParameterDescription
NameThe name of an object to search for.
ClassIDOptional. Set to a class ID to filter the results down to a specific class type.
FlagsOptional flags.
ObjectIDAn object id variable for storing the result.

The FindObject() function searches for all objects that match a given name and can filter by class.

The following example illustrates typical usage, and finds the most recent object created with a given name:

OBJECTID id;
FindObject("SystemPointer", CLASSID::POINTER, FOF::NIL, &id);

If FindObject() cannot find any matching objects then it will return an error code.

Error Codes

OkayAt least one matching object was found and stored in the ObjectID.
SearchNo objects matching the given name could be found.
ArgsInvalid arguments passed to function.
LockFailedFailed to lock a required resource.
EmptyStringA required string value contains no characters.
DoesNotExistResource does not exist.
Core module documentation © Paul Manias 1996-2025

FreeResource()

Frees resources originating from AllocMemory().

ERR FreeResource(MEMORYID ID)
ParameterDescription
IDThe unique ID of the memory block.

This function will free any resource that originates from AllocMemory(), using its ID for identification. C++ headers also include a variant of this function that allows a direct memory pointer to be used as the identifier (however we do recommend the use of IDs to improve memory safety).

In some circumstances the termination of the block will not take place immediately. If the block is locked then it will be marked for deletion and not be collected until the lock count reaches zero.

Crash protection measures are built-in. If the memory header or tail is missing from the block, it is assumed that code has over-written the memory boundaries. All caught errors are reported to the application log and warrant priority attention.

Error Codes

OkayThe memory block was freed or marked for deletion.
InvalidDataThe bounds of the block are damaged.
MemoryDoesNotExistMemory block does not exist.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

GenCRC32()

Generates 32-bit CRC checksum values.

UINT GenCRC32(UINT CRC, APTR Data, UINT Length)
ParameterDescription
CRCIf streaming data to this function, this value should reflect the most recently returned CRC integer. Otherwise set to zero.
DataThe data to generate a CRC value for.
LengthThe length of the Data buffer.

This function is used internally for the generation of 32-bit CRC checksums. You may use it for your own purposes to generate CRC values over a length of buffer space. This function may be called repeatedly by feeding it previous CRC values, making it ideal for processing streamed data.

Result

Returns the computed 32 bit CRC value for the given data.

Core module documentation © Paul Manias 1996-2025

GetActionMsg()

Returns a message structure if called from an action that was executed by the message system.

struct Message * GetActionMsg()

This function is for use by action and method support routines only. It will return a Message structure if the action currently under execution has been called directly from the ProcessMessages() function. In all other cases a NULL pointer is returned.

Result

A Message structure is returned if the function is called in valid circumstances, otherwise NULL.

Core module documentation © Paul Manias 1996-2025

GetClassID()

Returns the class ID of an ID-referenced object.

CLASSID GetClassID(OBJECTID Object)
ParameterDescription
ObjectThe object to be examined.

Call this function with any valid object ID to learn the identifier for its base class. This is the quickest way to retrieve the class of an object without having to gain exclusive access to the object first.

Note that if the object's pointer is already known, the quickest way to learn of its class is to call the classID() C++ method.

Result

Returns the base class ID of the object or zero if failure.

Core module documentation © Paul Manias 1996-2025

GetErrorMsg()

Translates error codes into human readable strings.

CSTRING GetErrorMsg(ERR Error)
ParameterDescription
ErrorThe error code to lookup.

The GetErrorMsg() function converts error codes into human readable strings. If the Error is invalid, a string of "Unknown error code" is returned.

Result

A human readable string for the error code is returned. By default error codes are returned in English, however if a translation table exists for the user's own language, the string will be translated.

Core module documentation © Paul Manias 1996-2025

GetEventID()

Generates unique event ID's suitable for event broadcasting.

INT64 GetEventID(EVG Group, CSTRING SubGroup, CSTRING Event)
ParameterDescription
GroupThe group to which the event belongs.
SubGroupThe sub-group to which the event belongs (case-sensitive).
EventThe name of the event (case-sensitive).

Use GetEventID() to generate a 64-bit event identifier. This identifier can be used for broadcasting and subscribing to events. Events are described in three parts - Group, SubGroup and the Event name, or in string format group.subgroup.event.

The Group is strictly limited to one of the following definitions:

NameDescription
EVG::ANDROIDAndroid specific events that do not already fit existing categories.
EVG::APPCustom event dispatched from an application
EVG::AUDIOAudio system events.
EVG::CLASSCustom event dispatched from a class that doesn't fit within the rest of the event framework
EVG::DISPLAYVideo display events.
EVG::FILESYSTEMFile system events.
EVG::GUIEvents generated by the Graphical User Interface.
EVG::HARDWAREHardware device events that are not covered by other types.
EVG::IOInput/Output events.
EVG::NETWORKNetwork events.
EVG::POWERPower Management - can also include app-specific events relating to resource management.
EVG::SYSTEMSystem-wide events
EVG::USERUser activity events (such as user login).

The SubGroup and Event parameters are string-based and there are no restrictions on naming. If a SubGroup or Event name is NULL, this will act as a wildcard for subscribing to multiple events. For example, subscribing to the network group with SubGroup and Event set to NULL will allow for a subscription to all network events that are broadcast. A Group setting of zero is not allowed.

Result

The event ID is returned as a 64-bit integer.

Core module documentation © Paul Manias 1996-2025

GetField()

Retrieves single field values from objects.

ERR GetField(OBJECTPTR Object, FIELD Field, APTR Result)
ParameterDescription
ObjectPointer to an object.
FieldThe ID of the field to read, OR'd with a type indicator.
ResultPointer to the variable that will store the result.

The GetField() function is used to read field values from objects in the safest way possible. As long as the requested field exists, the value can most likely be read. It is only imperative that the requested type is compatible with the field value itself.

The following code segment illustrates how to read values from an object:

GetField(Object, FID_X|TLONG, &x);
GetField(Object, FID_Y|TLONG, &y);

As GetField() is based on field ID's that reflect field names (FID's), you will find that there are occasions where there is no reserved ID for the field that you wish to read. To convert field names into their relevant IDs, call the C++ strihash() function. Reserved field ID's are listed in the parasol/system/fields.h include file.

The type of the Result parameter must be OR'd into the Field parameter. When reading a field you must give consideration to the type of the source, in order to prevent a type mismatch from occurring. All numeric types are compatible with each other and strings can also be converted to numeric types automatically. String and pointer types are interchangeable.

Available field types are as follows:

NameDescription
TLONGA 32-bit integer value.
TDOUBLEA 64-bit floating point value.
TLARGEA 64-bit integer value.
TPTRA standard 32-bit address space pointer.
TSTRA 32-bit pointer that refers to a string.

Error Codes

OkayThe Field value was read successfully.
ArgsInvalid arguments were specified.
NoFieldAccessPermissions for this field indicate that it is not readable.
UnsupportedFieldThe Field is not supported by the object's class.
Core module documentation © Paul Manias 1996-2025

GetFieldArray()

Retrieves array field values from objects.

ERR GetFieldArray(OBJECTPTR Object, FIELD Field, APTR * Result, INT * Elements)
ParameterDescription
ObjectPointer to an object.
FieldThe ID of the field that will be read.
ResultA direct pointer to the array values will be returned in this parameter.
ElementsThe total number of elements in the array will be returned in this parameter.

Use the GetFieldArray() function to read an array field from an object, including the length of that array. This supplements the GetField() function, which does not support returning the array length.

This function returns the array as-is with no provision for type conversion. If the array is null terminated, it is standard practice not to count the null terminator in the total returned by Elements.

To achieve a minimum level of type safety, the anticipated type of array values can be specified by OR'ing a field type with the field identifier, e.g. TLONG or TSTR. If no type is incorporated then a check will not be performed.

Error Codes

OkayOperation successful.
NoFieldAccessPermissions for this field indicate that it is not readable.
UnsupportedFieldThe Field is not supported by the object's class.
MismatchA mis-match has been detected that prevents further processing.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

GetFieldVariable()

Retrieves field values by converting them into strings.

ERR GetFieldVariable(OBJECTPTR Object, CSTRING Field, STRING Buffer, INT Size)
ParameterDescription
ObjectPointer to an object.
FieldThe name of the field that is to be retrieved.
BufferPointer to a buffer space large enough to hold the expected field value. If the buffer is not large enough, the result will be truncated. A buffer of 256 bytes is considered large enough for most occasions. For generic field reading purposes, a buffer as large as 64kb may be desired.
SizeThe size of the Buffer that has been provided, in bytes.

The GetFieldVariable() function is used to retrieve the value of a field without any advance knowledge of the field's type or details. It also supports some advanced features such as flag name lookups and the retrieval of values from array indexes. Although this function is simple to use, it is the slowest of the field retrieval instructions as it relies on string-based field names and converts all results into a string buffer that you must provide.

This function does not support pointer based fields as they cannot be translated, although an exception is made for string field types.

If the field name refers to a flag or lookup based field type, it is possible to test if a specific flag has been set. This is achieved by specifying a dot immediately after the field name, then the name of the flag or lookup to test. If the test passes, a value of 1 is returned, otherwise 0.

String conversion for flag and lookup based fields is also supported (by default, integer values are returned for these field types when no other test is applied). This feature is enabled by prefixing the field name with a $ symbol. If multiple fields are set, the resulting flags will be separated with the traditional OR symbol |.

If the field name refers to an array, it is possible to index specific values within that array by specifying a dot after the field name, then the index number to lookup.

To check if a string is defined (rather than retrieving the entire string content which can be time consuming), prefix the Field name with a question mark. A value of 1 will be returned in the Buffer if the string has a minimum length of 1 character, otherwise a value of 0 is returned in the Buffer.

Error Codes

OkayThe field was value retrieved.
ArgsInvalid arguments passed to function.
NoFieldAccessPermissions for this field state that it is not readable.
UnsupportedFieldThe requested field is not supported by the object's class.
MismatchThe field value cannot be converted into a string.
Core module documentation © Paul Manias 1996-2025

GetObjectPtr()

Returns a direct pointer for any object ID.

OBJECTPTR GetObjectPtr(OBJECTID Object)
ParameterDescription
ObjectThe ID of the object to lookup.

This function translates an object ID to its respective address pointer.

Result

The address of the object is returned, or NULL if the ID does not relate to an object.

Core module documentation © Paul Manias 1996-2025

GetOwnerID()

Returns the unique ID of an object's owner.

OBJECTID GetOwnerID(OBJECTID Object)
ParameterDescription
ObjectThe ID of an object to query.

This function returns an identifier for the owner of any valid object. This is the fastest way to retrieve the owner of an object if only the ID is known.

If the object address is already known then the fastest means of retrieval is via the ownerID() C++ class method.

Result

Returns the ID of the object's owner. If the object does not have a owner (i.e. if it is untracked) or if the provided ID is invalid, this function will return NULL.

Core module documentation © Paul Manias 1996-2025

GetResource()

Retrieves miscellaneous resource identifiers.

INT64 GetResource(RES Resource)
ParameterDescription
ResourceThe ID of the resource that you want to obtain.

The GetResource() function is used to retrieve miscellaneous resource information from the system core. Refer to the Resource identifier for the full list of available resource codes and their meaning.

C++ developers should use the GetResourcePtr() macro if a resource identifier is known to return a pointer.

Result

Returns the value of the resource that you have requested. If the resource ID is not known by the Core, NULL is returned.

Core module documentation © Paul Manias 1996-2025

GetSystemState()

Returns miscellaneous data values from the Core.

const struct SystemState * GetSystemState()

The GetSystemState() function is used to retrieve miscellaneous resource and environment values, such as resource paths, the Core's version number and the name of the host platform.

Result

A read-only SystemState structure is returned.

Core module documentation © Paul Manias 1996-2025

IdentifyFile()

Analyse a file and identify a class that can process it.

ERR IdentifyFile(CSTRING Path, CLASSID Filter, CLASSID * Class, CLASSID * SubClass)
ParameterDescription
PathThe location of the object data.
FilterRestrict the search to classes in this subset, or use CLASSID::NIL to search all classes.
ClassMust refer to a CLASSID variable that will store the resulting class ID.
SubClassOptional argument that can refer to a variable that will store the resulting sub-class ID (if the result is a base-class, this variable will receive a value of zero).

This function examines the relationship between file data and Parasol classes. For instance, a JPEG file would be identified as a datatype of the Picture class. An MP3 file would be identified as a datatype of the Sound class.

The method involves analysing the Path's file extension and comparing it to the supported extensions of all available classes. If a class supports the file extension, the ID of that class will be returned. If the file extension is not listed in the class dictionary or if it is listed more than once, the first 80 bytes of the file's data will be loaded and checked against classes that can match against file header information. If a match is found, the ID of the matching class will be returned.

The ERR::Search code is returned if a suitable class does not match the targeted file.

Error Codes

OkayOperation successful.
SearchA suitable class could not be found for the data source.
FileNotFoundFile not found.
ArgsInvalid arguments passed to function.
ReadError reading data from file.
Core module documentation © Paul Manias 1996-2025

InitObject()

Initialises an object so that it is ready for use.

ERR InitObject(OBJECTPTR Object)
ParameterDescription
ObjectThe object to initialise.

This function initialises objects so that they can be used for their intended purpose. Initialisation is compulsory, and a client may not call any actions or methods on an object until it has been initialised. Exceptions to this rule only apply to the GetKey() and SetKey() actions.

If the initialisation of an object fails due to a support problem (for example, if a PNG Picture object attempts to load a JPEG file), the initialiser will search for a sub-class that can handle the data. If a sub-class that can support the object's configuration is available, the object's interface will be shared between both the base-class and the sub-class.

If an object does not support the data or its configuration, an error code of ERR::NoSupport will be returned. Other appropriate error codes can be returned if initialisation fails.

Error Codes

OkayThe object was initialised.
LostClassThe object has lost its class reference.
DoubleInitWarning - Attempt to initialise an object twice.
ObjectCorruptThe object structure is corrupt or has not been initialised.
Core module documentation © Paul Manias 1996-2025

ListChildren()

Returns a list of all children belonging to an object.

ERR ListChildren(OBJECTID Object, pf::vector<ChildEntry> * List)
ParameterDescription
ObjectAn object to query.
ListMust refer to an array of ChildEntry structures.

The ListChildren() function returns a list of all children belonging to an object. The client must provide an empty vector of ChildEntry structures to host the results, which include unique object ID's and their class identifiers.

Note that any child objects marked with the LOCAL flag will be excluded because they are private members of the targeted object.

Error Codes

OkayZero or more children were found and listed.
ArgsInvalid arguments passed to function.
LockFailedFailed to lock a required resource.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

LoadFile()

Loads files into a local cache for fast file processing.

ERR LoadFile(CSTRING Path, LDF Flags, struct CacheFile ** Cache)
ParameterDescription
PathThe location of the file to be cached.
FlagsOptional flags are specified here.
CacheA pointer to a CacheFile structure is returned here if successful.

The LoadFile() function loads complete files into memory and caches the content for use by other areas of the system or application.

This function will first determine if the requested file has already been cached. If this is true then the CacheFile structure is returned immediately. Note that if the file was previously cached but then modified, this will be treated as a cache miss and the file will be loaded into a new buffer.

File content will be loaded into a readable memory buffer that is referenced by the Data field of the CacheFile structure. A hidden null byte is appended at the end of the buffer to assist the processing of text files. Other pieces of information about the file can be derived from the CacheFile meta data.

Calls to LoadFile() must be matched with a call to UnloadFile() to decrement the cache counter. When the counter returns to zero, the file can be unloaded from the cache during the next resource collection phase.

Error Codes

OkayThe file was cached successfully.
SearchIf CHECK_EXISTS is specified, this failure indicates that the file is not cached.
AllocMemoryA call to AllocMemory() failed to create a new memory block.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

LockObject()

Lock an object to prevent contention between threads.

ERR LockObject(OBJECTPTR Object, INT MilliSeconds)
ParameterDescription
ObjectThe address of the object to lock.
MilliSecondsThe total number of milliseconds to wait before giving up. If -1, the function will wait indefinitely.

Use LockObject() to gain exclusive access to an object at thread-level. This function provides identical behaviour to that of AccessObject(), but with a slight speed advantage as the object ID does not need to be resolved to an address. Calls to LockObject() will nest, and must be matched with a call to ReleaseObject() to unlock the object.

Be aware that while this function is faster than AccessObject(), it is unsafe if other threads could terminate the object without a suitable barrier in place.

If it is guaranteed that an object is not being shared between threads, object locking is unnecessary.

Error Codes

OkayOperation successful.
TimeOutFunction timed-out before successful completion.
MarkedForDeletionA resource cannot be accessed as it is marked for deletion.
SystemLockedPart of the system is unreachable due to a persistent lock.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

MemoryIDInfo()

Returns information on memory ID's.

ERR MemoryIDInfo(MEMORYID ID, struct MemInfo * MemInfo, INT Size)
ParameterDescription
IDPointer to a valid memory ID.
MemInfoPointer to a MemInfo structure.
SizeSize of the MemInfo structure.

This function returns the attributes of a memory block, including the start address, parent object, memory ID, size and flags. The following example illustrates correct use of this function:

MemInfo info;
if (!MemoryIDInfo(memid, &info)) {
   log.msg("Memory block #%d is %d bytes large.", info.MemoryID, info.Size);
}

If the call fails, the MemInfo structure's fields will be driven to NULL and an error code is returned.

Error Codes

OkayOperation successful.
ArgsInvalid arguments passed to function.
MemoryDoesNotExistMemory block does not exist.
SystemLockedPart of the system is unreachable due to a persistent lock.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

MemoryPtrInfo()

Returns information on memory addresses.

ERR MemoryPtrInfo(APTR Address, struct MemInfo * MemInfo, INT Size)
ParameterDescription
AddressPointer to a valid memory area.
MemInfoPointer to a MemInfo structure to be populated.
SizeSize of the MemInfo structure.

This function can be used to get details on the attributes of a memory block. It will return information on the start address, parent object, memory ID, size and flags of the memory address that you are querying. The following code segment illustrates correct use of this function:

MemInfo info;
if (!MemoryPtrInfo(ptr, &info)) {
   log.msg("Address %p is %d bytes large.", info.Start, info.Size);
}

If the call to MemoryPtrInfo() fails then the MemInfo structure's fields will be driven to NULL and an error code will be returned.

Please note that referencing by a pointer requires a slow reverse-lookup to be employed in this function's search routine. We recommend that calls to this function are avoided unless circumstances absolutely require it.

Error Codes

OkayOperation successful.
MemoryDoesNotExistMemory block does not exist.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

MoveFile()

Moves folders and files to new locations.

ERR MoveFile(CSTRING Source, CSTRING Dest, FUNCTION * Callback)
ParameterDescription
SourceThe source path.
DestThe destination path.
CallbackOptional callback for receiving feedback during the operation.

This function is used to move files and folders to new locations. It can also be used for renaming purposes and is able to move data from one type of media to another. When moving folders, any contents within the folder will also be moved across to the new location.

It is important that you are aware that different types of string formatting can give different results. The following examples illustrate:

Source               Destination          Result
parasol:makefile     parasol:documents    parasol:documents
parasol:makefile     parasol:documents/   parasol:documents/makefile
parasol:pictures/    parasol:documents/   parasol:documents/pictures
parasol:pictures/    parasol:documents    parasol:documents (Existing documents folder destroyed)

This function will overwrite the destination location if it already exists.

The Source argument should always clarify the type of location that is being copied - e.g. if you are copying a folder, you must specify a forward slash at the end of the string or the function will assume that you are moving a file.

The Callback parameter can be set with a function that matches this prototype:

LONG Callback(struct FileFeedback *)

For each file that is processed during the move operation, a FileFeedback structure is passed that describes the source file and its target. The callback must return a constant value that can potentially affect file processing. Valid values are FFR::Okay (move the file), FFR::Skip (do not move the file) and FFR::Abort (abort the process completely and return ERR::Cancelled as an error code).

Error Codes

OkayOperation successful.
FailedGeneral failure.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

NewObject()

Creates new objects.

ERR NewObject(CLASSID ClassID, NF Flags, OBJECTPTR * Object)
ParameterDescription
ClassIDA class ID from system/register.h or generated by ResolveClassName().
FlagsOptional flags.
ObjectPointer to an address variable that will store a reference to the new object.

The NewObject() function is used to create new objects and register them for use within the Core. After creating a new object, the client can proceed to set the object's field values and initialise it with Init so that it can be used as intended.

The new object will be modeled according to the class blueprint indicated by ClassID. Pre-defined class ID's are defined in their documentation and the parasol/system/register.h include file. ID's for unregistered classes can be computed using the ResolveClassName() function.

A pointer to the new object will be returned in the Object parameter. By default, object allocations are context sensitive and will be collected when their owner is terminated. It is possible to track an object to a different owner by using the SetOwner() function.

To destroy an object, call FreeResource().

Error Codes

OkayOperation successful.
MissingClassThe ClassID is invalid or refers to a class that is not installed.
AllocMemoryA call to AllocMemory() failed to create a new memory block.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

NotifySubscribers()

Send a notification event to action subscribers.

void NotifySubscribers(OBJECTPTR Object, AC Action, APTR Args, ERR Error)
ParameterDescription
ObjectPointer to the object that is to receive the notification message.
ActionThe action ID for notification.
ArgsPointer to an action parameter structure that is relevant to the Action ID.
ErrorThe error code that is associated with the action result.

This function can be used by classes that need fine-tuned control over notification events, as managed by the SubscribeAction() function. Normally the Core will automatically notify subscribers after an action is executed. Using NotifySubscribers(), the client can instead manually notify subscribers during the execution of the action.

Another useful aspect is that the client can control the parameter values that are passed on to the subscribers.

NOTE: The use of NotifySubscribers() does not prevent the core from sending out an action notification as it normally would, which will cause duplication. To prevent this, the client must logical-or the return code of the action function with ERR::Notified, e.g. ERR::Okay|ERR::Notified.

In the following example the Surface class uses NotifySubscribers() to convert a Move event to a Redimension event. The parameter values are customised to support this, and the function returns ERR::Notified to prevent the core from sending out a Move notification.

ERR SURFACE_Move(extSurface *Self, struct acMove *Args)
{
   if (!Args) return ERR::NullArgs|ERR::Notified;

   ...

   struct acRedimension redimension = { Self->X, Self->Y, 0, Self->Width, Self->Height, 0 };
   NotifySubscribers(Self, AC::Redimension, &redimension, ERR::Okay);
   return ERR::Okay|ERR::Notified;
}
Core module documentation © Paul Manias 1996-2025

OpenDir()

Opens a folder for content scanning.

ERR OpenDir(CSTRING Path, RDF Flags, struct DirInfo ** Info)
ParameterDescription
PathThe folder location to be scanned. Using an empty string will scan for volume names.
FlagsOptional flags.
InfoA DirInfo structure will be returned in the pointer referenced here.

The OpenDir() function is used to open a folder for scanning via the ScanDir() function. If the provided Path can be accessed, a DirInfo structure will be returned in the Info parameter, which will need to be passed to ScanDir(). Once the scanning process is complete, call the FreeResource() function.

When opening a folder, it is necessary to indicate the type of files that are of interest. If no flags are defined, the scanner will return file and folder names only. Only a subset of the available RDF flags may be used, namely SIZE, DATE, PERMISSIONS, FILE, FOLDER, QUALIFY, TAGS.

Error Codes

OkayOperation successful.
DirEmptyThe folder is empty.
ArgsInvalid arguments passed to function.
AllocMemoryA call to AllocMemory() failed to create a new memory block.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

ParentContext()

Returns the context of the client.

OBJECTPTR ParentContext()

This function is used to return the context of the caller (the client), as opposed to CurrentContext(), which returns the operating context. This feature is commonly used by methods that need to acquire a reference to the client for resource management reasons.

Note that this function can return NULL if called when running at process-level, although this would never be the case when called from an action or method.

Result

An object reference is returned, or NULL if there is no parent context.

Core module documentation © Paul Manias 1996-2025

PreciseTime()

Returns the current system time, in microseconds.

INT64 PreciseTime()

This function returns the current 'system time' in microseconds (1 millionth of a second). The value is monotonic if the host platform allows it (typically expressed as the amount of time that has elapsed since the system was switched on). The benefit of monotonic time is that it is unaffected by changes to the system clock, such as daylight savings adjustments or manual changes by the user.

Result

Returns the system time in microseconds. Could return zero in the extremely unlikely event of an error.

Core module documentation © Paul Manias 1996-2025

ProcessMessages()

Processes system messages that are queued in the task's message buffer.

ERR ProcessMessages(PMF Flags, INT TimeOut)
ParameterDescription
FlagsOptional flags are specified here (clients should set a value of zero).
TimeOutA TimeOut value, measured in milliseconds. If zero, the function will return as soon as all messages on the queue are processed. If less than zero, the function does not return until a request for termination is received or a user message requires processing.

The ProcessMessages() function is used to process the task's message queue. Messages are dispatched to message handlers in the order in which they arrived and the queue is emptied so that space is available for more messages.

Responding to incoming messages is a vital process - the queue is the standard means of communication between your task and the rest of the system and other tasks within it. Failing to call the ProcessMessages() function on a regular basis may cause a back-log of messages to be generated, as well as causing problems with areas such as the graphical interface. If an area of your program is likely to loop continuously for a measurable period of time without returning, consider calling ProcessMessages() at a rate of 50 times per second to ensure that incoming messages are processed.

User messages that are on the queue are passed to message handlers. If no message handler exists to interpret the message, then it is removed from the queue without being processed. Message handlers are added with the AddMsgHandler() function. If a message handler returns the error code ERR::Terminate, then ProcessMessages() will stop processing the queue and returns immediately with ERR::Okay.

If a message with a MSGID::QUIT ID is found on the queue, then the function returns immediately with the error code ERR::Terminate. The program must respond to the terminate request by exiting immediately.

Error Codes

OkayOperation successful.
TerminateA MSGID::QUIT message type was found on the message queue.
TimeOutFunction timed-out before successful completion.
Core module documentation © Paul Manias 1996-2025

QueueAction()

Delay the execution of an action by adding the call to the message queue.

ERR QueueAction(AC Action, OBJECTID Object, APTR Args)
ParameterDescription
ActionThe ID of an action or method to execute.
ObjectThe target object.
ArgsThe relevant argument structure for the Action, or NULL if not required.

Use QueueAction() to execute an action by way of the local message queue. This means that the supplied Action and Args will be combined into a message for the queue. This function then returns immediately.

The action will be executed on the next cycle of ProcessMessages() in line with the FIFO order of queued messages.

Error Codes

OkayOperation successful.
FailedGeneral failure.
OutOfRangeThe Action ID is invalid.
IllegalMethodIDIllegal method ID (number outside of valid range).
MissingClassThe class could not be found in the system.
NoMatchingObjectNo matching object was found for the given object ID.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

ReadFileToBuffer()

Reads a file into a buffer.

ERR ReadFileToBuffer(CSTRING Path, APTR Buffer, INT BufferSize, INT * Result)
ParameterDescription
PathThe path of the file.
BufferPointer to a buffer that will receive the file content.
BufferSizeThe byte size of the Buffer.
ResultThe total number of bytes read into the Buffer will be returned here (optional).

This function provides a simple method for reading file content into a Buffer. In some cases this procedure may be optimised for the host platform, which makes it the fastest way to read file content in simple cases.

File path approximation is supported if the Path is prefixed with a ~ character (e.g. ~pictures:photo could be matched to photo.jpg in the same folder).

Error Codes

OkayOperation successful.
FileFile error, e.g. file not found.
ArgsInvalid arguments passed to function.
ReadError reading data from file.
InvalidPathInvalid file or folder path detected.
OpenFileThe file could not be opened.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

ReadInfoTag()

Read a named tag from a FileInfo structure.

ERR ReadInfoTag(struct FileInfo * Info, CSTRING Name, CSTRING * Value)
ParameterDescription
InfoPointer to a valid FileInfo structure.
NameThe name of the tag, which must be declared in camel-case as tags are case-sensitive.
ValueThe discovered string value is returned here if found.

ReadInfoTag() will read the value of a named tag in a FileInfo structure. The tag must have been added with AddInfoTag() or ERR::NotFound will be returned.

Error Codes

OkayOperation successful.
NotFoundA search routine in this function failed.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

ReallocMemory()

Reallocates memory blocks.

ERR ReallocMemory(APTR Memory, UINT Size, APTR * Address, MEMORYID * ID)
ParameterDescription
MemoryPointer to a memory block obtained from AllocMemory().
SizeThe size of the new memory block.
AddressPoint to an APTR variable to store the resulting pointer to the new memory block.
IDPoint to a MEMORYID variable to store the resulting memory block's unique ID.

This function is used to reallocate memory blocks to new lengths. You can shrink or expand a memory block as you wish. The data of your original memory block will be copied over to the new block. If the new block is of a larger size, the left-over bytes will be populated with zero-byte values. If the new block is smaller, you will lose some of the original data.

The original block will be destroyed as a result of calling this function unless the reallocation process fails, in which case your existing memory block will remain valid.

Error Codes

OkayOperation successful.
ArgsInvalid arguments passed to function.
MemoryThe memory block to be re-allocated is invalid.
AllocMemoryA call to AllocMemory() failed to create a new memory block.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

RegisterFD()

Registers a file descriptor for monitoring when the task is asleep.

ERR RegisterFD(HOSTHANDLE FD, RFD Flags, void (*Routine)(HOSTHANDLE, APTR) , APTR Data)
ParameterDescription
FDThe file descriptor that is to be watched.
FlagsSet to at least one of READ, WRITE, EXCEPT, REMOVE.
RoutineThe routine that will read from the descriptor when data is detected on it. The prototype is void Routine(HOSTHANDLE FD, APTR Data).
DataUser specific data pointer that will be passed to the Routine. Separate data pointers apply to the read and write states of operation.

This function will register a file descriptor that will be monitored for activity when the task is sleeping. When activity occurs on the descriptor, the callback referenced in Routine will be called. The callback should read all information from the descriptor, as the process will not be able to sleep if data is back-logged.

The file descriptor should be configured as non-blocking before registration. Blocking descriptors may cause the program to hang if not handled carefully.

File descriptors support read and write states simultaneously, and a callback routine can be applied to either state. Set the RFD::READ flag to apply the Routine to the read callback and RFD::WRITE for the write callback. If neither flag is specified, RFD::READ is assumed. A file descriptor may have up to one subscription per flag, for example a read callback can be registered, followed by a write callback in a second call. Individual callbacks can be removed by combining the read/write flags with RFD::REMOVE.

The capabilities of this function and FD handling in general is developed to suit the host platform. On POSIX compliant systems, standard file descriptors are used. In Microsoft Windows, object handles are used and blocking restrictions do not apply, except to sockets.

Call the DeregisterFD() macro to simplify unsubscribing once the file descriptor is no longer needed or is destroyed.

Error Codes

OkayThe FD was successfully registered.
ArgsThe FD was set to a value of -1.
NoSupportThe host platform does not support the provided FD.
Core module documentation © Paul Manias 1996-2025

ReleaseMemory()

Releases a lock from a memory based resource.

ERR ReleaseMemory(MEMORYID MemoryID)
ParameterDescription
MemoryIDA reference to a memory resource for release.

Successful calls to AccessMemory() must be paired with a call to ReleaseMemory() so that the memory can be made available to other processes. Releasing the resource decreases the access count, and if applicable a thread that is in the queue for access may then be able to acquire a lock.

Error Codes

OkayOperation successful.
SearchA search routine in this function failed.
SystemLockedPart of the system is unreachable due to a persistent lock.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

ReleaseObject()

Release a locked object.

void ReleaseObject(OBJECTPTR Object)
ParameterDescription
ObjectPointer to the object to be released.

Release a lock previously obtained from AccessObject() or LockObject(). Locks will nest, so a release is required for every lock that has been granted.

Core module documentation © Paul Manias 1996-2025

ResolveClassID()

Resolve a valid CLASSID to its name.

CSTRING ResolveClassID(CLASSID ID)
ParameterDescription
IDThe ID of the class that needs to be resolved.

This function will resolve a valid class ID to its equivalent name. The name is resolved by checking the class database, so the class must be registered in the database for this function to return successfully.

Registration is achieved by ensuring that the class is compiled into the build.

Result

Returns the name of the class, or NULL if the ID is not recognised. Standard naming conventions apply, so it can be expected that the string is capitalised and without spaces, e.g. NetSocket.

Core module documentation © Paul Manias 1996-2025

ResolveClassName()

Resolves any class name to a CLASSID UID.

CLASSID ResolveClassName(CSTRING Name)
ParameterDescription
NameThe name of the class that requires resolution.

This function will resolve a class Name to its CLASSID UID and verifies that the class is installed. It is case insensitive.

Result

Returns the class ID identified from the class name, or NULL if the class could not be found.

Core module documentation © Paul Manias 1996-2025

ResolveGroupID()

Converts a group ID to its corresponding name.

CSTRING ResolveGroupID(INT Group)
ParameterDescription
GroupThe group ID.

This function converts group ID's obtained from the file system into their corresponding names. If the Group ID is invalid then NULL will be returned.

Result

The group name is returned, or NULL if the ID cannot be resolved.

Core module documentation © Paul Manias 1996-2025

ResolvePath()

Converts volume-based paths into absolute paths applicable to the host platform.

ERR ResolvePath(const std::string_view & Path, RSF Flags, std::string * Result)
ParameterDescription
PathThe path to be resolved.
FlagsOptional flags.
ResultMust point to a std::string variable so that the resolved path can be stored. If NULL, ResolvePath() will work as normal and return a valid error code without the result string.

This function will convert a file path to its resolved form, according to the host system. For example, a Linux system might resolve drive1:documents/readme.txt to /documents/readme.txt. A Windows system might resolve the path to c:\documents\readme.txt.

The resulting path is guaranteed to be absolute, meaning the use of sequences such as .., // and ./ will be eliminated.

If the path can be resolved to more than one file, ResolvePath() will attempt to discover the correct path by checking the validity of each possible location. For instance, if resolving a path of user:document.txt and the user: volume refers to both system:users/joebloggs/ and system:users/default/, the routine will check both directories for the existence of the document.txt file to determine the correct location. This approach can be problematic if the intent is to create a new file, in which case RSF::NO_FILE_CHECK will circumvent it.

When checking the file location, ResolvePath() requires an exact match to the provided file name. If the file name can be approximated (i.e. the file extension can be ignored) then use the RSF::APPROXIMATE flag.

To resolve the location of executable programs on Unix systems, use the RSF::PATH flag. This uses the PATH environment variable to resolve the file name specified in the Path parameter.

The resolved path will be copied to the std::string provided in the Result parameter. This will overwrite any existing content in the string.

NameDescription
RSF::APPROXIMATEIgnores file extensions for the purpose of file name matching.
RSF::CASE_SENSITIVEFor use on host systems that use case-insensitive file systems such as Windows; this option checks that the discovered file is a case-sensitive match to the Path.
RSF::CHECK_VIRTUALIf the volume referenced by Path is traced to another volume that is reserved by a virtual file system driver, ERR::VirtualVolume is returned. The volume is still resolved as far as possible and the resulting path will be returned by this function.
RSF::NO_DEEP_SCANDo not perform more than one iteration when resolving the source file path.
RSF::NO_FILE_CHECKDo not test for the existence of the targeted file or folder during the resolution process.
RSF::PATHUse the PATH environment variable to resolve the file name in the Path parameter.

If the path resolves to a virtual drive, it may not be possible to confirm whether the target file exists if the virtual driver does not support this check. This is common when working with network drives.

Error Codes

OkayThe Path was resolved.
SearchThe given volume does not exist.
FileNotFoundThe path was resolved, but the referenced file or folder does not exist (use NO_FILE_CHECK to avoid this error code).
LockFailedFailed to lock a required resource.
AllocMemoryThe result string could not be allocated.
LoopThe volume refers back to itself.
NullArgsInvalid parameters were specified.
Core module documentation © Paul Manias 1996-2025

ResolveUserID()

Converts a user ID to its corresponding name.

CSTRING ResolveUserID(INT User)
ParameterDescription
UserThe user ID.

This function converts user ID's obtained from the file system into their corresponding names. If the User ID is invalid then NULL will be returned.

Result

The user name is returned, or NULL if the ID cannot be resolved.

Core module documentation © Paul Manias 1996-2025

ScanDir()

Scans the content of a folder, by item.

ERR ScanDir(struct DirInfo * Info)
ParameterDescription
InfoPointer to a DirInfo structure for storing scan results.

The ScanDir() function is used to scan for files and folders in a folder that you have opened using the OpenDir() function. The ScanDir() function is intended to be used in a simple loop, returning a single item for each function call that you make. The following code sample illustrates typical usage:

DirInfo *info;
if (!OpenDir(path, RDF::FILE|RDF::FOLDER, &info)) {
   while (!ScanDir(info)) {
      log.msg("File: %s", info->Name);
   }
   FreeResource(info);
}

For each item that you scan, you will be able to read the Info structure for information on that item. The DirInfo structure contains a FileInfo pointer that consists of the following fields:

The RDF flags that may be returned in the Flags field are VOLUME, FOLDER, FILE, LINK.

Error Codes

OkayAn item was successfully scanned from the folder.
DirEmptyThere are no more items to scan.
ArgsInvalid arguments passed to function.
Core module documentation © Paul Manias 1996-2025

ScanMessages()

Scans a message queue for multiple occurrences of a message type.

ERR ScanMessages(INT * Handle, MSGID Type, APTR Buffer, INT Size)
ParameterDescription
HandlePointer to a 32-bit value that must initially be set to zero. The ScanMessages() function will automatically update this variable with each call so that it can remember its analysis position.
TypeThe message type to filter for, or zero to scan all messages in the queue.
BufferOptional pointer to a buffer that is large enough to hold any message data.
SizeThe byte-size of the supplied Buffer.

Use the ScanMessages() function to scan the local message queue for information without affecting the state of the queue. To use this function effectively, make repeated calls to ScanMessages() to analyse the queue until it returns an error code other than ERR::Okay.

The following example illustrates a scan for MSGID::QUIT messages:

while (!ScanMessages(&handle, MSGID::QUIT, NULL, NULL)) {
   ...
}

Messages will often (but not always) carry data that is relevant to the message type. To retrieve this data a buffer must be supplied. If the Buffer is too small as indicated by the Size, the message data will be trimmed to fit without any further indication.

Error Codes

OkayOperation successful.
SearchNo more messages are left on the queue, or no messages that match the given Type are on the queue.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

SendMessage()

Add a message to the local message queue.

ERR SendMessage(MSGID Type, MSF Flags, APTR Data, INT Size)
ParameterDescription
TypeThe message Type/ID being sent. Unique type ID's can be obtained from AllocateID().
FlagsOptional flags.
DataPointer to the data that will be written to the queue. Set to NULL if there is no data to write.
SizeThe byte-size of the Data being written to the message queue.

The SendMessage() function will add a message to the end of the local message queue. Messages must be associated with a Type identifier and this can help the receiver process any accompanying Data. Some common message types are pre-defined, such as MSGID::QUIT. Custom messages should use a unique type ID obtained from AllocateID().

Error Codes

OkayThe message was successfully written to the message queue.
ArgsInvalid arguments passed to function.
Core module documentation © Paul Manias 1996-2025

SetArray()

Used to set array fields in objects.

ERR SetArray(OBJECTPTR Object, FIELD Field, APTR Array, INT Elements)
ParameterDescription
ObjectPointer to the target object.
FieldThe universal ID of the field you wish to write to, OR'd with a type indicator.
ArrayPointer to the array values.
ElementsThe number of elements listed in the Array.

The SetArray() function is used as an alternative to SetField() for the purpose of writing arrays to objects.

The following code segment illustrates how to write an array to an object field:

LONG array[100];
SetArray(Object, FID_Table|TLONG, array, 100);

An indicator of the type of the elements in the Array must be OR'd into the Field parameter. Available field types are listed in SetField(). Note that the type that you choose must be a match to the type expected for elements in the array.

Error Codes

OkayOperation successful.
NoFieldAccessThe field is read-only.
FieldTypeMismatchThe specified Field is not an array.
UnsupportedFieldThe specified Field is not support by the Object class.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

SetContext()

Sets the nominated owner of new resources.

OBJECTPTR SetContext(OBJECTPTR Object)
ParameterDescription
ObjectPointer to the object that will take on the new context. If NULL, no change to the context will be made.

This function defines the object that has control of the current thread. Once called, all further resource allocations are assigned to that object. This is significant for the automatic collection of memory and object resources. For example:

InitObject(display);
auto ctx = SetContext(display);

   NewObject(CLASSID::BITMAP, &bitmap);
   AllocMemory(1000, MEM::DATA, &memory, NULL);

SetContext(ctx);
FreeResource(display->UID);

The above code allocates a Bitmap and a memory block, both of which will be contained by the display. When FreeResource() is called, both the bitmap and memory block will be automatically removed as they have a dependency on the display's existence. Please keep in mind that the following is incorrect:

InitObject(display);
auto ctx = SetContext(display);

   NewObject(CLASSID::BITMAP, &bitmap);
   AllocMemory(1000, MEM::DATA, &memory, NULL);

SetContext(ctx);
FreeResource(display->UID); // The bitmap and memory would be auto-collected
FreeResource(bitmap->UID);  // Reference is no longer valid
FreeResource(memory);  // Reference is no longer valid

As the bitmap and memory block would have been freed as members of the display, their references are invalid when manually terminated in the following instructions.

SetContext() is intended for use by modules and classes. Do not use it in an application unless conditions necessitate its use. The Core automatically manages the context when calling class actions, methods and interactive fields.

Result

Returns a pointer to the previous context. Because contexts nest, the client must call SetContext() a second time with this pointer in order to keep the process stable.

Core module documentation © Paul Manias 1996-2025

SetDefaultPermissions()

Forces the user and group permissions to be applied to new files and folders.

void SetDefaultPermissions(INT User, INT Group, PERMIT Permissions)
ParameterDescription
UserUser ID to apply to new files.
GroupGroup ID to apply to new files.
PermissionsPermission flags to be applied to new files.

By default, user, group and permission information for new files is inherited either from the system defaults or from the file source in copy operations. Use this function to override this behaviour with new default values. All threads of the process will be affected.

To revert behaviour to the default settings, set the User and/or Group values to -1 and the Permissions value to zero.

Core module documentation © Paul Manias 1996-2025

SetField()

Used to set field values of objects.

ERR SetField(OBJECTPTR Object, FIELD Field, ...)
ParameterDescription
ObjectPointer to the target object.
FieldThe universal ID of the field to update, OR'd with a type indicator.
ValueThe value that will be written to the field.

The SetField() function is used to write field values to objects.

The following code segment illustrates how to write values to an object:

SetField(Object, FID_X|TLONG, 100);
SetField(Object, FID_Statement|TSTR, "string");

Fields are referenced as hashed UID's calculated from the C++ strihash() function. The majority of field ID's are predefined in the parasol/system/fields.h include file.

The type of the Value parameter must be OR'd into the Field parameter. If the provided type does not match that of the field, a type conversion will occur. All numeric types are compatible with each other and strings can also be converted to a numeric value automatically. String and pointer types are interchangeable.

Available field types are as follows:

NameDescription
TLONGA 32-bit integer value.
TDOUBLEA 64-bit floating point value.
TSCALEA 64-bit floating point value that represents a scaled multiplier or percentage (1.0 is equivalent to 100%).
TLARGEA 64-bit integer value.
TPTRA standard address space pointer.
TSTRA pointer that refers to a string.
TFUNCTIONA pointer to a FUNCTION structure.
TUNITA pointer to a Unit structure.

There is no requirement for the client to have a working knowledge of the target object's field configuration in order to write information to it.

To set a field with a fixed-size array, use the SetArray() function.

Error Codes

OkayOperation successful.
ArgsInvalid arguments passed to function.
NoFieldAccessThe field is read-only.
UnsupportedFieldThe specified field is not support by the object's class.
Core module documentation © Paul Manias 1996-2025

SetName()

Sets the name of an object.

ERR SetName(OBJECTPTR Object, CSTRING Name)
ParameterDescription
ObjectThe target object.
NameThe new name for the object.

This function sets the name of an Object. This enhances log messages and allows the object to be found in searches. Please note that the length of the Name will be limited to the value indicated in the core header file, under the MAX_NAME_LEN definition. Names exceeding the allowed length are trimmed to fit.

Object names are limited to alpha-numeric characters and the underscore symbol. Invalid characters are replaced with an underscore.

Error Codes

OkayOperation successful.
SearchThe Object is not recognised by the system - the address may be invalid.
LockFailedFailed to lock a required resource.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

SetOwner()

Changes object ownership dynamically.

ERR SetOwner(OBJECTPTR Object, OBJECTPTR Owner)
ParameterDescription
ObjectThe object to modify.
OwnerThe new owner for the Object.

This function changes the ownership of an existing object. Ownership is an attribute that affects an object's placement within the object hierarchy as well as impacting on the resource tracking of the object in question. Internally, setting a new owner will cause three things to happen:

  • The new owner's class will receive notification via the NewChild action. If the owner rejects the object by sending back an error, SetOwner() will fail immediately.
  • The object's class will then receive notification via the NewOwner action.
  • The resource tracking of the new owner will be modified so that the object is accepted as its child. This means that if and when the owning object is destroyed, the new child object will be destroyed with it.

If the Object does not support the NewOwner action, or the Owner does not support the NewChild action, then the process will not fail. It will continue on the assumption that neither party is concerned about ownership management.

Error Codes

OkayOperation successful.
ArgsInvalid arguments passed to function.
SystemLockedPart of the system is unreachable due to a persistent lock.
NullArgsFunction call missing argument value(s)
RecursionDetected a recursive function call.
Core module documentation © Paul Manias 1996-2025

SetResource()

Sets miscellaneous resource identifiers.

INT64 SetResource(RES Resource, INT64 Value)
ParameterDescription
ResourceThe ID of the resource to be set.
ValueThe new value to set for the resource.

The SetResource() function is used to manipulate miscellaneous system resources. Currently the following resources are supported:

NameDescription
RES::ALLOC_MEM_LIMITAdjusts the memory limit imposed on AllocMemory(). The Value specifies the memory limit in bytes.
RES::LOG_LEVELAdjusts the current debug level. The Value must be between 0 and 9, where 1 is the lowest level of debug output (errors only) and 0 is off.
RES::PRIVILEGED_USERIf the Value is set to 1, this resource option puts the process in privileged mode (typically this enables full administrator rights). This feature will only work for Unix processes that are granted admin rights when launched. Setting the Value to 0 reverts to the user's permission settings. SetResource() will return an error code indicating the level of success.

Result

Returns the previous value of the Resource. If the Resource value is invalid, NULL is returned.

Core module documentation © Paul Manias 1996-2025

SetResourcePath()

Redefines the location of a system resource path.

ERR SetResourcePath(RP PathType, CSTRING Path)
ParameterDescription
PathTypeThe ID of the resource path to set.
PathThe new location to set for the resource path.

The SetResourcePath() function changes the default locations of the Core's resource paths.

To read a resource path, use the GetSystemState() function.

Error Codes

OkayOperation successful.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

SetVolume()

Create or modify a filesystem volume.

ERR SetVolume(CSTRING Name, CSTRING Path, CSTRING Icon, CSTRING Label, CSTRING Device, VOLUME Flags)
ParameterDescription
NameRequired. The name of the volume.
PathRequired. The path to be associated with the volume. If setting multiple paths, separate each path with a semi-colon character. Each path must terminate with a forward slash to denote a folder.
IconAn icon can be associated with the volume so that it has graphical representation when viewed in the UI. The required icon string format is category/name.
LabelAn optional label or short comment may be applied to the volume. This may be useful if the volume name has little meaning to the user (e.g. drive1, drive2 ...).
DeviceIf the volume references the root of a device, specify a device name of portable, fixed, cd, network or usb.
FlagsOptional flags.

SetVolume() is used to create or modify a volume that is associated with one or more paths. If the named volume already exists, it possible to append more paths or replace them entirely. Volume changes that are made with this function will only apply to the current process, and are lost after the program closes.

Flags that may be passed are as follows:

NameDescription
VOLUME::HIDDENHides the volume so that it will not show up when reading volumes from the root path :.
VOLUME::PRIORITYIf the volume already exists, the path will be inserted at the beginning of the path list so that it has priority over the others.
VOLUME::REPLACEIf the volume already exists, all paths that are attached to it will be replaced with the new path setting.
VOLUME::SYSTEMIdentifies the volume as being created by the system (this flag is not for client use).

Error Codes

OkayThe volume was successfully added.
LockFailedFailed to lock a required resource.
NullArgsA valid name and path string was not provided.
Core module documentation © Paul Manias 1996-2025

SubscribeAction()

Monitor action calls made against an object.

ERR SubscribeAction(OBJECTPTR Object, AC Action, FUNCTION * Callback)
ParameterDescription
ObjectThe target object.
ActionThe ID of the action that will be monitored. Methods are not supported.
CallbackA C/C++ function to callback when the action is triggered.

The SubscribeAction() function allows a client to receive a callback each time that an action is executed on an object. This strategy is referred to as "action monitoring" and is often used for responding to UI events and the termination of objects.

Subscriptions are context sensitive, so the Callback will execute in the space attributed to to the caller.

The following example illustrates how to listen to a Surface object's Redimension action and respond to resize events:

SubscribeAction(surface, AC::Redimension, C_FUNCTION(notify_resize, meta_ptr));

The template below illustrates how the Callback function should be constructed:

void notify_resize(OBJECTPTR Object, ACTIONID Action, ERR Result, APTR Parameters, APTR CallbackMeta)
{
   auto Self = (objClassType *)CurrentContext();

   // Code here...
   if ((Result == ERR::Okay) and (Parameters)) {
      auto resize = (struct acRedimension *)Parameters;
   }
}

The Object is the original subscription target, as-is the Action ID. The Result is the error code that was generated at the end of the action call. If this is not set to ERR::Okay, assume that the action did not have an effect on state. The Parameters are the original arguments provided by the client - be aware that these can legitimately be NULL even if an action specifies a required parameter structure. Notice that because subscriptions are context sensitive, CurrentContext() can be used to get a reference to the object that initiated the subscription.

To terminate an action subscription, use the UnsubscribeAction() function. Subscriptions are not resource tracked, so it is critical to match the original call with an unsubscription.

Error Codes

OkayOperation successful.
ArgsInvalid arguments passed to function.
OutOfRangeThe Action parameter is invalid.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

SubscribeEvent()

Subscribe to a system event.

ERR SubscribeEvent(INT64 Event, FUNCTION * Callback, APTR * Handle)
ParameterDescription
EventAn event identifier.
CallbackThe function that will be subscribed to the event.
HandlePointer to an address that will receive the event handle.

Use the SubscribeEvent() function to listen for system events. An event ID (obtainable from GetEventID()) must be provided, as well as a reference to a function that will be called each time that the event is broadcast.

An event handle will be returned in the Handle parameter to identify the subscription. This must be retained to later unsubscribe from the event with the UnsubscribeEvent() function.

The prototype for the Callback function is Function(APTR Event, LONG Size, APTR CallbackMeta), where Event is the event structure that matches to the subscribed EventID.

Error Codes

OkayOperation successful.
AllocMemoryA call to AllocMemory() failed to create a new memory block.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

SubscribeTimer()

Subscribes an object or function to the timer service.

ERR SubscribeTimer(DOUBLE Interval, FUNCTION * Callback, APTR * Subscription)
ParameterDescription
IntervalThe total number of seconds to wait between timer calls.
CallbackA callback function is required that will be called on each time cycle.
SubscriptionOptional. The subscription will be assigned an identifier that is returned in this parameter.

This function creates a new timer subscription that will be called at regular intervals for the calling object.

A callback function must be provided that follows this prototype: ERR Function(OBJECTPTR Subscriber, INT64 Elapsed, INT64 CurrentTime)

The Elapsed parameter is the total number of microseconds that have elapsed since the last call. The CurrentTime parameter is set to the PreciseTime() value just prior to the Callback being called. The callback function can return ERR::Terminate at any time to cancel the subscription. All other error codes are ignored. Fluid callbacks should call check(ERR::Terminate) to perform the equivalent of this behaviour.

To change the interval, call UpdateTimer() with the new value. To release a timer subscription, call UpdateTimer() with the resulting SubscriptionID and an Interval of zero.

Timer management is provisioned by the ProcessMessages() function. Failure to regularly process incoming messages will lead to unreliable timer cycles. It should be noted that the smaller the Interval that has been used, the more imperative regular message checking becomes. Prolonged processing inside a timer routine can also impact on other timer subscriptions that are waiting to be processed.

Error Codes

OkayOperation successful.
ArgsInvalid arguments passed to function.
ArrayFullThe task's timer array is at capacity - no more subscriptions can be granted.
SystemLockedPart of the system is unreachable due to a persistent lock.
InvalidStateThe subscriber is marked for termination.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

UnloadFile()

Unloads files from the file cache.

void UnloadFile(struct CacheFile * Cache)
ParameterDescription
CacheA pointer to a CacheFile structure returned from LoadFile().

This function unloads cached files that have been previously loaded with the LoadFile() function.

Core module documentation © Paul Manias 1996-2025

UnsubscribeAction()

Terminates action subscriptions.

ERR UnsubscribeAction(OBJECTPTR Object, AC Action)
ParameterDescription
ObjectThe object that you are unsubscribing from.
ActionThe ID of the action that will be unsubscribed, or zero for all actions.

The UnsubscribeAction() function will terminate subscriptions made by SubscribeAction().

To terminate multiple subscriptions in a single call, set the Action parameter to zero.

Error Codes

OkayOperation successful.
ArgsInvalid arguments passed to function.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

UnsubscribeEvent()

Removes an event subscription.

void UnsubscribeEvent(APTR Handle)
ParameterDescription
HandleAn event handle returned from SubscribeEvent()

Use UnsubscribeEvent() to remove an existing event subscription. A valid handle returned from the SubscribeEvent() function must be provided.

Core module documentation © Paul Manias 1996-2025

UpdateMessage()

Updates the data of any message that is queued.

ERR UpdateMessage(INT Message, MSGID Type, APTR Data, INT Size)
ParameterDescription
MessageThe ID of the message that will be updated.
TypeThe type of the message.
DataPointer to a buffer that contains the new data for the message.
SizeThe byte-size of the Data that has been supplied. It must not exceed the size of the message that is being updated.

The UpdateMessage() function provides a facility for updating the content of existing messages on the local queue. The client must provide the ID of the message to update and the new message Type and/or Data to set against the message.

If Data is defined, its size should equal that of the data already set against the message. The size will be trimmed if it exceeds that of the existing message, as this function cannot expand the size of the queue.

Error Codes

OkayThe message was successfully updated.
SearchThe supplied Message ID does not refer to a message in the queue.
AccessMemoryAccess to a shared memory block was denied.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

UpdateTimer()

Modify or remove a subscription created by SubscribeTimer().

ERR UpdateTimer(APTR Subscription, DOUBLE Interval)
ParameterDescription
SubscriptionThe timer subscription to modify.
IntervalThe new interval for the timer (measured in seconds), or zero to remove.

This function complements SubscribeTimer(). It can change the interval for an existing timer subscription, or remove it if the Interval is set to zero.

Error Codes

OkayOperation successful.
SearchA search routine in this function failed.
SystemLockedPart of the system is unreachable due to a persistent lock.
NullArgsFunction call missing argument value(s)
Core module documentation © Paul Manias 1996-2025

WaitForObjects()

Process incoming messages while waiting on objects to complete their activities.

ERR WaitForObjects(PMF Flags, INT TimeOut, struct ObjectSignal * ObjectSignals)
ParameterDescription
FlagsOptional flags are specified here.
TimeOutA time-out value measured in milliseconds. If this value is negative then no time-out applies and the function will not return until an incoming message or signal breaks it.
ObjectSignalsA null-terminated array of objects to monitor for signals.

WaitForObjects() acts as a front-end to ProcessMessages(), with an ability to wait for a list of objects that are expected to signal an end to their activities. An object can be signalled via the Signal() action, or via termination. This function will only return once ALL of the objects are signalled or a time-out occurs.

Note that if an object has been signalled prior to entry to this function, its signal flag will be cleared and the object will not be monitored.

If this function is called recursively, the state of the earlier call will be preserved so that it will not be affected by subsequent calls.

Error Codes

OkayOperation successful.
FailedGeneral failure.
TimeOutFunction timed-out before successful completion.
NullArgsFunction call missing argument value(s)
OutsideMainThreadAn operation has been attempted that is only possible from within the main thread.
Core module documentation © Paul Manias 1996-2025

WaitTime()

Waits for a specified amount of seconds and/or microseconds.

void WaitTime(INT Seconds, INT MicroSeconds)
ParameterDescription
SecondsThe number of seconds to wait for.
MicroSecondsThe number of microseconds to wait for. Please note that a microsecond is one-millionth of a second - 1/1000000. The value cannot exceed 999999.

This function waits for a period of time as specified by the Seconds and MicroSeconds parameters. While waiting, your process will continue to process incoming messages in order to prevent the process' message queue from developing a back-log.

WaitTime() can return earlier than the indicated timeout if a message handler returns ERR::Terminate, or if a MSGID::QUIT message is sent to the task's message queue.

Core module documentation © Paul Manias 1996-2025

AC Type

Action identifiers.

NameDescription
AC::Activate
AC::Clear
AC::Clipboard
AC::CopyData
AC::DataFeed
AC::Deactivate
AC::Disable
AC::DragDrop
AC::Draw
AC::END
AC::Enable
AC::Flush
AC::Focus
AC::Free
AC::FreeWarning
AC::GetKey
AC::Hide
AC::Init
AC::Lock
AC::LostFocus
AC::Move
AC::MoveToBack
AC::MoveToFront
AC::MoveToPoint
AC::NewChild
AC::NewObject
AC::NewOwner
AC::NewPlacement
AC::Next
AC::Prev
AC::Query
AC::Read
AC::Redimension
AC::Redo
AC::Refresh
AC::Rename
AC::Reset
AC::Resize
AC::SaveImage
AC::SaveSettings
AC::SaveToObject
AC::Seek
AC::SetField
AC::SetKey
AC::Show
AC::Signal
AC::Undo
AC::Unlock
AC::Write
Core module documentation © Paul Manias 1996-2025

ALIGN Type

Universal values for alignment of graphics and text

NameDescription
ALIGN::BOTTOMAlign to bottom
ALIGN::CENTERSynonym for HORIZONTAL | VERTICAL
ALIGN::HORIZONTALAlign to horizontal center
ALIGN::LEFTAlign to left
ALIGN::MIDDLESynonym for HORIZONTAL | VERTICAL
ALIGN::RIGHTAlign to right
ALIGN::TOPAlign to top
ALIGN::VERTICALAlign to vertical center
Core module documentation © Paul Manias 1996-2025

CCF Type

Class categories

NameDescription
CCF::AUDIOAudio classes interface with audio hardware and drivers for audio playback and recording purposes.
CCF::COMMANDCommand classes perform specific procedures, like copying or moving a file, managing volumes or executing a program.
CCF::DATAData classes parse, query and manipulate data.
CCF::FILESYSTEMFileSystem classes are based on file management and interaction with file based data.
CCF::GRAPHICSGraphics classes provide graphics management and drawing services.
CCF::GUIGUI classes are used in the development of graphical user interfaces.
CCF::IOI/O classes manage hardware and software based input and output.
CCF::MISCMiscellaneous classes do not fit into any of the other available categories.
CCF::MULTIMEDIAClasses that represent more than one media type, e.g. video files.
CCF::NETWORKNetwork classes interface with system drivers to simplify network communications.
CCF::SYSTEMSystem classes are designed to provide low-level services related to system management.
CCF::TOOLTools provide interactive services for the user.
Core module documentation © Paul Manias 1996-2025

CF Type

Compression stream formats

NameDescription
CF::DEFLATEThe 'deflate' format
CF::GZIPThe 'gzip' format
CF::ZLIBThe 'zlib' format
Core module documentation © Paul Manias 1996-2025

CLF Type

Flags for the MetaClass.

NameDescription
CLF::INHERIT_LOCALInherit the functionality of local objects defined in the class spec.
CLF::NO_OWNERSHIPObjects created will not be tracked to the creating process, nor any parent object (SetOwner() will not work either).
Core module documentation © Paul Manias 1996-2025

CLIPMODE Type

Clipboard modes

NameDescription
CLIPMODE::COPYCopy from the clipboard.
CLIPMODE::CUTCut from the clipboard.
CLIPMODE::PASTEPaste from the clipboard.
Core module documentation © Paul Manias 1996-2025

CMF Type

Compression flags

NameDescription
CMF::APPLY_SECURITYWhen decompressing, apply individual file permissions if they are available in the compression file.
CMF::CREATE_FILECreate a new archive only if the source file does not already exist.
CMF::NEWForce the creation of a new file archive. Any existing file data at the target location will be destroyed.
CMF::NO_LINKSTreat symbolic links as normal files/folders.
CMF::PASSWORDA password has been set on the object.
CMF::READ_ONLYForces read-only access, which is strongly recommended if an existing archive is being opened with no modifications intended. If this flag is not set, initialisation can fail if the user does not have write access to the source file.
Core module documentation © Paul Manias 1996-2025

CNF Type

Flags for the Config class.

NameDescription
CNF::AUTO_SAVEWhen the configuration object is freed, automatically save the configuration data back to the original file source.
CNF::NEWOn initialisation, do not load any data from the referenced configuration file.
CNF::OPTIONAL_FILESFiles are optional (do not fail if a requested file does not exist).
CNF::STRIP_QUOTESRemoves quotes from key values that are quote-encapsulated.
Core module documentation © Paul Manias 1996-2025

CON Type

Gamepad controller buttons.

NameDescription
CON::DPAD_DOWNDirectional pad down.
CON::DPAD_LEFTDirectional pad left.
CON::DPAD_RIGHTDirectional pad right.
CON::DPAD_UPDirectional pad up.
CON::GAMEPAD_EEast button (B)
CON::GAMEPAD_NNorth button (Y)
CON::GAMEPAD_SSouth button (A)
CON::GAMEPAD_WWest button (X)
CON::LEFT_BUMPER_1Gamepad left-hand bumper 1 (top, primary).
CON::LEFT_BUMPER_2Gamepad left-hand bumper 2 (lower).
CON::LEFT_THUMBLeft thumb stick depressed.
CON::RIGHT_BUMPER_1Gamepad right-hand bumper 1 (top, primary).
CON::RIGHT_BUMPER_2Gamepad right-hand bumper 2 (lower).
CON::RIGHT_THUMBRight thumb stick depressed.
CON::SELECTGamepad select or back button.
CON::STARTGamepad start button.
Core module documentation © Paul Manias 1996-2025

DATA Type

Data codes

NameDescription
DATA::AUDIOAudio file data, recognised by the Sound class
DATA::CONTENTDocument content (between XML tags) - sent by document objects only
DATA::DEVICE_INPUTDevice activity
DATA::FILEFile location (the data will reflect the complete file path)
DATA::IMAGEImage file data, recognised by the Image class
DATA::INPUT_READYDevice input that has been transformed into user input
DATA::RAWRaw unprocessed data
DATA::RECEIPTReceipt for item data, in response to an earlier request
DATA::RECORDDatabase record
DATA::REQUESTMake a request for item data
DATA::TEXTStandard ASCII text
DATA::XMLMarkup based text data. NOTE - For clipboard data, the top-level encapsulating tag must declare the type of XML, e.g. 'html', 'ripple'. For plain XML, use 'xml'
Core module documentation © Paul Manias 1996-2025

DEVICE Type

NameDescription
DEVICE::BOOKMARKThis marker indicates that the presented volume is a bookmark and not a device name.
DEVICE::COMPACT_DISCCompact disc style device
DEVICE::FIXEDCatch-all for fixed media devices that are not directly identifiable.
DEVICE::FLOPPY_DISKFloppy disk style device
DEVICE::HARD_DISKHard disk style device
DEVICE::MEMORYDevice is RAM, ROM, WORM, NVRAM, flashdisk or other form of memory. Does not guarantee a fast connection as it could be over a slow USB 1.1 connection for example
DEVICE::MODEMDevice is a modem.
DEVICE::NETWORKDevice represents a network link
DEVICE::PRINTERDevice is a paper-based printer.
DEVICE::PRINTER_3DDevice is a three dimensional printer.
DEVICE::READDevice is readable
DEVICE::REMOVABLEDevice media is removable from the hardware
DEVICE::REMOVEABLEDevice media is removable from the hardware
DEVICE::SCANNERDevice is a two dimensional scanner.
DEVICE::SCANNER_3DDevice is a three dimensional scanner.
DEVICE::SOFTWAREDevice is virtual/software defined
DEVICE::TAPETape/Stream style device
DEVICE::TEMPORARYAll storage is temporary
DEVICE::USBRemovable USB storage device. May be further qualified by HARD_DISK, FLOPPY_DISK etc
DEVICE::WRITEDevice is writeable
Core module documentation © Paul Manias 1996-2025

DMF Type

NameDescription
DMF::FIXED_CENTER_XThe CenterX field is a fixed size.
DMF::FIXED_CENTER_YThe CenterY field is a fixed size.
DMF::FIXED_DEPTHThe Depth field is a fixed size.
DMF::FIXED_HEIGHTThe Height field is a fixed size.
DMF::FIXED_RADIUS_XThe RadiusX field is a fixed size.
DMF::FIXED_RADIUS_YThe RadiusY field is a fixed size.
DMF::FIXED_WIDTHThe Width field is a fixed suze.
DMF::FIXED_XThe X field is a fixed coordinate.
DMF::FIXED_X_OFFSETThe XOffset field is a fixed coordinate.
DMF::FIXED_YThe Y field is a fixed coordinate.
DMF::FIXED_Y_OFFSETThe YOffset field is a fixed coordinate.
DMF::FIXED_ZThe Z field is a fixed coordinate.
DMF::SCALED_CENTER_XThe CenterX field is scaled to this object's parent.
DMF::SCALED_CENTER_YThe CenterY field is scaled to this object's parent.
DMF::SCALED_DEPTHThe Depth field is scaled to this object's parent.
DMF::SCALED_HEIGHTThe Height field is scaled to this object's parent.
DMF::SCALED_RADIUS_XThe RadiusX field is scaled to this object's parent.
DMF::SCALED_RADIUS_YThe RadiusY field is a scaled size to this object's parent.
DMF::SCALED_WIDTHThe Width field is scaled to this object's parent.
DMF::SCALED_XThe X field is scaled to this object's parent.
DMF::SCALED_X_OFFSETThe XOffset field is scaled to this object's parent.
DMF::SCALED_YThe Y field is scaled to this object's parent.
DMF::SCALED_Y_OFFSETThe YOffset field is scaled to this object's parent.
DMF::SCALED_ZThe Z field is a scaled coordinate to this object's parent.
DMF::STATUS_CHANGE_H
DMF::STATUS_CHANGE_V
Core module documentation © Paul Manias 1996-2025

DRL Type

Compass directions.

NameDescription
DRL::EAST
DRL::NORTH
DRL::NORTH_EAST
DRL::NORTH_WEST
DRL::SOUTH
DRL::SOUTH_EAST
DRL::SOUTH_WEST
DRL::WEST
Core module documentation © Paul Manias 1996-2025

EDGE Type

Edge flags

NameDescription
EDGE::ALL
EDGE::BOTTOM
EDGE::BOTTOM_LEFT
EDGE::BOTTOM_RIGHT
EDGE::LEFT
EDGE::RIGHT
EDGE::TOP
EDGE::TOP_LEFT
EDGE::TOP_RIGHT
Core module documentation © Paul Manias 1996-2025

EVG Type

Event categories.

NameDescription
EVG::ANDROIDAndroid specific events that do not already fit existing categories.
EVG::APPCustom event dispatched from an application
EVG::AUDIOAudio system events.
EVG::CLASSCustom event dispatched from a class that doesn't fit within the rest of the event framework
EVG::DISPLAYVideo display events.
EVG::FILESYSTEMFile system events.
EVG::GUIEvents generated by the Graphical User Interface.
EVG::HARDWAREHardware device events that are not covered by other types.
EVG::IOInput/Output events.
EVG::NETWORKNetwork events.
EVG::POWERPower Management - can also include app-specific events relating to resource management.
EVG::SYSTEMSystem-wide events
EVG::USERUser activity events (such as user login).
Core module documentation © Paul Manias 1996-2025

FBK Type

Flags for file feedback.

NameDescription
FBK::COPY_FILEA file is to be, or has been copied.
FBK::DELETE_FILEA file is to be, or has been deleted.
FBK::MOVE_FILEA file is to be, or has been moved.
Core module documentation © Paul Manias 1996-2025

FD Type

Field descriptors.

NameDescription
FD::ALLOCCLASSDEF Indicates the returned value is a dynamic allocation that needs to be manually freed (by default is a memory pointer, can be an object if combined with FD_OBJECT)
FD::ARRAYIndicates an array of values. Follow with ARRAYSIZE if used in a function.
FD::ARRAYSIZEFUNCDEF Overrides LOOKUP. Pair with ARRAY to indicate total elements in the array. It is preferred that any null terminator is not counted. If ARRAYSIZE not specified, ARRAY must be null-terminated.
FD::BUFFERFUNCDEF Overrides WRITE. Indicates a buffer that can be filled with data by the function if paired with RESULT; must be paired with BUFSIZE in second argument.
FD::BUFSIZEFUNCDEF Overrides LOOKUP. Pair with BUFFER to indicate the byte size of the buffer memory.
FD::BYTE8 bit integer.
FD::CPPUse the C++ variant of the indicated type, e.g. ARRAY is a std::vector.
FD::CUSTOM
FD::DOUBLE64 bit float.
FD::DOUBLERESULTFor actions and methods
FD::ERRORFUNCDEF
FD::FLAGSCLASSDEF
FD::FLOAT32 bit float. Not valid for use in class definitions.
FD::FUNCTIONIntended for callbacks, uses the rkFunction structure.
FD::FUNCTIONPTRSynonym for PTR | FUNCTION
FD::ISynonym for INIT
FD::INITCLASSDEF
FD::LARGE64 bit integer.
FD::LARGERESULTFor actions and methods
FD::LOCALCLASSDEF Pointer to an object that is local to the class
FD::LONG32 bit integer.
FD::LONGRESULTFor actions and methods
FD::LOOKUPCLASSDEF
FD::OBJECTSupplementary, can be used with longs (for IDs) or pointers
FD::OBJECTIDSynonym for LONG | OBJECT
FD::OBJECTPTRSynonym for PTR | OBJECT
FD::POINTERPointer (32 or 64 bit).
FD::PRIVATESynonym for SYSTEM
FD::PTRSynonym for POINTER
FD::PTRBUFFERThe next argument should be LONG|BUFSIZE
FD::PTRRESULTUse for pointer-based value results only
FD::PTRSIZESynonym for BUFSIZE
FD::PTR_DOUBLERESULTUse for pointer-based value results only.
FD::PTR_LARGERESULTUse for pointer-based value results only.
FD::PTR_LONGRESULTUse for pointer-based value results only.
FD::RSynonym for READ
FD::READCLASSDEF
FD::RESOURCEThe referenced struct or pointer is a special resource. Changes some behaviours, e.g. a resourced struct will use direct value references rather than being copied in Fluid.
FD::RESULTFUNCDEF Overrides READ
FD::RGBSupplementary, if a long type then format is 0xAARRGGBB, if pointer then refers to an RGB structure.
FD::RISynonym for READ | INIT
FD::RWSynonym for READ | WRITE
FD::SCALEDSupplementary, indicates a float value for multiplicative scaling.
FD::STRSynonym for STRING
FD::STRINGPointer to a string.
FD::STRRESULTSynonym for STR | RESULT
FD::STRUCTSupplementary, defines the field as a structure reference. MUST be combined with FD_POINTER. If used in a class, it is possible to name the structure definition in field->Arg
FD::SYNONYMCLASSDEF Use to declare fields that duplicate the functionality of another field.
FD::SYSTEMCLASSDEF System, internal and private fields.
FD::TAGSFUNCDEF Overrides INIT
FD::UNITA value that describes a display unit.
FD::UNSIGNEDSupplementary, integer value is unsigned.
FD::VARTAGSFUNCDEF Overrides FLAGS. Use for 64-bit taglists that require value definitions, e.g. TDOUBLE, TLONG etc.
FD::VIRTUALCLASSDEF Ensures that the field has no physical representation in the structure.
FD::VOID
FD::VOLATILE[Not yet allocated a bit] Used on result pointers, usually strings, to indicate that the consecutive reads will overwrite the content of previous return values. This indicates to scripting languages to make a copy of the data before the next interaction with the object.
FD::WSynonym for WRITE
FD::WORD16 bit integer.
FD::WRITECLASSDEF
Core module documentation © Paul Manias 1996-2025

FDB Type

Feedback event indicators.

NameDescription
FDB::COMPRESS_FILE
FDB::DECOMPRESS_FILE
FDB::DECOMPRESS_OBJECT
FDB::REMOVE_FILE
Core module documentation © Paul Manias 1996-2025

FDL Type

Options for the File Delete() method.

NameDescription
FDL::FEEDBACKAutomatically manage user feedback for deleting files by presenting dialog boxes.
Core module documentation © Paul Manias 1996-2025

FDT Type

Flags for the SetDate() file method.

NameDescription
FDT::ACCESSEDThe date on which the file was last accessed by a user or application.
FDT::ARCHIVEDThe date on which the file was most recently archived. Not supported by most filesystems.
FDT::CREATEDThe date on which the file was created. On some host platforms this datestamp may be read-only.
FDT::MODIFIEDThe date on which the file was last modified.
Core module documentation © Paul Manias 1996-2025

FFR Type

Return codes available to the feedback routine

NameDescription
FFR::ABORTAbort the entire operation.
FFR::OKAYContinue processing uninterrupted.
FFR::SKIPSkip processing of this entity.
Core module documentation © Paul Manias 1996-2025

FL Type

File flags

NameDescription
FL::APPROXIMATEAllows fuzzy matching of the file path when opening an existing file. This means that the file extension will be ignored; for instance attempting to open a file of 'screenshot.png' when only a file name of 'screenshot.jpg' exists in the same folder, the 'screenshot.jpg' file will be opened instead. If multiple files could potentially match to the file name, the file object will select the first match that is encountered.
FL::BUFFERActivates a special mode in which the file data is stored in a memory buffer rather than a disk file. Set the Size field to a value of at least 1 so that the initial buffer size is configured. In this mode many of the available file operations are meaningless except for the Read, Write and Seek actions.
FL::DEVICEThe file is a system device (must set if opening a device for read/write operations)
FL::DIRECTORYThe file object represents a folder.
FL::EXCLUDE_FILESExclude files when scanning this folder.
FL::EXCLUDE_FOLDERSExclude folders when scanning this folder.
FL::FILEExplicitly declares the file object as an entity that stores content (as opposed to a device or folder for example).
FL::FOLDERThe file object represents a folder.
FL::LINKRead-Only. Indicates that the file is a symbolic link or shortcut to another file.
FL::LOOPIn loop mode, the file object's position marker for read/write operations is allowed to extend past the actual file size. Any read/write operation beyond the file size will loop back to the file at a corrected offset - for example, reading position 330 of a 100 byte file will start the operation from the 30th byte. Loop mode does not affect any other area besides the read, write and seek operations. The loop feature is typically used to create multimedia data streams with minimal effort.
FL::NEWRequired when creating a new file. If a file with the same name exists, its contents will be destroyed. If however the existing file is locked, the initalisation process will fail.
FL::READRequired if the file needs to be opened for read access.
FL::RESET_DATEFor internal use only
FL::STREAMFile data is streamed (e.g. PIPE, FIFO, socket) and may be accessed locally or via a network.
FL::WRITEPrepares a file for writing data, starting at byte position 0. To start writing from the end of a file, use the Seek action after the file has been initialised.
Core module documentation © Paul Manias 1996-2025

FOF Type

Flags that can be passed to FindObject()

NameDescription
FOF::SMART_NAMESParse numeric object names as ID references and support use of the 'Owner' reserved keyword.
Core module documentation © Paul Manias 1996-2025

IDTYPE Type

Types for AllocateID()

NameDescription
IDTYPE::FUNCTIONFunction ID's are used to track FUNCTION types and are assigned to the function ID field.
IDTYPE::GLOBALGlobal ID's have no specific association with anything.
IDTYPE::MESSAGEMessage ID's are allocated for the purpose of sending uniquely identifiable messages between tasks.
Core module documentation © Paul Manias 1996-2025

JET Type

JET constants are documented in GetInputEvent()

NameDescription
JET::ABS_XYThe X, Y values are defined as absolute coordinates, relative to the top-left of the display.
JET::BUTTON_1Left mouse button; XBox A button, PS square button. Value is pressure sensitive, ranging between 0 - 1.0 (0 is released, 1.0 is fully depressed).
JET::BUTTON_10Non-specific button assignment.
JET::BUTTON_2Right mouse button; XBox X button, PS cross button.
JET::BUTTON_3Middle mouse button; XBox Y button, PS triangle.
JET::BUTTON_4Alt. mouse button 1; XBox B button, PS circle.
JET::BUTTON_5Alt. mouse button 2.
JET::BUTTON_6Non-specific button assignment.
JET::BUTTON_7Non-specific button assignment.
JET::BUTTON_8Non-specific button assignment.
JET::BUTTON_9Non-specific button assignment.
JET::CROSSED_INThis message is sent by the input system when the mouse pointer enters an area for the first time. The message value refers to the object ID of the container being monitored for movement.
JET::CROSSED_OUTThis message is sent by the input system when the mouse pointer leaves an area. The message value refers to the object ID of the container being monitored for movement.
JET::DEVICE_TILT_XYController tilted on the X/Y axis. Value indicates angle, -ve = left, +ve = right
JET::DEVICE_TILT_ZController is rising or falling. Value expressed as 'speed',
JET::DISPLAY_EDGERecently supplied input occurred at the edge of the display.
JET::PEN_TILT_XYFor pen-based input, this type indicates the vertical tilt of the pen device. A value of 0 indicates that the pen is laid flat with nib at the bottom, 0.5 is 90 degrees, 1.0 is laid flat with nib at the top.
JET::PRESSUREAmount of pressure applied, ranges from 0 (none) to 1.0 (normal) and possibly higher if user presses hard enough
JET::WHEELMouse wheel rotation - the value generally reflects the number of 'clicks' rotated on the wheel.
JET::WHEEL_TILTSome mouse wheels can be tilted to the left or right. Ranges from -1.0 to +1.0
Core module documentation © Paul Manias 1996-2025

JTYPE Type

JTYPE flags are used to categorise input types.

NameDescription
JTYPE::ANALOGAnalog movement (ranging from -1.0 to 1.0)
JTYPE::ANCHOREDCursor has been anchored with LockCursor()
JTYPE::BUTTONInput is a physical button or switch
JTYPE::CROSSINGCrossing events manage the entering and leaving of an area.
JTYPE::DBL_CLICKSet by the input system if the Type is a button and the button has been clicked in quick succession so as to be classed as a double-click.
JTYPE::DIGITALD-Pad or digital joystick source (restricted to +/- 1)
JTYPE::DRAGGEDSet if sufficient movement occurred between the original click and its point of release (usually requires a 3 or more pixel difference).
JTYPE::DRAG_ITEMThis special flag is set by the input system if the pointer is click-dragging an object at the time of the event.
JTYPE::EXT_MOVEMENTExtended or indirect movement information. This covers all types of movement that are unconnected to coordinate positioning - mouse wheel movement and pen tilt are two such examples.
JTYPE::MOVEMENTX/Y coordinate movement only. Movement such as the wheel mouse spinning is not covered by this type as it does not influence the coordinate system.
JTYPE::REPEATEDInput is a repeated entry (i.e. user is holding down a button and a repetition timer is being triggered)
JTYPE::SECONDARYIndicates to the receiver of this message that it is not the primary/original recipient
Core module documentation © Paul Manias 1996-2025

KEY Type

Raw key codes

NameDescription
KEY::A
KEY::APOSTROPHE
KEY::AT
KEY::B
KEY::BACK
KEY::BACKSPACE
KEY::BACK_SLASH
KEY::BREAK
KEY::C
KEY::CALL
KEY::CAMERA
KEY::CANCEL
KEY::CAPS_LOCK
KEY::CLEAR
KEY::COMMA
KEY::D
KEY::DELETE
KEY::DOT
KEY::DOWN
KEY::E
KEY::EIGHT
KEY::END
KEY::END_CALL
KEY::ENTER
KEY::EQUALS
KEY::ESCAPE
KEY::EXECUTE
KEY::F
KEY::F1
KEY::F10
KEY::F11
KEY::F12
KEY::F13
KEY::F14
KEY::F15
KEY::F16
KEY::F17
KEY::F18
KEY::F19
KEY::F2
KEY::F20
KEY::F3
KEY::F4
KEY::F5
KEY::F6
KEY::F7
KEY::F8
KEY::F9
KEY::FIND
KEY::FIVE
KEY::FORWARD
KEY::FOUR
KEY::G
KEY::H
KEY::HELP
KEY::HOME
KEY::I
KEY::INSERT
KEY::J
KEY::K
KEY::L
KEY::LEFT
KEY::LENS_FOCUS
KEY::LESS_GREATER
KEY::LIST_END
KEY::L_ALT
KEY::L_COMMAND
KEY::L_CONTROL
KEY::L_SHIFT
KEY::L_SQUARE
KEY::M
KEY::MACRO
KEY::MENU
KEY::MINUS
KEY::MUTE
KEY::N
KEY::NEXT
KEY::NINE
KEY::NP_0
KEY::NP_1
KEY::NP_2
KEY::NP_3
KEY::NP_4
KEY::NP_5
KEY::NP_6
KEY::NP_7
KEY::NP_8
KEY::NP_9
KEY::NP_BAR
KEY::NP_DECIMAL
KEY::NP_DIVIDE
KEY::NP_DOT
KEY::NP_ENTER
KEY::NP_MINUS
KEY::NP_MULTIPLY
KEY::NP_PLUS
KEY::NP_PLUS_MINUS
KEY::NP_SEPARATOR
KEY::NUM_LOCK
KEY::O
KEY::ONE
KEY::P
KEY::PAGE_DOWN
KEY::PAGE_UP
KEY::PAUSE
KEY::PERIOD
KEY::PLAY
KEY::PLUS
KEY::POUND
KEY::POWER
KEY::PREVIOUS
KEY::PRINT
KEY::PRT_SCR
KEY::Q
KEY::R
KEY::REDO
KEY::REVERSE_QUOTE
KEY::REWIND
KEY::RIGHT
KEY::R_ALT
KEY::R_COMMAND
KEY::R_CONTROL
KEY::R_SHIFT
KEY::R_SQUARE
KEY::S
KEY::SCR_LOCK
KEY::SELECT
KEY::SEMI_COLON
KEY::SEVEN
KEY::SIX
KEY::SLASH
KEY::SLEEP
KEY::SPACE
KEY::STAR
KEY::STOP
KEY::SYSRQ
KEY::T
KEY::TAB
KEY::THREE
KEY::TWO
KEY::U
KEY::UNDO
KEY::UP
KEY::V
KEY::VOLUME_DOWN
KEY::VOLUME_UP
KEY::W
KEY::WAKE
KEY::WIN_CONTROL
KEY::X
KEY::Y
KEY::Z
KEY::ZERO
Core module documentation © Paul Manias 1996-2025

KQ Type

Special qualifier flags

NameDescription
KQ::ALTSynonym for L_ALT | R_ALT
KQ::ALTGRSynonym for R_ALT
KQ::CAPS_LOCKCaps-Lock is on
KQ::COMMANDSynonym for L_COMMAND | R_COMMAND
KQ::CONTROLSynonym for L_CONTROL | R_CONTROL
KQ::CTRLSynonym for L_CONTROL | R_CONTROL
KQ::DEAD_KEYThis key will be affected by a previously pressed dead-key
KQ::INFOSynonym for REPEAT | RELEASED | PRESSED | NOT_PRINTABLE | CAPS_LOCK
KQ::INSTRUCTION_KEYSSynonym for ALT | CONTROL
KQ::L_ALTLeft Alt is held
KQ::L_COMMANDLeft Logo/Special
KQ::L_CONTROLControl Key is held
KQ::L_CTRLControl Key is held
KQ::L_SHIFTLeft Shift is held
KQ::NOT_PRINTABLEThe represented key value is not printable
KQ::NUM_LOCKNumLock is on
KQ::NUM_PADIdentifies numeric keypad keys
KQ::PRESSEDKey is being held or tapped
KQ::QUALIFIERSSynonym for SHIFT | COMMAND | ALT | CONTROL
KQ::RELEASEDThe key is being released
KQ::REPEATThis is a repeated key
KQ::R_ALTRight Alt is held
KQ::R_COMMANDRight Logo/Special
KQ::R_CONTROLControl Key is held
KQ::R_CTRLControl Key is held
KQ::R_SHIFTRight Shift is held
KQ::SCR_LOCKScroll Lock is on
KQ::SHIFTSynonym for L_SHIFT | R_SHIFT
Core module documentation © Paul Manias 1996-2025

LAYOUT Type

Universal values for alignment of graphic layouts in documents.

NameDescription
LAYOUT::BACKGROUNDGraphic is placed behind text. The text will not be wrapped around the object
LAYOUT::EMBEDDEDGraphic is embedded in the text stream (treated as a character). The height of the line can be extended to match the height of the graphic in this mode.
LAYOUT::FOREGROUNDGraphic is placed in front of the text. The text will not be wrapped around the object
LAYOUT::IGNORE_CURSORThe object has a fixed X/Y position, unrelated to the cursor
LAYOUT::LEFTThe text boundary is extended to the left edge of the page.
LAYOUT::LOCKLock the position of the graphic to the top left of the view and not the scrolling position of the page.
LAYOUT::RIGHTThe text boundary is extended to the right edge of the page.
LAYOUT::SQUAREThe default. Text will clip around the image's border
LAYOUT::TIGHTText wraps to the shape of the image (alpha blended/masked images only)
LAYOUT::TILEThe graphic will be tiled. Tiled graphics also meet the BACKGROUND criteria (no wrapping).
LAYOUT::WIDEThe text boundary is extended to the left and right edges of the page.
Core module documentation © Paul Manias 1996-2025

LDF Type

Flags for LoadFile()

NameDescription
LDF::CHECK_EXISTSLimits the routine to checking the file cache for the existence of the file. If found, the relevant cache entry is returned. The open count is not incremented by this action (it is therefore unnecessary to follow-up with a call to UnloadFile()). If no up-to-date cache entry is available, ERR::Search is returned.
Core module documentation © Paul Manias 1996-2025

LOC Type

AnalysePath() values

NameDescription
LOC::DIRECTORYThe path refers to a folder.
LOC::FILEThe path refers to a file.
LOC::VOLUMEThe path refers to a volume name.
Core module documentation © Paul Manias 1996-2025

MAX Type

NameDescription
MAX::FILENAME
MAX::NAME_LEN
Core module documentation © Paul Manias 1996-2025

MEM Type

Memory types used by AllocMemory(). The lower 16 bits are stored with allocated blocks, the upper 16 bits are function-relative only.

NameDescription
MEM::AUDIOThe memory space is reserved by an audio device such as a sound card.
MEM::CALLERThis flag is usable only in routines that are supporting a class method. It forces the memory allocation to be tracked to the object that made the method call. This is particularly important in methods that return memory blocks that do not form a part of the object itself.
MEM::CODESet if the memory will contain executable program code.
MEM::DATAThe default type, DATA, is used to indicate a standard memory allocation from system RAM.
MEM::HIDDENHidden blocks are not recorded and are excluded from resource tracking.
MEM::MANAGEDEnables custom resource management for the memory block. The start of the block will need to be reserved with a pointer to a ResourceManager structure, which is included as part of the block's declared Size. The Free() callback will be called when the block is removed.
MEM::NO_BLOCKPermanently turn off all accesses to this memory block. This means that multiple threads can have full read/write access to the memory block at once regardless of other acces flags.
MEM::NO_BLOCKINGPermanently turn off all accesses to this memory block. This means that multiple threads can have full read/write access to the memory block at once regardless of other acces flags.
MEM::NO_CLEARDo not clear the memory on allocation (saves time).
MEM::NO_LOCKFor AllocMemory() only, indicates that the (private) memory block should not be locked on return.
MEM::NO_POOLGives a hint to the allocator to allocate the block outside of the memory pool.
MEM::READThe memory is explicitly marked as readable.
MEM::READ_WRITESynonym for READ | WRITE
MEM::STRINGIdentifies the memory content as a null terminated string. Useful for debugging and run-time type identification in scripts.
MEM::TEXTUREThe memory space is reserved by a video driver for hosting texture graphics.
MEM::TMP_LOCKEnables temporary locking restrictions. Prevents processes from sleeping while holding a lock on the memory block.
MEM::UNTRACKEDAllocating an untracked memory block will prevent the memory block from being tracked back to the object holding the current context.
MEM::VIDEOThe memory space is reserved by a video device such as a graphics card for display purposes, e.g. framebuffer.
MEM::WRITEThe memory is explicitly marked as writeable.
Core module documentation © Paul Manias 1996-2025

MFF Type

Flags for the File Watch() method.

NameDescription
MFF::ATTRIBFile permissions or datestamp changed.
MFF::CLOSEDAn opened file has been closed.
MFF::CREATENew file/link created or renamed in folder.
MFF::DEEPReceive notifications from sub-folders (Windows only).
MFF::DELETEExisting file deleted
MFF::FILEFile identifier; if passed to File.Watch() then indicates a preference for file events only.
MFF::FOLDERFolder identifier; if passed to File.Watch() then indicates a preference for folder events only.
MFF::MODIFYFile modified via write or truncation.
MFF::MOVEDExisting file moved or renamed.
MFF::OPENEDExisting file was opened.
MFF::READFile was accessed (read).
MFF::RENAMEExisting file moved or renamed.
MFF::SELFEvent applies to the monitored folder and not a contained item
MFF::UNMOUNTHost filesystem was unmounted.
MFF::WRITEFile modified via write or truncation.
Core module documentation © Paul Manias 1996-2025

MHF Type

Internal options for requesting function tables from modules.

NameDescription
MHF::DEFAULTUse structures to group exported functions (Linux, C/C++ standard)
MHF::STATICKeep the module code in memory
MHF::STRUCTUREUse structures to group exported functions (Linux, C/C++ standard)
Core module documentation © Paul Manias 1996-2025

MOF Type

Module flags

NameDescription
MOF::LINK_LIBRARYModule refers to a symbolic link library (e.g. libz DLL or SO)
MOF::STATICThis flag prevents the loaded module code from being unloaded when the module object is freed. This may be needed in cases where a module is designed with the presumption that it will remain in memory after being loaded by the developer.
MOF::SYSTEM_PROBEIndicates that the module is being probed. Do not use outside of the core library.
Core module documentation © Paul Manias 1996-2025

MOVE Type

Generic flags for controlling movement.

NameDescription
MOVE::ALLSynonym for DOWN | UP | LEFT | RIGHT
MOVE::DOWN
MOVE::LEFT
MOVE::RIGHT
MOVE::UP
Core module documentation © Paul Manias 1996-2025

MSF Type

Message flags.

NameDescription
MSF::ADDThe default behaviour - this will add the message to the end of the queue.
MSF::MESSAGE_IDThe Type parameter refers to a unique message ID rather than a message type for this call.
MSF::NO_DUPLICATEIf the Type parameter matches a message already inside the queue, the new message will not be added and the function will immediately return with ERR::Okay.
MSF::UPDATEIf the Type parameter matches a message already inside the queue, the data for that message will be deleted, then the new message will be added to the end of the queue.
MSF::WAITWait before inserting the message if the queue is at maximum capacity.
Core module documentation © Paul Manias 1996-2025

MSGID Type

Reserved message ID's that are handled internally.

NameDescription
MSGID::ACTION
MSGID::BREAK
MSGID::COMMAND
MSGID::CORE_END
MSGID::DEBUG
MSGID::EVENT
MSGID::FREE
MSGID::QUIT
MSGID::THREAD_ACTION
MSGID::THREAD_CALLBACK
MSGID::VALIDATE_PROCESS
MSGID::WAIT_FOR_OBJECTS
Core module documentation © Paul Manias 1996-2025

MTF Type

MoveToPoint flags

NameDescription
MTF::ANIM
MTF::RELATIVE
MTF::X
MTF::Y
MTF::Z
Core module documentation © Paul Manias 1996-2025

NETMSG Type

NameDescription
NETMSG::END
NETMSG::START
Core module documentation © Paul Manias 1996-2025

NF Type

Flags that can be passed to NewObject(). If a flag needs to be stored with the object, it must be specified in the lower word.

NameDescription
NF::COLLECTMarked for garbage collection.
NF::FREERead-only indicator for when the object is being freed.
NF::FREE_ON_UNLOCKRead-only indicator for when the object is marked for deletion.
NF::INITIALISEDRead-only indicator if the object has been initialised.
NF::LOCALClasses can allocate local objects to stop them from being associated with the client.
NF::MESSAGEAction has been called against the object through the message system (managed by ProcessMessages()).
NF::NAMEUse the Name parameter to name the created object. This flag is not required if using UNIQUE.
NF::PRIVATE
NF::RECLASSEDThe object switched from the base-class to a sub-class during initialisation.
NF::SIGNALLEDThe object has been signalled and is awaiting processing.
NF::TIMER_SUBThe object is subscribed to a timer interval.
NF::UNIQUEUse to allocate an object that has a guaranteed unique name. This will prevent code from shadowing any object that exists with the same name, which can be imperative when creating shared objects. If it is discovered that an identically named object exists, NewObject() will return ERR::ObjectExists. This flag works in conjunction with the Name parameter.
NF::UNTRACKEDAn object created with this flag will not be tracked back to the object that created it.
Core module documentation © Paul Manias 1996-2025

OPF Type

NameDescription
OPF::ARGS
OPF::DETAIL
OPF::ERROR
OPF::MAX_DEPTH
OPF::MODULE_PATH
OPF::OPTIONS
OPF::PRIVILEGED
OPF::ROOT_PATH
OPF::SCAN_MODULES
OPF::SHOW_ERRORS
OPF::SHOW_IO
OPF::SHOW_MEMORY
OPF::SYSTEM_PATH
Core module documentation © Paul Manias 1996-2025

PERMIT Type

Permission flags

NameDescription
PERMIT::ALL_DELETESynonym for EVERYONE_DELETE
PERMIT::ALL_EXECSynonym for EVERYONE_EXEC
PERMIT::ALL_READSynonym for EVERYONE_READ
PERMIT::ALL_WRITESynonym for EVERYONE_WRITE
PERMIT::ARCHIVEMarks the file for future backup. The flag should be cleared after the backup has succeeded.
PERMIT::DELETEOwner can delete. If the file system does not support this, deletion is enabled via the WRITE flag.
PERMIT::EVERYONE_ACCESSSynonym for EVERYONE_READ | EVERYONE_WRITE | EVERYONE_EXEC | EVERYONE_DELETE
PERMIT::EVERYONE_DELETESynonym for DELETE | GROUP_DELETE | OTHERS_DELETE
PERMIT::EVERYONE_EXECSynonym for EXEC | GROUP_EXEC | OTHERS_EXEC
PERMIT::EVERYONE_READSynonym for READ | GROUP_READ | OTHERS_READ
PERMIT::EVERYONE_READWRITESynonym for EVERYONE_READ | EVERYONE_WRITE
PERMIT::EVERYONE_WRITESynonym for WRITE | GROUP_WRITE | OTHERS_WRITE
PERMIT::EXECUser/Owner can execute.
PERMIT::GROUPSynonym for GROUP_READ | GROUP_WRITE | GROUP_EXEC | GROUP_DELETE
PERMIT::GROUPIDAllows executables to run with a set group id.
PERMIT::GROUP_DELETEGroup members can delete.
PERMIT::GROUP_EXECGroup members can execute.
PERMIT::GROUP_READGroup members can read.
PERMIT::GROUP_WRITEGroup members can write.
PERMIT::HIDDENRecommends that the file is hidden from view by default.
PERMIT::INHERITInherit permissions from parent folder and logical OR them with preset permission flags.
PERMIT::NETWORKFile is hosted on another machine.
PERMIT::OFFLINEFile content for this networked file has not been cached on the local PC.
PERMIT::OTHERSSynonym for OTHERS_READ | OTHERS_WRITE | OTHERS_EXEC | OTHERS_DELETE
PERMIT::OTHERS_DELETEOthers can delete.
PERMIT::OTHERS_EXECOthers can execute.
PERMIT::OTHERS_READOthers can read.
PERMIT::OTHERS_WRITEOthers can write.
PERMIT::PASSWORDFile is password protected.
PERMIT::READUser/Owner has read access. This will not allow compiled code to be executed.
PERMIT::USERSynonym for READ | WRITE | EXEC | DELETE
PERMIT::USERIDAllows executables to run with a set user id.
PERMIT::USER_EXECSynonym for EXEC
PERMIT::USER_READSynonym for READ
PERMIT::USER_WRITESynonym for WRITE
PERMIT::WRITEUser/Owner can write.
Core module documentation © Paul Manias 1996-2025

PMF Type

Flags for ProcessMessages

Core module documentation © Paul Manias 1996-2025

PTC Type

Predefined cursor styles

NameDescription
PTC::CROSSHAIRThe cross hair is used for targeting specific pixel points (common in paint programs).
PTC::CUSTOMWorks in conjunction with the SetCustomCursor() function to represent a program defined bitmap.
PTC::DEFAULTThe default cursor (usually an arrow pointing to the upper left).
PTC::DRAGGABLEUsed to indicate that a surface or object can be dragged by the user.
PTC::END
PTC::HANDThe hand cursor is often used for indicating click-able content (hyper-links, icons etc).
PTC::HAND_LEFTSimilar to the standard hand cursor, but points to the left.
PTC::HAND_RIGHTSimilar to the standard hand cursor, but points to the right.
PTC::INVISIBLEThe cursor graphic is invisible (but will continue to operate as normal in all other respects).
PTC::MAGNIFIERRepresents a magnifying glass.
PTC::NO_CHANGE
PTC::PAINTBRUSHThe paintbrush cursor is typically employed by paint programs.
PTC::SIZE_BOTTOMSizing cursor - for resizing the bottom edge of any rectangular area.
PTC::SIZE_BOTTOM_LEFTSizing cursor - for resizing the bottom left corner of any rectangular area.
PTC::SIZE_BOTTOM_RIGHTSizing cursor - for resizing the bottom right corner of any rectangular area.
PTC::SIZE_LEFTSizing cursor - for resizing the left edge of any rectangular area.
PTC::SIZE_RIGHTSizing cursor - for resizing the right edge of any rectangular area.
PTC::SIZE_TOPSizing cursor - for resizing the top edge of any rectangular area.
PTC::SIZE_TOP_LEFTSizing cursor - for resizing the top left corner of any rectangular area.
PTC::SIZE_TOP_RIGHTSizing cursor - for resizing the top right corner of any rectangular area.
PTC::SIZINGMulti-directional sizing cursor - for resizing in any direction.
PTC::SLEEPThe sleep cursor is used to inform the user that the computer is busy.
PTC::SPLIT_HORIZONTALThe horizontal split cursor is typically used for splitting rectangles in half, or dragging a horizontal split within a large rectangular space.
PTC::SPLIT_VERTICALThe vertical split cursor is typically used for splitting rectangles in half, or dragging a vertical split within a large rectangular space.
PTC::STOPThe stop cursor is used to inform the user that an operation is not possible (e.g. drag and drop to an unsupported object area).
PTC::TEXTThe text cursor is popular for the precise positioning of text cursors.
Core module documentation © Paul Manias 1996-2025

RDF Type

Flags for the OpenDir() function.

NameDescription
RDF::ARCHIVEFeedback only - archive bit is set.
RDF::DATERetrieve the date stamp of each file.
RDF::FILERead all files in the folder.
RDF::FILESRead all files in the folder.
RDF::FOLDERRead all folders/volumes in the folder.
RDF::FOLDERSRead all folders/volumes in the folder.
RDF::HIDDENFeedback only - file/folder is hidden.
RDF::LINKFeedback only - file/folder is actually a link to another location.
RDF::PERMISSIONSGet permission/security information.
RDF::QUALIFIEDReturn fully qualified folder names (i.e. trailing slash or colon for each name).
RDF::QUALIFYReturn fully qualified folder names (i.e. trailing slash or colon for each name).
RDF::READ_ALLSynonym for SIZE | DATE | PERMISSIONS | FILES | FOLDERS
RDF::READ_ONLYRead-only (not permissions related and might indicate read-only media).
RDF::SIZERetrieve the byte size of each file.
RDF::STREAMPath is connected via a stream, e.g. network connection.
RDF::TAGSReceive additional information for each file, such as comments, author and copyright. The results are stored in the Tags field of each file.
RDF::TIMERetrieve the date stamp of each file.
RDF::VIRTUALPath is to a virtual device.
RDF::VOLUMEFeedback only - indicates a volume.
Core module documentation © Paul Manias 1996-2025

RES Type

NameDescription
RES::CORE_IDLRefers to the Core module's compressed IDL string.
RES::CPU_SPEEDThe average top-speed of all CPU cores in Mhz.
RES::FREE_MEMORYThe total amount of free memory.
RES::FREE_SWAPThe total amount of free swap memory.
RES::JNI_ENVReturn the current JNI environment string.
RES::KEY_STATEMaintains the state of key qualifiers such as caps-lock and the shift keys.
RES::LOG_DEPTHThe current depth of log messages.
RES::LOG_LEVELThe current level of log detail (larger numbers indicate more detail).
RES::MAX_PROCESSESThe maximum number of processes that can be supported at any time.
RES::OPEN_INFOPointer to the OpenInfo structure originally used to initialise the system.
RES::PRIVILEGEDThis is set to true if the process has elevated privileges (such as superuser or administrative rights).
RES::PRIVILEGED_USERIf this value is set to 1, the process will operate in privileged mode (typically this enables full administrator rights). This feature will only work for Unix processes that are granted admin rights when launched. Setting the Value to 0 reverts to the user's permission settings. SetResource() will return an error code indicating the level of success.
RES::PROCESS_STATELife-cycle stage of the running process
RES::STATIC_BUILDReturns true if the runtime is a statically linked build.
RES::THREAD_IDReturn the ID of the current thread.
RES::TOTAL_MEMORYThe total amount of installed memory.
RES::TOTAL_SHARED_MEMORYThe total amount of shared memory in use (system wide).
RES::TOTAL_SWAPThe total amount of available swap space.
Core module documentation © Paul Manias 1996-2025

RFD Type

Flags for RegisterFD()

NameDescription
RFD::ALWAYS_CALLAlways call this FD's handler prior to the process going to sleep.
RFD::EXCEPTActivate the callback if error conditions are pending.
RFD::READActivate the callback if there is data available to read.
RFD::RECALLSet if the subscriber needs to manually check for incoming/outgoing data. This is supported as a one-off check, so the flag will be disabled automatically when the subscriber is called.
RFD::REMOVEStop monitoring this file descriptor.
RFD::SOCKETIdentifies the file descriptor as a socket (Linux systems only).
RFD::WRITEActivate the callback if there is room to write to the FD's buffer.
Core module documentation © Paul Manias 1996-2025

RP Type

Path types for SetResourcePath()

NameDescription
RP::MODULE_PATHAn alternative path leading to the system modules (normally system:modules/). Introduced for platforms such as Android, where modules are stored in asset folders.
RP::ROOT_PATHOverrides the root path, which defaults to the location at which Parasol is installed.
RP::SYSTEM_PATHThe path of the system: volume, which otherwise defaults to [root]:system/.
Core module documentation © Paul Manias 1996-2025

RSF Type

Flags for ResolvePath()

NameDescription
RSF::APPROXIMATEIgnores file extensions for the purpose of file name matching.
RSF::CASE_SENSITIVEFor use on host systems that use case-insensitive file systems such as Windows; this option checks that the discovered file is a case-sensitive match to the Path.
RSF::CHECK_VIRTUALIf the volume referenced by Path is traced to another volume that is reserved by a virtual file system driver, ERR::VirtualVolume is returned. The volume is still resolved as far as possible and the resulting path will be returned by this function.
RSF::NO_DEEP_SCANDo not perform more than one iteration when resolving the source file path.
RSF::NO_FILE_CHECKDo not test for the existence of the targeted file or folder during the resolution process.
RSF::PATHUse the PATH environment variable to resolve the file name in the Path parameter.
Core module documentation © Paul Manias 1996-2025

SCF Type

Script flags

NameDescription
SCF::EXIT_ON_ERRORThe script will automatically terminate its execution process if an error is detected.
SCF::LOG_ALLEnables execution debugging. More information will be printed to the console in this mode.
Core module documentation © Paul Manias 1996-2025

SEEK Type

Seek positions

NameDescription
SEEK::CURRENTUse an index at the end of the last read/write operation.
SEEK::ENDUse an index at the end of the data buffer.
SEEK::RELATIVEThe index is between 0 and 1.0 and relative to the data size.
SEEK::STARTUse an index at position zero.
Core module documentation © Paul Manias 1996-2025

STR Type

NameDescription
STR::CASEPerform a case-sensitive match.
STR::MATCH_CASEPerform a case-sensitive match.
STR::MATCH_LENThe strings must be of equal length to be matched.
Core module documentation © Paul Manias 1996-2025

STT Type

Types for StrDatatype().

NameDescription
STT::FLOATThe string represents a floating point number.
STT::HEXThe string represents a hexadecimal number.
STT::NUMBERThe string represents a whole number.
STT::STRINGThe string represents plain-text.
Core module documentation © Paul Manias 1996-2025

THF Type

Thread flags

NameDescription
THF::AUTO_FREEAutomatically destroy the Thread object when the user routine has completed.
Core module documentation © Paul Manias 1996-2025

TOI Type

NameDescription
TOI::ANDROID_ASSETMGR
TOI::ANDROID_CLASS
TOI::ANDROID_ENV
TOI::LOCAL_CACHE
TOI::LOCAL_STORAGE
Core module documentation © Paul Manias 1996-2025

TSF Type

Task flags

NameDescription
TSF::ATTACHEDForces the new process to be attached to the parent (child will close when parent closes).
TSF::DETACHEDForces the new process to be detached from the parent.
TSF::PIPEEnable the output pipe to the launched process so that it can read data.
TSF::PRIVILEGEDThe child process will inherit the system privileges of its parent.
TSF::QUIETDivert all process output to /dev/null or the nearest equivalent for non-Unix systems.
TSF::RESET_PATHThe new process will start in its own folder and not the folder of the parent process.
TSF::SHELLEnables shell mode. On Unix systems, this means that a shell (usually BASH) will be used to launch the process.
TSF::VERBOSEEnable verbose logging.
TSF::WAITThe parent process will halt when the task is running. Control is returned to the parent process once the child process terminates.
Core module documentation © Paul Manias 1996-2025

TSTATE Type

Indicates the state of a process.

NameDescription
TSTATE::PAUSEDThe process is asleep.
TSTATE::RUNNINGThe process is currently executing code.
TSTATE::STOPPINGThe process is in its termination phase.
TSTATE::TERMINATEDThe process has closed.
Core module documentation © Paul Manias 1996-2025

VAS Type

For use by VirtualVolume()

NameDescription
VAS::CASE_SENSITIVESet to true if the volume's paths are case-sensitive.
VAS::CLOSE_DIR
VAS::CREATE_LINK
VAS::DELETE
VAS::DEREGISTERRemove the virtual volume from the system.
VAS::DRIVER_SIZE
VAS::GET_DEVICE_INFO
VAS::GET_INFO
VAS::IDENTIFY_FILE
VAS::IGNORE_FILE
VAS::MAKE_DIR
VAS::OPEN_DIR
VAS::READ_LINK
VAS::RENAME
VAS::SAME_FILE
VAS::SCAN_DIR
VAS::TEST_PATH
VAS::WATCH_PATH
Core module documentation © Paul Manias 1996-2025

VLF Type

VlogF flags

NameDescription
VLF::API
VLF::BRANCH
VLF::CRITICAL
VLF::DETAIL
VLF::ERROR
VLF::FUNCTION
VLF::INFO
VLF::TRACE
VLF::WARNING
Core module documentation © Paul Manias 1996-2025

VOLUME Type

Options for SetVolume()

NameDescription
VOLUME::HIDDENHides the volume so that it will not show up when reading volumes from the root path :.
VOLUME::PRIORITYIf the volume already exists, the path will be inserted at the beginning of the path list so that it has priority over the others.
VOLUME::REPLACEIf the volume already exists, all paths that are attached to it will be replaced with the new path setting.
VOLUME::SYSTEMIdentifies the volume as being created by the system (this flag is not for client use).
Core module documentation © Paul Manias 1996-2025

ActionArray Structure

FieldTypeDescription
RoutineAPTRPointer to the function entry point
ActionCodeACAction identifier
Core module documentation © Paul Manias 1996-2025

ActionTable Structure

Structure for ActionList

FieldTypeDescription
HashUINTHash of the action name.
SizeINTByte-size of the structure for this action.
NameCSTRINGName of the action.
Argsconst struct FunctionField *List of fields that are passed to this action.
Core module documentation © Paul Manias 1996-2025

ChildEntry Structure

Structure for ListChildren() function

FieldTypeDescription
ObjectIDOBJECTIDObject ID
ClassIDCLASSIDThe class ID of the referenced object.
Core module documentation © Paul Manias 1996-2025

ClipRectangle Structure

Generic structure for rectangular clipping.

FieldTypeDescription
LeftINTLeft-most coordinate
TopINTTop coordinate
RightINTRight-most coordinate
BottomINTBottom coordinate
Core module documentation © Paul Manias 1996-2025

ColourFormat Structure

FieldTypeDescription
RedShiftUBYTERight shift value for red (15/16 bit formats only)
GreenShiftUBYTERight shift value for green
BlueShiftUBYTERight shift value for blue
AlphaShiftUBYTERight shift value for alpha
RedMaskUBYTEUnshifted mask value for red (ranges from 0x00 to 0xff)
GreenMaskUBYTEUnshifted mask value for green
BlueMaskUBYTEUnshifted mask value for blue
AlphaMaskUBYTEUnshifted mask value for alpha
RedPosUBYTELeft shift/positional value for red
GreenPosUBYTELeft shift/positional value for green
BluePosUBYTELeft shift/positional value for blue
AlphaPosUBYTELeft shift/positional value for alpha
BitsPerPixelUBYTENumber of bits per pixel for this format.
Core module documentation © Paul Manias 1996-2025

CompressedItem Structure

FieldTypeDescription
OriginalSizeINT64Original size of the file
CompressedSizeINT64Compressed size of the file
Nextstruct CompressedItem *Used only if this is a linked-list.
PathCSTRINGPath to the file (includes folder prefixes). Archived folders will include the trailing slash.
PermissionsPERMITOriginal permissions - see PERMIT flags.
UserIDINTOriginal user ID
GroupIDINTOriginal group ID
OthersIDINTOriginal others ID
FlagsFLFL flags
Createdstruct DateTimeDate and time of the file's creation.
Modifiedstruct DateTimeDate and time last modified.
Core module documentation © Paul Manias 1996-2025

CompressionFeedback Structure

FieldTypeDescription
FeedbackIDFDBSet to one of the FDB event indicators
IndexINTIndex of the current file
PathCSTRINGName of the current file/path in the archive
DestCSTRINGDestination file/path during decompression
ProgressINT64Progress indicator (byte position for the file being de/compressed).
OriginalSizeINT64Original size of the file
CompressedSizeINT64Compressed size of the file
YearINT16Year of the original file's datestamp.
MonthINT16Month of the original file's datestamp.
DayINT16Day of the original file's datestamp.
HourINT16Hour of the original file's datestamp.
MinuteINT16Minute of the original file's datestamp.
SecondINT16Second of the original file's datestamp.
Core module documentation © Paul Manias 1996-2025

DateTime Structure

Generic structure for date-time management.

FieldTypeDescription
YearINT16Year
MonthBYTEMonth 1 to 12
DayBYTEDay 1 to 31
HourBYTEHour 0 to 23
MinuteBYTEMinute 0 to 59
SecondBYTESecond 0 to 59
TimeZoneBYTETimeZone -13 to +13
Core module documentation © Paul Manias 1996-2025

DirInfo Structure

Used by OpenDir() only

FieldTypeDescription
Infostruct FileInfo *Pointer to a FileInfo structure
Core module documentation © Paul Manias 1996-2025

Edges Structure

Generic structure for declaring edge coordinates.

FieldTypeDescription
LeftINTLeft-most coordinate
TopINTTop coordinate
RightINTRight-most coordinate
BottomINTBottom coordinate
Core module documentation © Paul Manias 1996-2025

FRGB Structure

32-bit floating point RGB colour components.

FieldTypeDescription
RedFLOATRed component value
GreenFLOATGreen component value
BlueFLOATBlue component value
AlphaFLOATAlpha component value
Core module documentation © Paul Manias 1996-2025

Field Structure

Used to describe the public fields of a class.

FieldTypeDescription
ArgMAXINTAn option to complement the field type. Can be a pointer or an integer value
GetValueFUNCTION *A virtual function that will retrieve the value for this field.
SetValueAPTRA virtual function that will set the value for this field.
WriteValueFUNCTION *An internal function for writing to this field.
NameCSTRINGThe English name for the field, e.g. Width
FieldIDUINTProvides a fast way of finding fields, e.g. FID_Width
OffsetUINT16Field offset within the object
IndexUINT16Field array index
FlagsUINTSpecial flags that describe the field
Core module documentation © Paul Manias 1996-2025

FieldArray Structure

Used to construct class blueprints for the MetaClass.

FieldTypeDescription
NameCSTRINGThe name of the field, e.g. Width
GetFieldAPTRvoid GetField(*Object, APTR Result);
SetFieldAPTRERR SetField(*Object, APTR Value);
ArgMAXINTCan be a pointer or an integer value
FlagsUINTSpecial flags that describe the field
Core module documentation © Paul Manias 1996-2025

FieldDef Structure

Used to define constants for field references.

FieldTypeDescription
NameCSTRINGThe name of the constant.
ValueINTThe value of the constant.
Core module documentation © Paul Manias 1996-2025

FileFeedback Structure

FieldTypeDescription
SizeINT64Size of the file
PositionINT64Current seek position within the file if moving or copying
PathSTRINGPath to the file
DestSTRINGDestination file/path if moving or copying
FeedbackIDFBKSet to one of the FBK values
ReservedBYTEReserved in case of future expansion
Core module documentation © Paul Manias 1996-2025

FileInfo Structure

Metadata for describing a file.

FieldTypeDescription
SizeINT64The size of the file's content.
TimeStampINT6464-bit time stamp - usable only for comparison (e.g. sorting).
Nextstruct FileInfo *Next structure in the list, or NULL.
NameSTRINGThe name of the file.
FlagsRDFAdditional flags to describe the file.
PermissionsPERMITStandard permission flags.
UserIDINTUser ID (Unix systems only).
GroupIDINTGroup ID (Unix systems only).
Createdstruct DateTimeThe date/time of the file's creation.
Modifiedstruct DateTimeThe date/time of the last file modification.
Core module documentation © Paul Manias 1996-2025

Function Structure

Function list array structure

FieldTypeDescription
AddressAPTRPointer to the function entry point
NameCSTRINGName of the function
Argsconst struct FunctionField *A list of parameters accepted by the function
Core module documentation © Paul Manias 1996-2025

FunctionField Structure

Used by ActionTable and Function structures to declare lists of parameters.

FieldTypeDescription
NameCSTRINGName of the field
TypeUINTType of the field
Core module documentation © Paul Manias 1996-2025

HSV Structure

Colour structure for Hue, Saturation and Value/Light components.

FieldTypeDescription
HueDOUBLEBetween 0 and 359.999
SaturationDOUBLEBetween 0 and 1.0
ValueDOUBLEBetween 0 and 1.0. Corresponds to Value, Lightness or Brightness
AlphaDOUBLEAlpha blending value from 0 to 1.0.
Core module documentation © Paul Manias 1996-2025

InputEvent Structure

FieldTypeDescription
Nextconst struct InputEvent *Next event in the chain
ValueDOUBLEThe value associated with the Type
TimestampINT64PreciseTime() of the recorded input
RecipientIDOBJECTIDSurface that the input message is being conveyed to
OverIDOBJECTIDSurface that is directly under the mouse pointer at the time of the event
AbsXDOUBLEAbsolute horizontal position of mouse cursor (relative to the top left of the display)
AbsYDOUBLEAbsolute vertical position of mouse cursor (relative to the top left of the display)
XDOUBLEHorizontal position relative to the surface that the pointer is over - unless a mouse button is held or pointer is anchored - then the coordinates are relative to the click-held surface
YDOUBLEVertical position relative to the surface that the pointer is over - unless a mouse button is held or pointer is anchored - then the coordinates are relative to the click-held surface
DeviceIDOBJECTIDThe hardware device that this event originated from
TypeJETJET constant that describes the event
FlagsJTYPEBroad descriptors for the given Type (see JTYPE flags). Automatically defined when delivered to the pointer object
MaskJTYPEMask to use for checking against subscribers
Core module documentation © Paul Manias 1996-2025

MemInfo Structure

FieldTypeDescription
StartAPTRThe starting address of the memory block (does not apply to shared blocks).
ObjectIDOBJECTIDThe object that owns the memory block.
SizeUINTThe size of the memory block.
FlagsMEMThe type of memory.
MemoryIDMEMORYIDThe unique ID for this block.
AccessCountINT16Total number of active locks on this block.
Core module documentation © Paul Manias 1996-2025

Message Structure

Message header.

FieldTypeDescription
TimeINT64A timestamp acquired from PreciseTime() when the message was first passed to SendMessage().
UIDINTA unique identifier automatically created by SendMessage().
TypeMSGIDA message type identifier as defined by the client.
SizeINTThe byte-size of the message data, or zero if no data is provided.
Core module documentation © Paul Manias 1996-2025

ObjectSignal Structure

Required in calls to WaitForObjects().

FieldTypeDescription
ObjectOBJECTPTRReference to an object to monitor.
Core module documentation © Paul Manias 1996-2025

RGB16 Structure

16-bit RGB colour value.

FieldTypeDescription
RedUINT16Red component value
GreenUINT16Green component value
BlueUINT16Blue component value
AlphaUINT16Alpha component value
Core module documentation © Paul Manias 1996-2025

RGB32 Structure

32-bit RGB colour value.

FieldTypeDescription
RedUINTRed component value
GreenUINTGreen component value
BlueUINTBlue component value
AlphaUINTAlpha component value
Core module documentation © Paul Manias 1996-2025

RGB8 Structure

8-bit RGB colour value.

FieldTypeDescription
RedUBYTERed component value
GreenUBYTEGreen component value
BlueUBYTEBlue component value
AlphaUBYTEAlpha component value
Core module documentation © Paul Manias 1996-2025

RGBPalette Structure

FieldTypeDescription
AmtColoursINTTotal colours
Colstruct RGB8RGB Palette
Core module documentation © Paul Manias 1996-2025

SystemState Structure

Returned by the GetSystemState() function.

FieldTypeDescription
PlatformCSTRINGString-based field indicating the user's platform. Currently returns Native, Windows, OSX or Linux.
ConsoleFDHOSTHANDLEInternal
StageINTThe current operating stage. -1 = Initialising, 0 indicates normal operating status; 1 means that the program is shutting down; 2 indicates a program restart; 3 is for mode switches.
Core module documentation © Paul Manias 1996-2025

Unit Structure

FieldTypeDescription
ValueDOUBLEThe unit value.
TypeUINTAdditional type information
Core module documentation © Paul Manias 1996-2025

dcAudio Structure

Data feed structure for Audio

FieldTypeDescription
SizeINTByte size of this structure
FormatINTFormat of the audio data
Core module documentation © Paul Manias 1996-2025

dcDeviceInput Structure

FieldTypeDescription
ValuesDOUBLEThe value(s) associated with the Type
TimestampINT64PreciseTime() of the recorded input
DeviceIDOBJECTIDThe hardware device that this event originated from (note: This ID can be to a private/inaccessible object, the point is that the ID is unique)
FlagsJTYPEBroad descriptors for the given Type. Automatically defined when delivered to the pointer object
TypeJETJET constant
Core module documentation © Paul Manias 1996-2025

dcKeyEntry Structure

Data feed structure for Keypress

FieldTypeDescription
FlagsINTShift/Control/CapsLock...
ValueINTASCII value of the key A/B/C/D...
TimestampINT64PreciseTime() at which the keypress was recorded
UnicodeINTUnicode value for pre-calculated key translations
Core module documentation © Paul Manias 1996-2025

dcRequest Structure

Data feed item request

FieldTypeDescription
ItemINTIdentifier for retrieval from the source
PreferenceBYTEData preferences for the returned item(s)
Core module documentation © Paul Manias 1996-2025