/******************************************************************************
 JUNIXEnvironmentEntry.h

	Interface for the JUNIXEnvironmentEntry class

	Copyright © 1997 by Glenn Bach. 

 ******************************************************************************/

#ifndef _H_JUNIXEnvironmentEntry
#define _H_JUNIXEnvironmentEntry

#include <jTypes.h>
#include <JOrderedSet.h>
#include <JString.h>

class JUNIXEnvironmentEntry
{
public:

	friend ostream& operator<<(ostream&, const JUNIXEnvironmentEntry&);

public:

	JUNIXEnvironmentEntry(const JCharacter* variable, const JCharacter* value);
	virtual ~JUNIXEnvironmentEntry();
	
	const JString& 	GetVariable() const;
	JSize		 	GetVariableWidth() const;
	void			SetVariable(const JCharacter* variable);
	void			SetVariableWidth(const JSize width);
	
	const JString& 	GetValue() const;
	JSize		 	GetValueWidth() const;
	void			SetValue(const JCharacter* value);
	void			SetValueWidth(const JSize width);
	
	static JOrderedSetT::CompareResult
		CompareVariables(JUNIXEnvironmentEntry* const & n1, JUNIXEnvironmentEntry* const & n2);

private:

	JString		itsVariable;
	JSize		itsVariableWidth;
	JString		itsValue;
	JSize		itsValueWidth;
	
	// not allowed

	JUNIXEnvironmentEntry(const JUNIXEnvironmentEntry& source);
	const JUNIXEnvironmentEntry& operator=(const JUNIXEnvironmentEntry& source);
};

/******************************************************************************
 GetVariable

 ******************************************************************************/

inline const JString&
JUNIXEnvironmentEntry::GetVariable()
	const
{
	return itsVariable;
}

/******************************************************************************
 GetVariableWidth

 ******************************************************************************/

inline JSize
JUNIXEnvironmentEntry::GetVariableWidth()
	const
{
	return itsVariableWidth;
}

/******************************************************************************
 SetVariable

 ******************************************************************************/

inline void
JUNIXEnvironmentEntry::SetVariable
	(
	const JCharacter* variable
	)
{
	itsVariable = variable;
}

/******************************************************************************
 SetVariableWidth

 ******************************************************************************/

inline void
JUNIXEnvironmentEntry::SetVariableWidth
	(
	const JSize width
	)
{
	itsVariableWidth = width;
}

/******************************************************************************
 GetValue

 ******************************************************************************/

inline const JString&
JUNIXEnvironmentEntry::GetValue()
	const
{
	return itsValue;
}

/******************************************************************************
 GetValueWidth

 ******************************************************************************/

inline JSize
JUNIXEnvironmentEntry::GetValueWidth()
	const
{
	return itsValueWidth;
}


/******************************************************************************
 SetValue

 ******************************************************************************/

inline void
JUNIXEnvironmentEntry::SetValue
	(
	const JCharacter* value
	)
{
	itsValue = value;
}

/******************************************************************************
 SetValueWidth

 ******************************************************************************/

inline void
JUNIXEnvironmentEntry::SetValueWidth
	(
	const JSize width
	)
{
	itsValueWidth = width;
}

#endif