MCPcopy Create free account
hub / github.com/clechasseur/pathcopycopy / DecodePipelineElement

Method DecodePipelineElement

PathCopyCopy/src/PluginPipelineDecoder.cpp:96–213  ·  view source on GitHub ↗

Decodes a pipeline element found in an encoded pipeline elements stream. @param p_rStream Stream containing encoded pipeline element. @return New pipeline element.

Source from the content-addressed store, hash-verified

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: {

Callers

nothing calls this directly

Calls 2

ReadDataMethod · 0.80

Tested by

no test coverage detected