Сценарий: Структура с полем
Этот коммит содержится в:
родитель
3b400bccbb
коммит
b8b3698514
3 изменённых файлов: 60 добавлений и 2 удалений
|
@ -22,6 +22,8 @@ func handleExpr(expr ast.Expr) string {
|
||||||
code += handleParenExpr(e)
|
code += handleParenExpr(e)
|
||||||
case *ast.SelectorExpr:
|
case *ast.SelectorExpr:
|
||||||
code += handleSelectorExpr(e)
|
code += handleSelectorExpr(e)
|
||||||
|
case *ast.StructType:
|
||||||
|
code += handleStructType(e)
|
||||||
}
|
}
|
||||||
return code
|
return code
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,5 +22,24 @@ type device struct {}
|
||||||
```
|
```
|
||||||
* Результат:
|
* Результат:
|
||||||
```
|
```
|
||||||
class device {}
|
class device {
|
||||||
|
public:
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
Сценарий: Структура с полем
|
||||||
|
* Исходник:
|
||||||
|
```
|
||||||
|
package test
|
||||||
|
|
||||||
|
type device struct {
|
||||||
|
a int
|
||||||
|
}
|
||||||
|
```
|
||||||
|
* Результат:
|
||||||
|
```
|
||||||
|
class device {
|
||||||
|
public:
|
||||||
|
int a;
|
||||||
|
};
|
||||||
```
|
```
|
||||||
|
|
|
@ -10,6 +10,43 @@ func handleTypeSpec(spec ast.Spec) string {
|
||||||
code += " "
|
code += " "
|
||||||
code += s.Name.String()
|
code += s.Name.String()
|
||||||
code += " "
|
code += " "
|
||||||
code += "{}"
|
code += "{\n"
|
||||||
|
code += handleClass(s.Type)
|
||||||
|
// spew.Dump(s.TypeParams)
|
||||||
|
code += "};\n"
|
||||||
|
return code
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleClass(e ast.Expr) string {
|
||||||
|
code := ""
|
||||||
|
code += "public:\n"
|
||||||
|
code += handleExpr(e)
|
||||||
|
// spew.Dump(e)
|
||||||
|
return code
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleStructType(s *ast.StructType) string {
|
||||||
|
code := ""
|
||||||
|
code += handleFieldList(s.Fields)
|
||||||
|
return code
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleFieldList(l *ast.FieldList) string {
|
||||||
|
code := ""
|
||||||
|
for _, f := range l.List {
|
||||||
|
code += handleField(f)
|
||||||
|
}
|
||||||
|
return code
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleField(f *ast.Field) string {
|
||||||
|
code := ""
|
||||||
|
code += " "
|
||||||
|
code += handleIdentExpr(f.Type)
|
||||||
|
code += " "
|
||||||
|
for _, n := range f.Names {
|
||||||
|
code += handleIdentExpr(n)
|
||||||
|
}
|
||||||
|
code += ";\n"
|
||||||
return code
|
return code
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче