Skip to content

Commit

Permalink
Updated to use RTL2 instead of Sugar, part one
Browse files Browse the repository at this point in the history
  • Loading branch information
dwarfland committed Feb 10, 2017
1 parent e1449a8 commit 042f756
Show file tree
Hide file tree
Showing 24 changed files with 1,828 additions and 1,911 deletions.
19 changes: 8 additions & 11 deletions Base.swift
@@ -1,7 +1,4 @@
import Sugar
import Sugar.Collections

public enum CGPlatform {
public enum CGPlatform {
case Echoes
case Cooper
case Toffee
Expand All @@ -22,7 +19,7 @@ public __abstract class CGEntity {
}

public class CGCodeUnit {

public var FileName: String?
public var Namespace: CGNamespaceReference?
public var HeaderComment = CGCommentStatement()
Expand All @@ -31,7 +28,7 @@ public class CGCodeUnit {
public var FileImports = List<CGImport>()
public var Types = List<CGTypeDefinition>()
public var Globals = List<CGGlobalDefinition>()

public var ImplementationDirectives = List<CGCompilerDirective>() /* Pascal only */
public var ImplementationImports = List<CGImport>() /* Pascal only */
public var Initialization: List<CGStatement>? /* Delphi only */
Expand All @@ -50,7 +47,7 @@ public class CGCodeUnit {
public class CGCompilerDirective {
public var Directive: String /* will not be language agnostic */
public var Condition: CGConditionalDefine?

public init(_ directive: String) {
Directive = directive
}
Expand All @@ -63,7 +60,7 @@ public class CGCompilerDirective {
public class CGImport {
public var Namespace: CGNamespaceReference?
public var StaticClass: CGNamedTypeReference?

public var Name: String! {
if let ns = Namespace {
return ns.Name
Expand Down Expand Up @@ -100,7 +97,7 @@ public class CGConditionalDefine {
}

public convenience init(_ define: String) {
init(CGNamedIdentifierExpression(define))
init(CGNamedIdentifierExpression(define))
}

public init(_ define: String, inverted: Boolean) {
Expand All @@ -125,8 +122,8 @@ public class CGGlobalFunctionDefinition : CGGlobalDefinition {

public class CGGlobalVariableDefinition : CGGlobalDefinition {
public var Variable: CGFieldDefinition

public init(_ variable: CGFieldDefinition) {
Variable = variable
}
}
}
40 changes: 18 additions & 22 deletions CGCPlusPlusCPPCodeGenerator.swift
@@ -1,8 +1,4 @@
import Sugar
import Sugar.Collections
import Sugar.IO

public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
public override var defaultFileExtension: String { return "cpp" }
public var UseHdrStop: Boolean = true

Expand All @@ -23,14 +19,14 @@ public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
var lastGlobal: CGGlobalDefinition? = nil
for g in currentUnit.Globals {
var visibility: CGMemberVisibilityKind = .Unspecified;
if let method = g as? CGGlobalFunctionDefinition {
if let method = g as? CGGlobalFunctionDefinition {
visibility = .Unit;
}
if let variable = g as? CGGlobalVariableDefinition {
if let variable = g as? CGGlobalVariableDefinition {
visibility = variable.Variable.Visibility;
}
// generate only .Unit & .Private visibility
if ((visibility == .Unit)||(visibility == .Private)){
if ((visibility == .Unit)||(visibility == .Private)){
if let lastGlobal = lastGlobal, globalNeedsSpace(g, afterGlobal: lastGlobal) {
AppendLine()
}
Expand All @@ -56,7 +52,7 @@ public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
AppendLine("#include \"\(Path.ChangeExtension(fileName, ".h"))\"")
}
}

override func generateFooter(){
var lnamespace = currentUnit.FileName;
if isCBuilder() {
Expand Down Expand Up @@ -102,26 +98,26 @@ public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
//
// Types
//

override func generateStructType(_ type: CGStructTypeDefinition) {
// structs don't appear in .m
}

override func generateInterfaceType(_ type: CGInterfaceTypeDefinition) {
// protocols don't appear in .m
}

//
// Type Members
//

override func generateMethodDefinition(_ method: CGMethodDefinition, type: CGTypeDefinition) {
cppGenerateMethodDefinitionHeader(method, type: type, header: false)
AppendLine()
AppendLine("{")
incIndent()
// process local variables
if let localVariables = method.LocalVariables, localVariables.Count > 0 {
if let localVariables = method.LocalVariables, localVariables.Count > 0 {
for v in localVariables {
generateVariableDeclarationStatement(v);
}
Expand All @@ -134,33 +130,33 @@ public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
override func generatePropertyDefinition(_ property: CGPropertyDefinition, type: CGTypeDefinition) {
if let getStatements = property.GetStatements, let method = property.GetterMethodDefinition() {
method.Name = "get__" + property.Name
if isCBuilder() {
if isCBuilder() {
method.CallingConvention = .Register
}
generateMethodDefinition(method, type: type)
}
if let setStatements = property.SetStatements, let method = property.SetterMethodDefinition() {
method.Name = "set__" + uppercaseFirstLetter(property.Name)
if isCBuilder() {
if isCBuilder() {
method.CallingConvention = .Register
}
generateMethodDefinition(method, type: type)
}
}

override func generateFieldDefinition(_ field: CGFieldDefinition, type: CGTypeDefinition) {
if type == CGGlobalTypeDefinition.GlobalType {
if type == CGGlobalTypeDefinition.GlobalType {
super.generateFieldDefinition(field, type: type)
}
}
}

override func generateConstructorDefinition(_ ctor: CGConstructorDefinition, type: CGTypeDefinition) {
cppGenerateMethodDefinitionHeader(ctor, type: type, header: false)
AppendLine()
AppendLine("{")
incIndent()
// process local variables
if let localVariables = ctor.LocalVariables, localVariables.Count > 0 {
if let localVariables = ctor.LocalVariables, localVariables.Count > 0 {
for v in localVariables {
generateVariableDeclarationStatement(v);
}
Expand All @@ -176,7 +172,7 @@ public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
AppendLine("{")
incIndent()
// process local variables
if let localVariables = dtor.LocalVariables, localVariables.Count > 0 {
if let localVariables = dtor.LocalVariables, localVariables.Count > 0 {
for v in localVariables {
generateVariableDeclarationStatement(v);
}
Expand All @@ -187,4 +183,4 @@ public class CGCPlusPlusCPPCodeGenerator : CGCPlusPlusCodeGenerator {
}


}
}

0 comments on commit 042f756

Please sign in to comment.