 IFND TAGLIST_I
TAGLIST_I SET 1

;*
;*	$Filename: taglist.i $
;*	$Release: 1.1 $
;*	$Revision: 1.3 $
;*	$Date: 1993/11/03 18:26:19 $
;*
;*  May be copied UNMODIFIED without royalties
;*
;*	(C) Copyright 1993 Zeal-Computer
;*	All Rights Reserved
;*
;*	Log:
;*

 IFND EXEC_TYPES_I
	INCLUDE "exec/types.i"
 ENDC

 IFND UTILITY_TAGITEM_I
UTILITY_TAGITEM_I SET	1

 STRUCTURE	TagItem,0
	ULONG	ti_Tag
	ULONG	ti_Data
	LABEL	ti_SIZEOF

TAG_DONE	EQU	0
TAG_END		EQU	0
TAG_IGNORE	EQU	1
TAG_MORE	EQU	2
TAG_SKIP	EQU	3
TAG_USER	EQU	$80000000
 ENDC

;*
;* TagListLibrary version
;*
TAGLIST_VERSION EQU 2

;*
;* TagMapItem
;*
 STRUCTURE TagMapItem,0
	ULONG	tmi_ID
	WORD	tmi_Offset
	UBYTE	tmi_Miss
	UBYTE	tmi_Type
	LABEL	tmi_Bits
	ULONG	tmi_Default
	LABEL	tmi_SizeOf

;*
;* TagMapItem types
;*
TMI_BYTE		EQU 0
TMI_WORD		EQU 4
TMI_LONG		EQU 8
TMI_INT			EQU 0
TMI_BOOL		EQU 12
TMI_bool		EQU 24
TMI_NODEFAULT	EQU 0
TMI_DEFAULT		EQU 36
TMI_default		EQU 60

;*
;* TagMap commands
;*
TAG_INIT		EQU 1

;*
;* TagMap macros
;*
TAGMAP MACRO ;ID,OFFSET,MISSBITS,BYTE|WORD|LONG,REAL|BOOL|bool,NODEFAULT|DEFAULT|default
	DC.L \1
	DC.W \2
	DC.B (\3)&$FF
	DC.B ((\3)/2)&$FF+TMI_\4+TMI_\5+TMI_\6
	DC.L \7
	ENDM

TAGMAPINIT MACRO ;OFFSET,BYTE|WORD|LONG,INT|BOOL|bool,VALUE
	DC.L 1
	DC.W \1
	DC.B 0
	IFNC '\3','bool'
	DC.B TMI_\2+TMI_\3+TMI_DEFAULT
	ELSE
	DC.B TMI_\2+TMI_\3+TMI_default
	ENDC
	DC.L \4
	ENDM

TAGBUILD MACRO ; ID,OFFSET,BYTE|WORD|LONG,INT|BOOL|bool
	DC.L \1
	DC.W \2
	DC.B 0
	DC.B (TMI_\1)|(TMI_\2)
	DC.L 0
	ENDM

TAGBUILDINIT MACRO ; ID,VALUE
	DC.L 1
	DC.L \1
	DC.L \2
	ENDM

;*
;* Example  where TAGMAP and TAGMAPINIT macros are used. To understand what
;* is  going  on I recommend that you look at this C include file equvalent
;* to this file.
;*
;*	mytagmaplist:
;*		TAGMAPINIT win_Flags,LONG,INT,0
;*		TAGMAP WA_Left,win_LeftEdge,1,INT,WORD,DEFAULT,0
;*		TAGMAP WA_TopEdge,win_TopEdge,2,INT,WORD,DEFAULT,0
;*		TAGMAP WA_Width,win_TopEdge,4,INT,WORD,DEFAULT,640
;*		TAGMAP WA_Height,win_TopEdge,8,INT,WORD,DEFAULT,200
;*		TAGMAP WA_Activate,win_Flags,0,BOOL,LONG,DEFAULT,WFLG_ACTIVATE
;*		TAGMAP WA_NoActivate,win_Flags,0,bool,LONG,NODEFAULT,WFLG_ACTIVATE
;*		DC.L TAG_DONE
;*
;* Example  where  TAGBUILD and TAGBUILDINIT macros are used. To understand
;* what  is  going  on  I  recommend  that  you look at this C include file
;* equvalent to this file.
;*
;*	mytagbuildlist:
;*		TAGBUILDINIT WA_Workbench,1
;*		TAGBUILD WA_LeftEdge,win_LeftEdge,INT,WORD,0
;*		TAGBUILD WA_TopEdge,win_TopEdge,INT,WORD,0
;*		TAGBUILD WA_Width,win_Width,INT,WORD,0
;*		TAGBUILD WA_Height,win_Height,INT,WORD,0
;*		TAGBUILD WA_Activate,win_Flags,BOOL,LONG,WFLG_ACTIVATE
;*		DC.L TAG_DONE
;*

 ENDC ;* TAGLIST_I *
