Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
monticore
EmbeddedMontiArc
generators
EMAM2Cpp
Commits
8392b428
Commit
8392b428
authored
Feb 18, 2020
by
Ahmed
Browse files
extends inRange
parent
8e0ff35c
Changes
2
Show whitespace changes
Inline
Side-by-side
src/main/java/de/monticore/lang/monticar/generator/cpp/commands/ErodeCommand.java
View file @
8392b428
...
...
@@ -153,6 +153,4 @@ public class ErodeCommand extends ArgumentNoReturnMathCommand{
}
};
}
}
src/main/java/de/monticore/lang/monticar/generator/cpp/commands/InRangeCommand.java
View file @
8392b428
...
...
@@ -5,7 +5,9 @@ import de.monticore.lang.math._symboltable.matrix.MathMatrixAccessSymbol;
import
de.monticore.lang.math._symboltable.matrix.MathMatrixNameExpressionSymbol
;
import
de.monticore.lang.monticar.generator.*
;
import
de.monticore.lang.monticar.generator.cpp.BluePrintCPP
;
import
de.monticore.lang.monticar.generator.cpp.MathExpressionProperties
;
import
de.monticore.lang.monticar.generator.cpp.MathFunctionFixer
;
import
de.monticore.lang.monticar.generator.cpp.converter.ComponentConverter
;
import
de.monticore.lang.monticar.generator.cpp.converter.ExecuteMethodGenerator
;
import
de.monticore.lang.monticar.generator.cpp.converter.MathConverter
;
import
de.monticore.lang.monticar.generator.cpp.symbols.MathStringExpression
;
...
...
@@ -45,13 +47,14 @@ public class InRangeCommand extends ArgumentNoReturnMathCommand{
public
void
convertUsingArmadilloBackend
(
MathExpressionSymbol
mathExpressionSymbol
,
BluePrint
bluePrint
)
{
MathMatrixNameExpressionSymbol
mathMatrixNameExpressionSymbol
=
(
MathMatrixNameExpressionSymbol
)
mathExpressionSymbol
;
mathMatrixNameExpressionSymbol
.
setNameToAccess
(
""
);
MathExpressionProperties
properties
=
ComponentConverter
.
tuples
.
get
(
mathExpressionSymbol
);
BluePrintCPP
bluePrintCPP
=
(
BluePrintCPP
)
bluePrint
;
String
valueListString
=
""
;
for
(
MathMatrixAccessSymbol
accessSymbol
:
mathMatrixNameExpressionSymbol
.
getMathMatrixAccessOperatorSymbol
().
getMathMatrixAccessSymbols
())
MathFunctionFixer
.
fixMathFunctions
(
accessSymbol
,
bluePrintCPP
);
Method
inRangeHelperMethod
=
getInRangeHelperMethod
();
Method
inRangeHelperMethod
=
getInRangeHelperMethod
(
mathMatrixNameExpressionSymbol
,
bluePrintCPP
,
properties
);
valueListString
+=
ExecuteMethodGenerator
.
generateExecuteCode
(
mathExpressionSymbol
,
new
ArrayList
<
String
>());
List
<
MathMatrixAccessSymbol
>
newMatrixAccessSymbols
=
new
ArrayList
<>();
MathStringExpression
stringExpression
=
new
MathStringExpression
(
"inRangeHelper"
+
valueListString
,
mathMatrixNameExpressionSymbol
.
getMathMatrixAccessOperatorSymbol
().
getMathMatrixAccessSymbols
());
...
...
@@ -64,32 +67,69 @@ public class InRangeCommand extends ArgumentNoReturnMathCommand{
}
private
Method
getInRangeHelperMethod
(){
private
Method
getInRangeHelperMethod
(
MathMatrixNameExpressionSymbol
mathMatrixNameExpressionSymbol
,
BluePrintCPP
bluePrintCPP
,
MathExpressionProperties
properties
){
Method
method
=
new
Method
(
"inRangeHelper"
,
"void"
);
String
typeNameIn
=
""
;
String
typeNameOut
=
""
;
if
(
properties
.
isPreCV
()){
typeNameIn
=
"cv::Mat"
;
}
else
{
typeNameIn
=
"arma::cube"
;
}
if
(
properties
.
isSucCV
()){
typeNameOut
=
"cv::Mat"
;
}
else
{
typeNameOut
=
"arma::mat"
;
}
//add parameters
Variable
src
=
new
Variable
();
method
.
addParameter
(
src
,
"src"
,
"CommonMatrix"
,
"cube"
,
""
);;
method
.
addParameter
(
src
,
"src"
,
"CommonMatrix"
,
typeNameIn
,
""
);;
Variable
dst
=
new
Variable
();
method
.
addParameter
(
dst
,
"dst"
,
"CommonMatrixType"
,
"mat"
,
""
);
method
.
addParameter
(
dst
,
"dst"
,
"CommonMatrixType"
,
typeNameOut
,
""
);
Variable
lowerBoundary
=
new
Variable
();
method
.
addParameter
(
lowerBoundary
,
"lowerB"
,
"colvec"
,
"colvec"
,
""
);
Variable
upperBoundary
=
new
Variable
();
method
.
addParameter
(
upperBoundary
,
"upperB"
,
"colvec"
,
"colvec"
,
""
);
//add an instruction to the method
method
.
addInstruction
(
methodBody
());
method
.
addInstruction
(
methodBody
(
properties
,
typeNameIn
,
typeNameOut
));
return
method
;
}
private
Instruction
methodBody
(){
private
Instruction
methodBody
(
MathExpressionProperties
properties
,
String
typeNameIn
,
String
typeNameOut
){
return
new
Instruction
()
{
@Override
public
String
getTargetLanguageInstruction
()
{
return
" cv::inRange(src, Scalar(lowerB(0), lowerB(1), lowerB(2)),\n"
+
" Scalar(upperB(0), upperB(1), upperB(2)), dst);\n"
;
}
String
finalInstruction
=
""
;
if
(
properties
.
isPreCV
()
&&
properties
.
isSucCV
())
{
finalInstruction
+=
" cv::inRange(src, cv::Scalar(lowerB(0), lowerB(1), lowerB(2)),\n"
+
" cv::Scalar(upperB(0), upperB(1), upperB(2)), dst);\n"
;
}
else
if
(
properties
.
isPreCV
())
{
finalInstruction
+=
" cv::Mat dstCV;\n"
+
" cv::inRange(src, cv::Scalar(lowerB(0), lowerB(1), lowerB(2)),\n"
+
" cv::Scalar(upperB(0), upperB(1), upperB(2)), dstCV);\n"
+
" dst = ConvHelper::to_arma(dstCV);\n"
;
}
else
if
(
properties
.
isSucCV
())
{
finalInstruction
+=
" cv::Mat srcCV;\n"
+
" srcCV = ConvHelper::to_cvmat(src);\n"
+
" cv::inRange(srcCV, cv::Scalar(lowerB(0), lowerB(1), lowerB(2)),\n"
+
" cv::Scalar(upperB(0), upperB(1), upperB(2)), dst);\n"
;
}
else
{
finalInstruction
+=
" cv::Mat srcCV;\n"
+
" cv::Mat dstCV;\n"
+
" srcCV = ConvHelper::to_cvmat(src);\n"
+
" cv::inRange(srcCV, cv::Scalar(lowerB(0), lowerB(1), lowerB(2)),\n"
+
" cv::Scalar(upperB(0), upperB(1), upperB(2)), dstCV);\n"
+
" dst = ConvHelper::to_arma(dstCV);\n"
;
}
return
finalInstruction
;
}
@Override
public
boolean
isConnectInstruction
()
{
return
false
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment