/*
    This file is part of SUPPL - the supplemental library for DOS
    Copyright (C) 1996-2000 Steffen Kaiser

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public
    License along with this library; if not, write to the Free
    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Id$
   $Locker$	$Name$	$State$

	Environment functions.
	Internal header file.

*/

#ifndef __ENVIRON_LOC
#define __ENVIRON_LOC

#include <assert.h>
#include "environ.h"

/* env_segm(segm) <->
		segm := segm || env_dfltSeg || env_glbSeg

 	Assigns & returns the target environment segment of variable segm
 */
#define env_segment(segm)	((segm)? (segm)							\
									: env_dfltSeg? env_dfltSeg		\
									: env_glbSeg)
#define env_segm(segm)	((segm) = env_segment((segm)))

/* if-no-environment-segment macro */
#define unless_segm(segm)	if(!(segm)								\
									&& ((segm) = env_dfltSeg) == 0	\
									&& ((segm) = env_glbSeg) == 0)

/* The Xsegm variants take the initial value of segm as a second parameter */
#define env_Xsegm(segm,orgSeg)	((segm) = env_segment(orgSeg))

/* if-no-environment-segment macro */
#define unless_Xsegm(segm,orgSeg)	if(((segm) = (orgSeg)) == 0			\
									&& ((segm) = env_dfltSeg) == 0		\
									&& ((segm) = env_glbSeg) == 0)


#define ENV_CLEAR_SEGM(segm)	poked((segm), 0, 0)

#endif
