Сценарий: Структура с вызовом методов со входящими и выходящими параметрами

Этот коммит содержится в:
Softonik 2024-01-26 04:41:48 +03:00 коммит произвёл Nobody
родитель 108890c3bf
коммит 083a2b161c
3 изменённых файлов: 51 добавлений и 3 удалений

Просмотреть файл

@ -53,7 +53,11 @@ func (c *Class) methodDeclarationsToString() (code string) {
}
func (c *Class) methodDeclarationToString(m *ast.FuncDecl) (code string) {
code += " "
code += "void " + m.Name.String() + "();"
code += handleFuncDeclType(m.Type)
code += " "
code += m.Name.String() + "("
code += handleFuncDeclParams(m.Type)
code += ");"
code += "\n"
return
}
@ -67,10 +71,11 @@ func (c *Class) methodImplementationsToString() (code string) {
}
func (c *Class) methodImplementationToString(m *ast.FuncDecl) (code string) {
code += "void "
code += handleFuncDeclType(m.Type)
code += " "
code += c.Name + "::"
code += m.Name.String() + "("
code += handleFuncDeclParams(m.Type)
code += ") {"
if len(m.Recv.List) > 0 {
n := m.Recv.List[0].Names

Просмотреть файл

@ -75,6 +75,8 @@ func handleIdentExpr(expr ast.Expr) string {
code += "unsigned long"
case "uint64":
code += "unsigned long long"
case "float64":
code += "double"
case "string":
code += "std::string"
default:

Просмотреть файл

@ -131,6 +131,47 @@ this->doSomethingElse();
}
void device::doSomethingElse() {
}
```
Сценарий: Структура с вызовом методов со входящими и выходящими параметрами
* Исходник:
```
package test
type device struct {
a int
}
func (d *device) doSomething(i int, x string) {
d.doSomethingElse(1, 0.5)
d.doSomethingElse(i, 0.6)
}
func (d *device) doSomethingElse(i int, f float64) int {
return 1
}
func (d *device) doSomethingBool(i int, f float64) bool {
return true
}
```
* Результат:
```
class device {
public:
int a;
void doSomething(int i,std::string x);
int doSomethingElse(int i,double f);
bool doSomethingBool(int i,double f);
};
void device::doSomething(int i,std::string x) {
this->doSomethingElse(1,0.5);
this->doSomethingElse(i,0.6);
}
int device::doSomethingElse(int i,double f) {
return 1;
}
bool device::doSomethingBool(int i,double f) {
return true;
}
```
Сценарий: Структура с изменением свойства