summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Schlosser <christoph@linux.com>2018-02-20 12:35:02 +0100
committerChristoph Schlosser <christophschlosser@users.noreply.github.com>2018-02-20 22:16:05 +0100
commit1464b8e169e8bfcebc32dd877d1bd1bde0c0ad5c (patch)
tree5cad0a26b972ce57722e722d7e81a8b7ab5696d4
parent8711b0fb2c8f88a6864096de7813e63fd6cf9f7a (diff)
downloaddoxdocgen-1464b8e169e8bfcebc32dd877d1bd1bde0c0ad5c.tar.gz
Introduce special handling for cast operator
-rw-r--r--src/Lang/Cpp/CppParser.ts11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Lang/Cpp/CppParser.ts b/src/Lang/Cpp/CppParser.ts
index fcbdbe0..de0ecc5 100644
--- a/src/Lang/Cpp/CppParser.ts
+++ b/src/Lang/Cpp/CppParser.ts
@@ -327,6 +327,12 @@ export default class CppParser implements ICodeParser {
}
private GetReturnAndArgs(line: string): [CppArgument, CppArgument[]] {
+ if (this.GetArgumentFromCastOperator(line) !== null) {
+ const opFunc = new CppArgument();
+ opFunc.name = this.GetArgumentFromCastOperator(line)[1];
+ opFunc.type.nodes.push(new CppToken(CppTokenType.Symbol, opFunc.name));
+ return [opFunc, []];
+ }
// CppTokenize rest of expression and remove comment CppTokens;
const CppTokens: CppToken[] = this.Tokenize(line)
.filter((t) => t.type !== CppTokenType.CommentBlock)
@@ -421,6 +427,11 @@ export default class CppParser implements ICodeParser {
});
}
+ private GetArgumentFromCastOperator(line: string) {
+ const copy = line;
+ return copy.match("[explicit|\\s]*\\s*operator\\s*([a-zA-Z].*)\\(\\).*");
+ }
+
private GetArgumentFromTrailingReturn(tree: CppParseTree, startTrailingReturn: number): CppArgument {
const argument: CppArgument = new CppArgument();