/*
**      $VER: akccplus.h 37.1 (6.9.96)
**
**      main include for akccplus.library
**
**      (C) Copyright 1989-96 Andreas R. Kleinert
**      All Rights Reserved.
*/

#ifndef AKCCPLUS_AKCCPLUS_H
#define AKCCPLUS_AKCCPLUS_H

#ifndef N
#define N NULL	 /* useful */
#endif /* N */


/* MACROs for BPTR-Handling */

#define TOBPTR(x) ( ((ULONG) x) >> 2)
#define TOAPTR(x) ( ((ULONG) x) << 2)


/* MACRO for Library Version-Test */

#define LibVer(x) ( ((struct Library *) x)->lib_Version )


/* Codes returned by TestEntry() */

#define AKCC_TESTED_FILE      (1005L)
#define AKCC_TESTED_DIR       (1006L)
#define AKCC_TESTED_NOT_EXIST (AKCC_FALSE)


/* AKCC-Errorcodes */

#define AKCC_FALSE (N)
#define AKCC_TRUE  (TRUE)


/* Remarks :
 *									     *
 * 1200 chars are the maximum length for a text to be produced by	     *
 * AKCC_FPrintf().                                                           *
 *									     *
 * (Subject to change ...)                                                   */

/* Test-Strings for "AKCC_WildCmp(orig, wild)" :                             *
 *									     *
 * ABCDD     |	   *D	  -> TRUE					     *
 * ABCDD     |	  *DD	  -> TRUE					     *
 * ABCD      |	  *DD	  -> FALSE (!!!)                                     *
 * ABCDD     |	A*C*D	  -> TRUE					     *
 * ABCDD     | A*C*D*	  -> TRUE  (!!!)                                     *
 * ABCDD     |	 *CDD	  -> TRUE					     *
 * ABCDD     |	?BCDD	  -> TRUE					     *
 * ABCDD     |	 ?CDD	  -> FALSE (!!!)                                     *
 *									     *
 * Equivalents :							     *
 *									     *
 *  1. A? and AB? are both "equal" to AB (result : TRUE)                     *
 *  2. A* and AB* are both "equal" to AB (result : TRUE)                     *
 *									     *
 *  So "?" stands for "ONE or NO" chars                                      *
 *  and "*" stands "UNLIMITED or NO" chars !!!                               *
 *									     *
 * (Subject to more improvements ...)                                        */

struct DateStruct /* returned by "AKCC_GetDate(dos_rawdate)" */
{
 long ads_sec;
 long ads_min;
 long ads_hour;
 long ads_day;
 long ads_month;
 long ads_year;
};

struct PathList   /* This one is perhaps missing in the Dos-Includes */
{
 BPTR pl_Next; /* Next entry, if not zero. */
 BPTR pl_Lock; /* The Lock itself.	   */
};

 /* Note : The PathList structure is allocated via AllocMem() under
	   OS V33-V35, but under OS V37+ AllocVec() is used for this.
	   Delocation has to be done via FreeVec() under V37+.
	   The behaviour of the Beta-OS V36 is supposed to be the same
	   as V33-V35. This is a possible bug-source !!!
 */


/* 'Parsing'-Codes for "AKCC_ParseText(orig, new)" :                         *
 *									     *
 * Textstyles and their Codes : 					     *
 *				\N	: Normal			     *
 *				\B	: Bold				     *
 *				\I	: Italics			     *
 *				\U	: Underlined			     *
 *				\R	: Reverse			     *
 * Colors		      : 					     *
 *				\C=<FG>,<BG>				     *
 * Characters		      : 					     *
 *				\\					     *
 *				\42	: "                                  *
 * 'Formatters' and their Codes :                                            *
 *				\n	: linefeed			     *
 *				\b	: backspace			     *
 *				\f	: clrscr			     *
 *				\t	: TAB				     *
 *				\r	: carriage return		     */

#endif /* AKCCPLUS_AKCCPLUS_H */
