#!/bin/csh -f

if ($#argv < 1) then
	echo Usage: makeNode className \[parentClass\]
	exit
endif

if ($#argv < 2) then
	set parent = xpNode
else
	set parent = $2
endif


sed s/MYPARENT/$parent/g << ENDCODE | sed s/MYNODE/$1/g > $1.cxx
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <malloc.h>
#include "MYNODE.h"



MYNODE::MYNODE(void)
{
 setClassObject(xpClassObject_);
}


void MYNODE::parseOption(char *tag,char *val)
{
 if (STR_EQUAL(tag,"mytag"))
	{
	/* sscanf(val,"%f",&myval_); */
	}
 else
	MYPARENT::parseOption(tag,val);
}


void MYNODE::postInit(void)
{
/* do something */
 MYPARENT::postInit();
}


void MYNODE::message(char *msgstring)
{
 if (STR_EQUAL(msgstring,"mymessage"))
	/* do something */ ;
 else
	MYPARENT::message(msgstring);
}


void MYNODE::app(void)
{
/* if (testForMyEvent())		*/
/*	eventOccurred("myevent");	*/
 MYPARENT::app();
}


void MYNODE::switchOff(void)
{
 MYPARENT::switchOff();
}


void MYNODE::reset(void)
{
 MYPARENT::reset();
}




/*--------------------------  MYNODEClass ----------------------------*/

xpClass * MYNODE::xpClassObject_ = NULL; 

void MYNODE::init(void)
{
 if (xpClassObject_ == NULL)
	{
	MYPARENT::init();
        xpClassObject_ = new MYNODEClass;
	}
}


MYNODEClass::MYNODEClass(void)
{
 setType("MYNODE");
/*
 addEvent("myevent");
*/
}


xpNode * MYNODEClass::construct(void)
{
 return new MYNODE;
}


void MYNODEClass::parseClassOption(char *tag,char *val)
{
 if (STR_EQUAL(tag,"mytag"))
	{
	/* sscanf(val,"%f",&mydefault_); */
	}
 else
	MYPARENTClass::parseClassOption(tag,val);
}
ENDCODE


sed s/MYPARENT/$parent/g << ENDCODE | sed s/MYNODE/$1/g > $1.h
#ifndef _MYNODE_h_
#define _MYNODE_h_

#include "MYPARENT.h"

class MYNODE : public MYPARENT
	{
	public:
	 MYNODE(void);
	 virtual void parseOption(char *tag,char *val);
	 virtual void postInit(void);
	 virtual void message(char *msgstring);
	 virtual void app(void);
	 virtual void switchOff(void);
	 virtual void reset(void);
	 static void init(void);
	 static inline xpClass * xpClassObject(void) { return xpClassObject_; };
	private:
	 static xpClass * xpClassObject_;
	};


class MYNODEClass : public MYPARENTClass
	{
	public:
	 MYNODEClass(void);
	 virtual xpNode * construct(void);
	 virtual void parseClassOption(char *tag,char *val);
	};

#endif
ENDCODE
