#ifndef CLIB_OPENUTIL_PROTOS_H
#define CLIB_OPENUTIL_PROTOS_H TRUE

/*
**    C prototypes for OpenUtil.library, for use with 32 bit integers only.
*/

#ifndef  LIBRARIES_OPENUTIL_H
#include <libraries/OpenUtil.h>
#endif

long    oAddU64 (ULONG SrcHi, ULONG SrcLo, ULONG * DestHi, ULONG * DestLo);
struct  List * oAddExecHeader (void * MemPool, struct Node * FirstNode);
void *  oAllocVecPooled (void * PoolHeader, ULONG MemSize, ...);
void *  oAllocVecPooledA (void * PoolHeader, ULONG MemSize, ULONG * Flags);
STRPTR  oAllTrim (STRPTR String);
long    oAtol (STRPTR String);
struct  oDirInfo * oBuildDirInfo (BPTR DirLock, Tag FirstTag, ...);
struct  oDirInfo * oBuildDirInfoA (BPTR DirLock, struct TagItem * Tags);
ULONG   oCheckSum (ULONG Type, void * Buffer, ULONG Size, ULONG LastCheckSum);
STRPTR  oChrCut (STRPTR String, UBYTE CutChar, ULONG MaxRange);
STRPTR  oChrCutCase (STRPTR String, UBYTE CutChar, ULONG MaxRange);
struct  List * oClearList (struct List * Base);
APTR    oClearMem (APTR Buffer, ULONG Size);
void    oCloseMsgWait (struct oMsgWait * MsgWait);
void *  oCompareMem (void * Source, void * Destination, ULONG Size);
ULONG   oCountList (struct List * Base);
struct  IntuiText * oCreateITextChain (STRPTR Text, struct TextAttr * Font, long Format, ULONG Spacing, ...);
struct  IntuiText * oCreateITextChainA (STRPTR Text, struct TextAttr * Font, long Format, ULONG Spacing, long * Argv);
struct  List * oCreateList (void * MemPool);
BPTR    oCreatePath (STRPTR Name, ULONG Flags);
struct  oRndSeed * oCreateRndSeed (ULONG RenewRate);
struct  oStatusBar * oCreateStatusBar (struct Window * Window, long Left, long Top, long Width, long Height, Tag FirstTag, ...);
struct  oStatusBar * oCreateStatusBarA (struct Window * Window, long Left, long Top, long Width, long Height, struct TagItem * Tags);
long    oCutList (struct List * Base, struct Node * StartRecord, ULONG Flags);
void    oDeleteITextChain (struct IntuiText * ITextChain);
void    oDeleteList (struct List * Base);
void    oDeleteRndSeed (struct oRndSeed * RndSeed);
void    oDeleteStatusBar (struct oStatusBar * StatusBar, long EraseMode);
long    oDirEntryType (STRPTR Name);
long    oDivU64L (ULONG SrcHi, ULONG SrcLo, ULONG * DestHi, ULONG * DestLo);
long    oExists(STRPTR FileName);
long    oFCopyMove (STRPTR Source, STRPTR Destination, APTR Buffer, ULONG BufSize, ULONG Flags);
long    oFHCopy (BPTR Source, BPTR Destination, ULONG Size, APTR Buffer, ULONG BufSize);
long    oFileDirHandle  (STRPTR Source, STRPTR Destination, Tag FirstTag, ...);
long    oFileDirHandleA (STRPTR Source, STRPTR Destination, struct TagItem *Tags );
long    oFileSize (STRPTR Name);
long    oFileToList (BPTR File, struct List * Base, void * MemPool, ULONG WriteOffset, ULONG WriteSize, ULONG StructSize, ULONG TotalSize, Tag FirstTag, ...);
long    oFileToListA (BPTR File, struct List * Base, void * MemPool, ULONG TotalSize, ULONG StructSize, ULONG WriteSize, ULONG WriteOffset, struct TagItem * Tags);
APTR    oFillMem (APTR Buffer, ULONG Value, ULONG Size);
STRPTR  oFormatVarStr  (STRPTR SourceBuffer, STRPTR DestBuffer, Tag FirstTag, ...);
STRPTR  oFormatVarStrA (STRPTR SourceBuffer, STRPTR DestBuffer, struct TagItem * Tags);
STRPTR  oFormatVarStrRDF  (STRPTR SourceBuffer, STRPTR DestBuffer, Tag FirstTag, ...);
STRPTR  oFormatVarStrRDFA (STRPTR SourceBuffer, STRPTR DestBuffer, struct TagItem * Tags);
void    oFreeDirInfo (struct oDirInfo * DirInfo);
void    oFreeVecPooled (void * Memory);
struct  ConUnit * oGetConUnit (BPTR FileHandle);
long    oGetFile  (STRPTR Title, STRPTR DefaultDir, STRPTR DefaultName, STRPTR Buffer, ULONG BufSize, Tag FirstTag, ...);
long    oGetFileA (STRPTR Title, STRPTR DefaultDir, STRPTR DefaultName, STRPTR Buffer, ULONG BufSize, struct TagItem * Tags);
long    oGetFont (STRPTR Title, ULONG FontType, ULONG Flags, struct TextAttr * DestBuf, STRPTR PubScreenName);
STRPTR  oGetFrontPubScrName (STRPTR Buffer, ULONG BufSize);
struct  Node * oGetListBottom (struct List * Base);
struct  Node * oGetListTop (struct List * Base);
STRPTR  oGetModeName (ULONG ModeID, STRPTR Buffer, ULONG BufSize);
void    oGetMouse (Tag FirstTag, ...);
void    oGetMouseA (struct TagItem * Tags);
ULONG   oGetProtection (STRPTR Name);
struct  Node * oGetRecord (struct List * Base, ULONG Number);
long    oGetRecordNumber (struct List * Base, struct Node * Record);
long    oIsDoubleClick (struct Gadget * ActualGadget, ULONG ActualIndex, struct Gadget ** LastGadget, ULONG * LastIndex, ULONG * LastSeconds, ULONG * LastMicros);
long    oIsNumStr (STRPTR String);
ULONG   oITextHeight (struct IntuiText * IText);
ULONG   oITextWidth (struct IntuiText * IText);
long    oListIsEmpty (struct List * Base);
ULONG   oListToFile (struct List * Base, BPTR File, ULONG WriteOffset, ULONG WriteSize, Tag FirstTag, ...);
ULONG   oListToFileA (struct List * Base, BPTR File, ULONG WriteOffset, ULONG WriteSize, struct TagItem * Tags);
struct  oMemFile * oLoadFile (STRPTR FileName, Tag FirstTag, ...);
struct  oMemFile * oLoadFileA (STRPTR FileName, struct TagItem * Tags);
long    oLoadPrefs (STRPTR FileName, ULONG GroupID, ULONG SubID, struct TagItem * DefaultPrefs, STRPTR ObjectName, ULONG * ObjectVerPtr, ULONG * ObjectRevPtr);
struct  oWindowLock * oLockWindow (struct Window * Window);
STRPTR  oLTrim (STRPTR String);
ULONG   oMakePath(STRPTR Path, ULONG Flags);
ULONG   oMatch (APTR Object, ULONG Mode, ULONG Case, APTR With);
long    oMsgConfirm (STRPTR TitleText, STRPTR BodyText, ...);
long    oMsgConfirmA (STRPTR TitleText, STRPTR BodyText, long * Argv);
long    oMsgFault (STRPTR TitleText, STRPTR BodyText, ...);
long    oMsgFaultA (STRPTR TitleText, STRPTR BodyText, long * Argv);
void    oMsgInfo (STRPTR TitleText, STRPTR BodyText, ...);
void    oMsgInfoA (STRPTR TitleText, STRPTR BodyText, long * Argv);
long    oMsgYesNo (STRPTR TitleText, STRPTR BodyText, ...);
long    oMsgYesNoA (STRPTR TitleText, STRPTR BodyText, long * Argv);
long    oMulU64L (ULONG SrcHi, ULONG SrcLo, ULONG * DestHi, ULONG * DestLo);
long    oNum64Comp (ULONG SrcHi, ULONG SrcLo, ULONG DestHi, ULONG DestLo);
long    oNum64ToStr (ULONG ValueHi, ULONG ValueLo, STRPTR Buffer, ULONG BufSize, ULONG Flags);
long    oNumToStr (ULONG Value, STRPTR Buffer, ULONG BufSize, ULONG Flags);
struct  oMsgWait * oOpenMsgWait (STRPTR TitleText, STRPTR BodyText, STRPTR GadgetText, ULONG MaxValue, ...);
struct  oMsgWait * oOpenMsgWaitA (STRPTR TitleText, STRPTR BodyText, STRPTR GadgetText, ULONG MaxValue, long * Argv);
long    oRandom (struct oRndSeed * RndSeed, long MinValue, long MaxValue);
struct  Node * oRemExecHeader (struct List * Base);
long    oRequestLib (long Type, STRPTR Buffer, Tag FirstTag, ...);
long    oRequestLibA (long Type, STRPTR Buffer, struct TagItem * Tags);
STRPTR  oRTrim (STRPTR String);
BPTR    oSaveFile (STRPTR FileName, void * Buffer, ULONG WriteSize, Tag FirstTag, ...);
BPTR    oSaveFileA (STRPTR FileName, void * Buffer, ULONG WriteSize, struct TagItem * Tags);
long    oSavePrefs (STRPTR FileName, ULONG GroupID, ULONG SubID, struct TagItem * PrefsStruct, STRPTR ObjectName, ULONG ObjectVer, ULONG ObjectRev);
struct  Node * oSearchRecord(struct List * Base, long Offset, ULONG Mode, APTR Subject, Tag FirstTag, ...);
struct  Node * oSearchRecordA(struct List * Base, long Offset, ULONG Mode, APTR Subject, struct TagItem * Tags);
long    oSetFileExtension (STRPTR FileName, STRPTR Extension, STRPTR Buffer, long BufSize, ULONG Flags);
ULONG   oSetTagData (ULONG TagValue, ULONG TagData, struct TagItem * Tags);
struct  List * oSortList (struct List * Base, long Offset, long Mode, Tag FirstTag, ...);
struct  List * oSortListA (struct List * Base, long Offset, long Mode, struct TagItem * Tags);
void    oSPrintf  (STRPTR Buffer, STRPTR FormatString, ...);
void    oSPrintfA (STRPTR Buffer, STRPTR FormatString, long * Argv);
void    oStartECTimer (struct timeval * Timer);
void    oStopECTimer (struct timeval * Timer);
STRPTR  oStrBeg (STRPTR Source, STRPTR MatchString);
STRPTR  oStrBegCase (STRPTR Source, STRPTR MatchString);
STRPTR  oStrCat (STRPTR Source, STRPTR Destination);
STRPTR  oStrChr (STRPTR Source, UBYTE MatchChar);
STRPTR  oStrChrCase (STRPTR Source, UBYTE MatchChar);
long    oStrComp (STRPTR Source, STRPTR Destination);
long    oStrCompCase (STRPTR Source, STRPTR Destination);
STRPTR  oStrCopy (STRPTR Source, STRPTR Destination);
STRPTR  oStrCut (STRPTR String, STRPTR MatchString, ULONG MaxRange);
STRPTR  oStrCutCase (STRPTR String, STRPTR MatchString, ULONG MaxRange);
STRPTR  oStrEnd (STRPTR Source, STRPTR MatchString);
STRPTR  oStrEndCase (STRPTR Source, STRPTR MatchString);
STRPTR  oStrLeft (STRPTR Source, STRPTR Destination, ULONG MaxLen);
ULONG   oStrLen (STRPTR String);
STRPTR  oStrMid (STRPTR Source, STRPTR Destination, ULONG StartPos, ULONG MaxChars);
long    oStrNComp (STRPTR Source, STRPTR Destination, ULONG MaxLen);
long    oStrNCompCase (STRPTR Source, STRPTR Destination, ULONG MaxLen);
STRPTR  oStrRight (STRPTR Source, STRPTR Destination, ULONG MaxLen);
STRPTR  oStrStr (STRPTR Source, STRPTR MatchString);
STRPTR  oStrStrCase (STRPTR Source, STRPTR MatchString);
long    oStrTo64 (STRPTR String, ULONG * DestHi, ULONG * DestLo);
STRPTR  oStrToLower (STRPTR String, ULONG MaxLen);
STRPTR  oStrToUpper (STRPTR String, ULONG MaxLen);
long    oSubU64 (ULONG SrcHi, ULONG SrcLo, ULONG * DestHi, ULONG * DestLo);
void    oSuggestWindowPos (struct Screen * Screen, ULONG * WindowLeft, ULONG * WindowTop, ULONG Width, ULONG Height, Tag FirstTag, ...);
void    oSuggestWindowPosA (struct Screen * Screen, ULONG * WindowLeft, ULONG * WindowTop, ULONG Width, ULONG Height, struct TagItem * Tags);
ULONG   oSwap16 (ULONG Value);
ULONG   oTextHeight (STRPTR String);
ULONG   oTextWidth (STRPTR String);
void    oUnlockWindow (struct oWindowLock * WindowLock);
long    oUpdateMsgWait (struct oMsgWait * MsgWait, ULONG Value);
void    oUpdateStatusBar (struct oStatusBar * StatusBar, ULONG Value);

#endif /* CLIB_OPENUTIL_PROTOS_H */
