00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
#include "UnaryVariable.h"
00044
00045
namespace PLearn {
00046
using namespace std;
00047
00048
00051 UnaryVariable::UnaryVariable(
Variable* v,
int thelength,
int thewidth)
00052 :
Variable(thelength,thewidth), input(v)
00053 {}
00054
00055
00056
PLEARN_IMPLEMENT_ABSTRACT_OBJECT(
UnaryVariable,
"ONE LINE DESCR",
"NO HELP");
00057
00058 void UnaryVariable::declareOptions(
OptionList& ol)
00059 {
00060
declareOption(ol,
"input", &UnaryVariable::input, OptionBase::buildoption,
00061
"The parent variable that this one depends on\n");
00062
00063 inherited::declareOptions(ol);
00064 }
00065
00066
00067
00068
00069
00070
extern void varDeepCopyField(
Var& field, CopiesMap& copies);
00071
00072 void UnaryVariable::makeDeepCopyFromShallowCopy(map<const void*, void*>& copies)
00073 {
00074 Variable::makeDeepCopyFromShallowCopy(copies);
00075
00076
varDeepCopyField(
input, copies);
00077 }
00078
00079
00080 bool UnaryVariable::markPath()
00081 {
00082
if(!marked)
00083 marked =
input->markPath();
00084
return marked;
00085 }
00086
00087
00088 void UnaryVariable::buildPath(
VarArray& proppath)
00089 {
00090
if(marked)
00091 {
00092
input->buildPath(proppath);
00093
00094 proppath.
append(
Var(
this));
00095
clearMark();
00096 }
00097 }
00098
00099
00100 VarArray UnaryVariable::sources()
00101 {
00102
if (marked)
00103
return VarArray(0,0);
00104 marked =
true;
00105
return input->sources();
00106 }
00107
00108
00109 VarArray UnaryVariable::random_sources()
00110 {
00111
if (marked)
00112
return VarArray(0,0);
00113 marked =
true;
00114
return input->random_sources();
00115 }
00116
00117
00118 VarArray UnaryVariable::ancestors()
00119 {
00120
if (marked)
00121
return VarArray(0,0);
00122 marked =
true;
00123
return input->ancestors() & (
VarArray)
Var(
this);
00124 }
00125
00126
00127 void UnaryVariable::unmarkAncestors()
00128 {
00129
if (marked)
00130 {
00131 marked =
false;
00132
input->unmarkAncestors();
00133 }
00134 }
00135
00136
00137 VarArray UnaryVariable::parents()
00138 {
00139
if (
input->marked)
00140
return VarArray(0,0);
00141
else
00142
return input;
00143 }
00144
00145
00146 void UnaryVariable::resizeRValue()
00147 {
00148 inherited::resizeRValue();
00149
if (!
input->rvaluedata)
input->resizeRValue();
00150 }
00151
00152
00153
00154 }
00155
00156