// file: $isip/class/mmedia/XMLParser/xp_01.cc
// version: $Id: xp_01.cc 10284 2005-10-27 20:52:14Z wholland $

#if defined(HAVE_EXPAT)

// isip include files
//
#include "XMLParser.h"

// method: debug
// 
// arguments:
//   unichar* msg_a: (input) a message to be displayed along with
//     information from the object's member data
//
// return: a boolean indicating status
//
boolean XMLParser::debug(const unichar* msg_a) const {
  
  // create a string to output numeric values
  //
  SysString value;
  
  // create a string to use as a debug string
  //
  SysString output;
  
  // output the debug level
  //
  value.assign(debug_level_d);
  output.debugStr(name(), msg_a, L"debug_level_d", value);
  Console::put(output);

  token_vector_d.debug(L"token_vector_d");

  valid_values_d.debug(L"valid_values_d");
  
  // exit gracefully
  //
  return true;
}

// method: assign
//
// arguments:
//  const XMLParser& arg: (input) object to copy
//
// return: a boolean value indicating status
//
// this method assigns the input object to current object
//
boolean XMLParser::assign(const XMLParser& xp_a) {

  // assign the member data
  //
  debug_level_d = xp_a.debug_level_d;
  return ( token_vector_d.assign(xp_a.token_vector_d) &&
	   valid_values_d.assign(xp_a.valid_values_d)
	   );  
}
  
// method: eq
//
// arguments:
//  const XMLParser& arg: (input) input object to compare
//
// return: a boolean value indicating status
//
// this method checks whether the current object is identical to the
// input object
//
boolean XMLParser::eq(const XMLParser& xp_a) const {
  
  // compare all member data
  //
  return (token_vector_d.eq(xp_a.token_vector_d) &&
	  (debug_level_d == xp_a.debug_level_d) &&
	  valid_values_d.eq(xp_a.valid_values_d)
	  );
}

// method: operator==
//
// arguments:
//  const XMLParser& arg: (input) input object to compare
//
// return: a boolean value indicating status
//
// this method checks whether the current object is identical to the
// input object
//
boolean XMLParser::operator==(const XMLParser& xp_a) const {
  return eq(xp_a);
}
 
// method: operator=
//
// arguments:
//  const XMLParser& arg: (input) input object to copy
//
// return: a boolean value indicating status
//
// this method copies the argument over this object
//
boolean XMLParser::operator=(const XMLParser& xp_a) {
  return assign(xp_a);
}
   
// method: clear
//
// arguments:
//  Integral::CMODE ctype: (input) clear mode
//
// return: a boolean value indicating status
//
// this method resets the data members to the default values
//
boolean XMLParser::clear(Integral::CMODE ctype_a) {
  
  if(ctype_a != Integral::RETAIN) {
    
    token_vector_d.clear(ctype_a);
    valid_values_d.clear(ctype_a);
    debug_level_d = Integral::NONE;
  }

  // indicate success
  //
  return true;
}

#endif
