00001
00002
00003
00004 #ifndef ASTREVERSEPROCESSING_H
00005 #define ASTREVERSEPROCESSING_H
00006
00007
00008
00009
00010
00011 #include "AstProcessing.h"
00012
00014
00016
00017 template<typename InheritedAttributeType>
00018 class AstReversePrefixInhProcessing : public AstTopDownProcessing<InheritedAttributeType> {
00019 public:
00020 AstReversePrefixInhProcessing();
00021 protected:
00022 virtual void setNodeSuccessors(SgNode* node, typename AstReversePrefixInhProcessing<InheritedAttributeType>::SuccessorsContainer& succContainer);
00023 };
00024
00025 template<class SynthesizedAttributeType>
00026 class AstReversePrefixSynProcessing : public AstBottomUpProcessing<SynthesizedAttributeType> {
00027 public:
00028 AstReversePrefixSynProcessing();
00029 protected:
00030 virtual void setNodeSuccessors(SgNode* node, typename AstReversePrefixSynProcessing<SynthesizedAttributeType>::SuccessorsContainer & succContainer);
00031 };
00032
00033 template<class InheritedAttributeType, class SynthesizedAttributeType>
00034 class AstReversePrefixInhSynProcessing : public AstTopDownBottomUpProcessing<InheritedAttributeType, SynthesizedAttributeType> {
00035 public:
00036 AstReversePrefixInhSynProcessing();
00037 protected:
00038 virtual void setNodeSuccessors(SgNode* node, typename AstReversePrefixInhSynProcessing<InheritedAttributeType,SynthesizedAttributeType>::SuccessorsContainer & succContainer);
00039 };
00040
00042
00044
00045 template<class InheritedAttributeType, class SynthesizedAttributeType>
00046 class AstReverseBranchInhSynProcessing : public AstTopDownBottomUpProcessing<InheritedAttributeType, SynthesizedAttributeType> {
00047 public:
00048 AstReverseBranchInhSynProcessing();
00049 protected:
00050 virtual void setNodeSuccessors(SgNode* node, typename AstReverseBranchInhSynProcessing<InheritedAttributeType,SynthesizedAttributeType>::SuccessorsContainer & succContainer);
00051 };
00052
00053 template<class InheritedAttributeType>
00054 class AstReverseBranchInhProcessing : public AstTopDownProcessing<InheritedAttributeType> {
00055 public:
00056 AstReverseBranchInhProcessing();
00057 protected:
00058 virtual void setNodeSuccessors(SgNode* node, typename AstReverseBranchInhProcessing<InheritedAttributeType>::SuccessorsContainer & succContainer);
00059 };
00060
00061 template<class SynthesizedAttributeType>
00062 class AstReverseBranchSynProcessing : public AstBottomUpProcessing<SynthesizedAttributeType> {
00063 public:
00064 AstReverseBranchSynProcessing();
00065 protected:
00066 virtual void setNodeSuccessors(SgNode* node, typename AstReverseBranchSynProcessing<SynthesizedAttributeType>::SuccessorsContainer & succContainer);
00067 };
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00079
00081
00082
00083 template<class InheritedAttributeType>
00084 AstReversePrefixInhProcessing<InheritedAttributeType>::AstReversePrefixInhProcessing()
00085 {
00086 AstTopDownProcessing<InheritedAttributeType>::set_useDefaultIndexBasedTraversal(false);
00087 }
00088
00089 template<class InheritedAttributeType>
00090 void
00091 AstReversePrefixInhProcessing<InheritedAttributeType>
00092 ::setNodeSuccessors(SgNode* node, typename AstReversePrefixInhProcessing<InheritedAttributeType>::SuccessorsContainer& succContainer) {
00093 AstSuccessorsSelectors::selectReversePrefixSuccessors(node,succContainer);
00094 }
00095
00096
00097 template<class SynthesizedAttributeType>
00098 AstReversePrefixSynProcessing<SynthesizedAttributeType>::AstReversePrefixSynProcessing()
00099 {
00100 AstBottomUpProcessing<SynthesizedAttributeType>::set_useDefaultIndexBasedTraversal(false);
00101 }
00102
00103 template<class SynthesizedAttributeType>
00104 void
00105 AstReversePrefixSynProcessing<SynthesizedAttributeType>
00106 ::setNodeSuccessors(SgNode* node, typename AstReversePrefixSynProcessing<SynthesizedAttributeType>::SuccessorsContainer& succContainer) {
00107 AstSuccessorsSelectors::selectReversePrefixSuccessors(node,succContainer);
00108 }
00109
00110
00111 template<class InheritedAttributeType, class SynthesizedAttributeType>
00112 AstReversePrefixInhSynProcessing<InheritedAttributeType, SynthesizedAttributeType>::AstReversePrefixInhSynProcessing()
00113 {
00114 AstTopDownBottomUpProcessing<InheritedAttributeType, SynthesizedAttributeType>::set_useDefaultIndexBasedTraversal(false);
00115 }
00116
00117 template<class InheritedAttributeType, class SynthesizedAttributeType>
00118 void
00119 AstReversePrefixInhSynProcessing<InheritedAttributeType, SynthesizedAttributeType>
00120 ::setNodeSuccessors(SgNode* node, typename AstReversePrefixInhSynProcessing<InheritedAttributeType, SynthesizedAttributeType>::SuccessorsContainer& succContainer) {
00121 AstSuccessorsSelectors::selectReversePrefixSuccessors(node,succContainer);
00122 }
00123
00125
00127
00128
00129 template<class InheritedAttributeType, class SynthesizedAttributeType>
00130 AstReverseBranchInhSynProcessing<InheritedAttributeType, SynthesizedAttributeType>::AstReverseBranchInhSynProcessing()
00131 {
00132 AstTopDownBottomUpProcessing<InheritedAttributeType, SynthesizedAttributeType>::set_useDefaultIndexBasedTraversal(false);
00133 }
00134
00135 template<class InheritedAttributeType, class SynthesizedAttributeType>
00136 void
00137 AstReverseBranchInhSynProcessing<InheritedAttributeType, SynthesizedAttributeType>
00138 ::setNodeSuccessors(SgNode* node, typename AstReverseBranchInhSynProcessing<InheritedAttributeType, SynthesizedAttributeType>::SuccessorsContainer& succContainer) {
00139 AstSuccessorsSelectors::selectReverseBranchSuccessors(node,succContainer);
00140 }
00141
00142
00143 template<class InheritedAttributeType>
00144 AstReverseBranchInhProcessing<InheritedAttributeType>::AstReverseBranchInhProcessing()
00145 {
00146 AstTopDownProcessing<InheritedAttributeType>::set_useDefaultIndexBasedTraversal(false);
00147 }
00148
00149 template<class InheritedAttributeType>
00150 void
00151 AstReverseBranchInhProcessing<InheritedAttributeType>
00152 ::setNodeSuccessors(SgNode* node, typename AstReverseBranchInhProcessing<InheritedAttributeType>::SuccessorsContainer& succContainer) {
00153 AstSuccessorsSelectors::selectReverseBranchSuccessors(node,succContainer);
00154 }
00155
00156
00157 template<class SynthesizedAttributeType>
00158 AstReverseBranchSynProcessing<SynthesizedAttributeType>::AstReverseBranchSynProcessing()
00159 {
00160 AstBottomUpProcessing<SynthesizedAttributeType>::set_useDefaultIndexBasedTraversal(false);
00161 }
00162
00163 template<class SynthesizedAttributeType>
00164 void
00165 AstReverseBranchSynProcessing<SynthesizedAttributeType>
00166 ::setNodeSuccessors(SgNode* node, typename AstReverseBranchSynProcessing<SynthesizedAttributeType>::SuccessorsContainer& succContainer) {
00167 AstSuccessorsSelectors::selectReverseBranchSuccessors(node,succContainer);
00168 }
00169
00170 #include "AstReverseSimpleProcessing.h"
00171
00172 #endif