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
00035 #include "pathsteptagexpression.h"
00036
00037 PathStepTagExpression::PathStepTagExpression(AXIS_TYPE _axis, const char
00038 *_tag):PathStepExpression
00039 (et_pathsteptag, _axis, NULL),
00040 nt(tagmap->insertTag(_tag)) {
00041 }
00042
00043 PathStepTagExpression::
00044 PathStepTagExpression(const char *_tag):PathStepExpression(et_pathsteptag,
00045 at_child, NULL),
00046 nt(tagmap->insertTag(_tag)) {
00047 }
00048
00049 PathStepTagExpression::PathStepTagExpression(AXIS_TYPE _axis, TAG _tag,
00050 PathStepAttribute *
00051 _attribute):PathStepExpression
00052 (et_pathsteptag, _axis, _attribute),
00053 nt(_tag) {
00054 }
00055
00056 PathStepTagExpression::~PathStepTagExpression() {
00057 }
00058
00059 void PathStepTagExpression::print(OutputStream & dos) const {
00060 switch (axis) {
00061 case at_child:
00062 dos << "/";
00063 break;
00064 case at_descendant:
00065 dos << "//";
00066 break;
00067 case at_dos:
00068 dos << "/dos::";
00069 break;
00070 }
00071 dos << tagmap->getTag(nt);
00072 if (attribute) {
00073 dos << (*attribute);
00074 }
00075 }
00076
00077 PathStepTagExpression *PathStepTagExpression::clone() {
00078 if (attribute) {
00079 return new PathStepTagExpression(axis, nt, attribute->clone());
00080 } else {
00081 return new PathStepTagExpression(axis, nt, NULL);
00082 }
00083 }
00084
00085 PathStepTagExpression *PathStepTagExpression::cloneWithoutAttributes() {
00086 return new PathStepTagExpression(axis, nt, NULL);
00087 }