From b56039baea14e416384f741551cf0c2938e70b09 Mon Sep 17 00:00:00 2001 From: Csaba Hruska Date: Tue, 24 Nov 2015 12:30:44 +0100 Subject: ddl: work on universe based swift json serializer --- Generate.hs | 2 ++ templates/data.swift.ede | 43 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/Generate.hs b/Generate.hs index 4eea1dc..5f5c0d0 100644 --- a/Generate.hs +++ b/Generate.hs @@ -25,6 +25,7 @@ main = do dataSwift <- eitherParseFile "templates/data.swift.ede" dataJava <- eitherParseFile "templates/data.java.ede" dataHpp <- eitherParseFile "templates/data.hpp.ede" + dataHpp2 <- eitherParseFile "templates/data.hpp2.ede" dataCpp <- eitherParseFile "templates/data.cpp.ede" dataCs <- eitherParseFile "templates/data.cs.ede" dataHs <- eitherParseFile "templates/data.hs.ede" @@ -57,6 +58,7 @@ main = do -- Purescript either error (\x -> writeFile ("out/" ++ name ++ ".purs") $ LText.unpack x) $ dataPs >>= (\t -> eitherRenderWith mylib t env) -- C++ + either error (\x -> writeFile ("out/" ++ name ++ "2.hpp") $ LText.unpack x) $ dataHpp2 >>= (\t -> eitherRenderWith mylib t env) either error (\x -> writeFile ("out/" ++ name ++ ".hpp") $ LText.unpack x) $ dataHpp >>= (\t -> eitherRenderWith mylib t env) either error (\x -> writeFile ("out/" ++ name ++ ".cpp") $ LText.unpack x) $ dataCpp >>= (\t -> eitherRenderWith mylib t env) {- diff --git a/templates/data.swift.ede b/templates/data.swift.ede index d10c865..f2a9039 100644 --- a/templates/data.swift.ede +++ b/templates/data.swift.ede @@ -1,11 +1,6 @@ // generated file, do not modify! // {{ dateTime }} -enum Maybe { - case Nothing - case Just(T) -} - {% for t in dataAndType %} {% case t.value | constType %} {% when "DataDef" %} @@ -106,3 +101,41 @@ extension {{ t.value.dataName }} { } } {% endfor %} + +enum Maybe { + case Nothing + case Just(T) +} + +enum Type { + case Int + case Int32 + case Word + case Word32 + case Float + case Bool + case String + case Array(Type) + case List(Type) + case Maybe(Type) + case Map(Type,Type) +{% for t in definitions %} + case {{ t.value.dataName }} +{% endfor %} +} + +func fromJSON(type: Type, personName: String) -> Any { + switch type { + case .Int: return 0 + case .Int32: return 0 + case .Word: return 0 + case .Word32: return 0 + case .Float: return 0.0 + case .Bool: return false + case .String: return "" + case .Array(let a): return fromJSON(a,personName) + case .List(let a): return fromJSON(a,personName) + case .Maybe(let a): return fromJSON(a,personName) + } + return 0; +} \ No newline at end of file -- cgit v1.2.3