/*
 * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Yokogawa Electric Corporation,
 * YDC Corporation, IPA (Information-technology Promotion Agency, Japan).
 * All rights reserved.
 * 
 * Redistribution and use of this software in source and binary forms, with 
 * or without modification, are permitted provided that the following 
 * conditions and disclaimer are agreed and accepted by the user:
 * 
 * 1. Redistributions of source code must retain the above copyright 
 * notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright 
 * notice, this list of conditions and the following disclaimer in the 
 * documentation and/or other materials provided with the distribution.
 * 
 * 3. Neither the names of the copyrighters, the name of the project which 
 * is related to this software (hereinafter referred to as "project") nor 
 * the names of the contributors may be used to endorse or promote products 
 * derived from this software without specific prior written permission.
 * 
 * 4. No merchantable use may be permitted without prior written 
 * notification to the copyrighters. However, using this software for the 
 * purpose of testing or evaluating any products including merchantable 
 * products may be permitted without any notification to the copyrighters.
 * 
 * 
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHTERS, THE PROJECT AND 
 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING 
 * BUT NOT LIMITED THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
 * FOR A PARTICULAR PURPOSE, ARE DISCLAIMED.  IN NO EVENT SHALL THE 
 * COPYRIGHTERS, THE PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 * CONTRACT,STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 
 * THE POSSIBILITY OF SUCH DAMAGE.
 *
 * $TAHI: v6eval/lib/Pz/PvAutoItem.cc,v 1.7 2001/10/12 04:56:17 tanaka Exp $
 */
#include "PvAutoItem.h"
#include "MmObject.h"
#include "PvOctets.h"
#include "PControl.h"
#include "WObject.h"
#include <stdio.h>

//////////////////////////////////////////////////////////////////////////////
PvHCgene::PvHCgene(McObject* meta,HCgenefunc func):PvObject(),
	meta_(meta),HCgenefunc_(func){}
PvHCgene::PvHCgene(const PvHCgene& x):PvObject(x),
	meta_(x.meta_),HCgenefunc_(x.HCgenefunc_){}
PvHCgene::~PvHCgene(){}
PvObject* PvHCgene::shallowCopy() const{return new PvHCgene(*this);}

bool PvHCgene::generate(WControl& cntr,WObject* wmem,OCTBUF& buf)const{
	return (meta_->*HCgenefunc_)(cntr,wmem,buf);}	//call hardcoding

PvObject* PvHCgene::generateValue(WObject*)const{
	return 0;}

PvObject* PvHCgene::evaluateValue(WObject*)const{
	printf("evaluate on PvHCgene!!\n");
	return 0;}

void PvHCgene::print() const{printf("HCgene");}

//////////////////////////////////////////////////////////////////////////////
PvHCeval::PvHCeval(McObject* meta,HCevalfunc func):PvObject(),
	meta_(meta),HCevalfunc_(func){}
PvHCeval::PvHCeval(const PvHCeval& x):PvObject(x),
	meta_(x.meta_),HCevalfunc_(x.HCevalfunc_){}
PvHCeval::~PvHCeval(){}
PvObject* PvHCeval::shallowCopy() const{return new PvHCeval(*this);}

bool PvHCeval::generate(WControl& cntr,WObject*,OCTBUF&)const{
	printf("generate on PvHCeval!!\n");
	abort();
	return cntr;}

PvObject* PvHCeval::evaluateValue(WObject* wmem)const{
	return (meta_->*HCevalfunc_)(wmem);}		//call hardcoding

void PvHCeval::print() const{printf("HCeval");}

//////////////////////////////////////////////////////////////////////////////
PvMUSTDEF::PvMUSTDEF():PvObject(){}
PvMUSTDEF::PvMUSTDEF(const PvMUSTDEF& x):PvObject(x){}
PvMUSTDEF::~PvMUSTDEF(){}
PvObject* PvMUSTDEF::shallowCopy() const{return new PvMUSTDEF(*this);}

bool PvMUSTDEF::generate(WControl&,WObject* w,OCTBUF&) const {
	return w->mustDefine(this);}

PvObject* PvMUSTDEF::generateValue(WObject* w)const{
	w->mustDefine(this);
	return 0;}
PvObject* PvMUSTDEF::evaluateValue(WObject* w) const {
	w->mustDefine(this);
	return 0;}

void PvMUSTDEF::print() const{ printf("MUSTDEF");}

const PvMUSTDEF* PvMUSTDEF::must() {return &must_;}
PvMUSTDEF PvMUSTDEF::must_;



syntax highlighted by Code2HTML, v. 0.9.1