////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////// Triton's public functions //
////////////////////////////////////////////////////////////////////////////

// Main system

extern struct TR_Project * __saveds __asm  TR_OpenProject(register __a1 struct TR_App *app, register __a0 struct TagItem *);
extern VOID                __saveds __asm  TR_CloseProject(register __a0 struct TR_Project *);

extern LONG                __saveds __asm  TR_FirstOccurance(register __d0 UBYTE ch, register __a0 STRPTR str);
extern LONG                __saveds __asm  TR_NumOccurances(register __d0 UBYTE ch, register __a0 STRPTR str);
extern STRPTR              __saveds __asm  TR_GetErrorString(register __d0 UWORD num);
extern VOID                __saveds __asm  TR_CloseWindowSafely(register __a0 struct Window *win);

extern struct TR_Message * __saveds __asm  TR_GetMsg(register __a1 struct TR_App *app);
extern VOID                __saveds __asm  TR_ReplyMsg(register __a1 struct TR_Message *message);
extern ULONG               __saveds __asm  TR_Wait(register __a1 struct TR_App *app, register __d0 ULONG otherbits);

extern BOOL                __saveds __asm  TR_AddClass(register __d0 ULONG tag, register __a0 ULONG (*dispatcher)());

extern VOID                __saveds __asm  TR_SetAttribute(register __a0 struct TR_Project *, register __d0 ULONG, register __d1 ULONG, register __d2 ULONG);
extern ULONG               __saveds __asm  TR_GetAttribute(register __a0 struct TR_Project *, register __d0 ULONG, register __d1 ULONG);

extern VOID                __saveds __asm  TR_LockProject(register __a0 struct TR_Project *project);
extern VOID                __saveds __asm  TR_UnlockProject(register __a0 struct TR_Project *project);

extern ULONG               __saveds __asm  TR_AutoRequest(register __a1 struct TR_App *app, register __a0 struct TR_Project *lockproject, register __a2 struct TagItem *request_trwintags);
extern ULONG               __saveds __asm  TR_EasyRequest(register __a1 struct TR_App *app, register __a2 STRPTR bodymft, register __a3 STRPTR gadfmt, register __a0 struct TagItem *taglist);

extern struct TR_App *     __saveds __asm  TR_CreateApp(register __a1 struct TagItem *apptags);
extern VOID                __saveds __asm  TR_DeleteApp(register __a1 struct TR_App *app);

// Support library

#ifndef TR_NOSUPPORT
extern BOOL                __stdargs       TR_OpenTriton(ULONG version, ULONG taglist,...);
extern VOID                __regargs       TR_CloseTriton(VOID);
extern struct TR_Project * __stdargs       TR_OpenProjectTags(struct TR_App *app, ULONG taglist,...);
extern ULONG               __stdargs       TR_EasyRequestTags(struct TR_App *app, STRPTR bodymft, STRPTR gadfmt, ULONG taglist,...);
extern ULONG               __stdargs       TR_AutoRequestTags(struct TR_App *app, struct TR_Project *lockproject, ULONG taglist,...);
#endif
