Decodes a pipeline element found in an encoded pipeline elements stream. @param p_rStream Stream containing encoded pipeline element. @return New pipeline element.
| 94 | // @return New pipeline element. |
| 95 | // |
| 96 | auto PipelineDecoder::DecodePipelineElement(PipelineDecoder::EncodedElementsStream& p_rStream) -> PipelineElementSP |
| 97 | { |
| 98 | PipelineElementSP spElement; |
| 99 | |
| 100 | // The first character represents a code telling us what element type it is. |
| 101 | const auto code = p_rStream.ReadData(1).front(); |
| 102 | |
| 103 | // Look at the code and create the appropriate element. |
| 104 | switch (code) { |
| 105 | case ELEMENT_CODE_FOLLOW_SYMLINK: { |
| 106 | spElement = std::make_shared<FollowSymlinkPipelineElement>(); |
| 107 | break; |
| 108 | } |
| 109 | case ELEMENT_CODE_QUOTES: { |
| 110 | spElement = std::make_shared<QuotesPipelineElement>(); |
| 111 | break; |
| 112 | } |
| 113 | case ELEMENT_CODE_OPTIONAL_QUOTES: { |
| 114 | spElement = std::make_shared<OptionalQuotesPipelineElement>(); |
| 115 | break; |
| 116 | } |
| 117 | case ELEMENT_CODE_EMAIL_LINKS: { |
| 118 | spElement = std::make_shared<EmailLinksPipelineElement>(); |
| 119 | break; |
| 120 | } |
| 121 | case ELEMENT_CODE_ENCODE_URI_WHITESPACE: { |
| 122 | spElement = std::make_shared<EncodeURIWhitespacePipelineElement>(); |
| 123 | break; |
| 124 | } |
| 125 | case ELEMENT_CODE_ENCODE_URI_CHARS: { |
| 126 | spElement = std::make_shared<EncodeURICharsPipelineElement>(); |
| 127 | break; |
| 128 | } |
| 129 | case ELEMENT_CODE_BACK_TO_FORWARD_SLASHES: { |
| 130 | spElement = std::make_shared<BackToForwardSlashesPipelineElement>(); |
| 131 | break; |
| 132 | } |
| 133 | case ELEMENT_CODE_FORWARD_TO_BACKSLASHES: { |
| 134 | spElement = std::make_shared<ForwardToBackslashesPipelineElement>(); |
| 135 | break; |
| 136 | } |
| 137 | case ELEMENT_CODE_REMOVE_EXT: { |
| 138 | spElement = std::make_shared<RemoveFileExtPipelineElement>(); |
| 139 | break; |
| 140 | } |
| 141 | case ELEMENT_CODE_FIND_REPLACE: { |
| 142 | spElement = DecodeFindReplaceElement(p_rStream); |
| 143 | break; |
| 144 | } |
| 145 | case ELEMENT_CODE_REGEX: { |
| 146 | spElement = DecodeRegexElement(p_rStream); |
| 147 | break; |
| 148 | } |
| 149 | case ELEMENT_CODE_UNEXPAND_ENV_STRINGS: { |
| 150 | spElement = std::make_shared<UnexpandEnvironmentStringsPipelineElement>(); |
| 151 | break; |
| 152 | } |
| 153 | case ELEMENT_CODE_INJECT_DRIVE_LABEL: { |
nothing calls this directly
no test coverage detected