Selaa lähdekoodia

QuickProto API improvements

Tim Burks 9 vuotta sitten
vanhempi
commit
900383471f

+ 8 - 10
Examples/Echo/Swift/Echo/EchoServer.swift

@@ -35,11 +35,10 @@ class EchoServer {
         {(requestData) in
           if let requestData = requestData,
             let requestMessage =
-            fileDescriptorSet.readMessage(name:"EchoRequest",
-                                          proto:requestData) {
-            requestMessage.forOneField(name:"text") {(field) in
-              let replyMessage = fileDescriptorSet.createMessage(name:"EchoResponse")!
-              replyMessage.addField(name:"text", value:"Swift nonstreaming echo " + field.string())
+            fileDescriptorSet.readMessage("EchoRequest", data: requestData) {
+            requestMessage.forOneField("text") {(field) in
+              let replyMessage = fileDescriptorSet.createMessage("EchoResponse")!
+              replyMessage.addField("text", value:"Swift nonstreaming echo " + field.string())
               requestHandler.sendResponse(message:replyMessage.serialize(),
                                           trailingMetadata:Metadata())
             }
@@ -75,11 +74,10 @@ class EchoServer {
     requestHandler.receiveMessage()
       {(requestData) in
         if let requestData = requestData,
-          let requestMessage = fileDescriptorSet.readMessage(name:"EchoRequest",
-                                                             proto:requestData) {
-          requestMessage.forOneField(name:"text") {(field) in
-            let replyMessage = fileDescriptorSet.createMessage(name:"EchoResponse")!
-            replyMessage.addField(name:"text", value:"Swift streaming echo " + field.string())
+          let requestMessage = fileDescriptorSet.readMessage("EchoRequest", data:requestData) {
+          requestMessage.forOneField("text") {(field) in
+            let replyMessage = fileDescriptorSet.createMessage("EchoResponse")!
+            replyMessage.addField("text", value:"Swift streaming echo " + field.string())
             requestHandler.sendResponse(message:replyMessage.serialize()) {
               // after we've sent our response, prepare to handle another message
               self.handleMessage(fileDescriptorSet:fileDescriptorSet, requestHandler:requestHandler)

+ 9 - 11
Examples/Echo/Swift/Echo/EchoViewController.swift

@@ -95,8 +95,8 @@ class EchoViewController : NSViewController, NSTextFieldDelegate {
       // NONSTREAMING
 
       // build the message
-      if let requestMessage = self.fileDescriptorSet.createMessage(name:"EchoRequest") {
-        requestMessage.addField(name:"text", value:self.messageField.stringValue)
+      if let requestMessage = self.fileDescriptorSet.createMessage("EchoRequest") {
+        requestMessage.addField("text", value:self.messageField.stringValue)
         let requestHost = "foo.test.google.fr"
         let requestMethod = "/echo.Echo/Get"
         let requestMetadata = Metadata()
@@ -108,9 +108,9 @@ class EchoViewController : NSViewController, NSTextFieldDelegate {
         { (response) in
           self.log("Received status: \(response.status) " + response.statusDetails)
           if let messageData = response.messageData,
-            let responseMessage = self.fileDescriptorSet.readMessage(name:"EchoResponse",
-                                                                     proto:messageData) {
-            responseMessage.forOneField(name:"text") {(field) in
+            let responseMessage = self.fileDescriptorSet.readMessage("EchoResponse",
+                                                                     data:messageData) {
+            responseMessage.forOneField("text") {(field) in
               DispatchQueue.main.async {
                 self.outputField.stringValue = field.string()
               }
@@ -141,18 +141,16 @@ class EchoViewController : NSViewController, NSTextFieldDelegate {
   }
 
   func sendMessage() {
-    let requestMessage = self.fileDescriptorSet.createMessage(name:"EchoRequest")!
-    requestMessage.addField(name:"text", value:self.messageField.stringValue)
+    let requestMessage = self.fileDescriptorSet.createMessage("EchoRequest")!
+    requestMessage.addField("text", value:self.messageField.stringValue)
     let messageData = requestMessage.serialize()
     call.sendMessage(data:messageData)
   }
 
   func receiveMessage() {
     call.receiveMessage() {(data) in
-      let responseMessage = self.fileDescriptorSet.readMessage(
-        name:"EchoResponse",
-        proto:data)!
-      responseMessage.forOneField(name:"text") {(field) in
+      let responseMessage = self.fileDescriptorSet.readMessage( "EchoResponse", data:data)!
+      responseMessage.forOneField("text") {(field) in
         DispatchQueue.main.async {
           self.outputField.stringValue = field.string()
         }

+ 5 - 5
Examples/StickyNotes/StickyNotes/StickyNoteViewController.swift

@@ -68,8 +68,8 @@ class StickyNoteViewController : NSViewController, NSTextFieldDelegate {
     let text = self.messageField.stringValue
 
     // build the message
-    if let requestMessage = fileDescriptorSet.createMessage(name:"StickyNoteRequest") {
-      requestMessage.addField(name:"message", value:text)
+    if let requestMessage = fileDescriptorSet.createMessage("StickyNoteRequest") {
+      requestMessage.addField("message", value:text)
 
       let requestHost = "foo.test.google.fr"
       let requestMethod = "/messagepb.StickyNote/Get"
@@ -95,9 +95,9 @@ class StickyNoteViewController : NSViewController, NSTextFieldDelegate {
           self.log("Received status: \(response.status) " + response.statusDetails)
 
           if let responseData = response.messageData,
-            let responseMessage = fileDescriptorSet.readMessage(name:"StickyNoteResponse",
-                                                                proto:responseData) {
-            responseMessage.forOneField(name:"image") {(field) in
+            let responseMessage = fileDescriptorSet.readMessage("StickyNoteResponse",
+                                                                data: responseData) {
+            responseMessage.forOneField("image") {(field) in
               if let image = NSImage(data: field.data() as Data) {
                 DispatchQueue.main.async {
                   self.imageView.image = image

+ 4 - 5
Examples/StickyNotes/StickyNotes/StickyServer.swift

@@ -71,13 +71,12 @@ class StickyServer {
           {(requestData) in
             if let requestData = requestData,
               let requestMessage =
-              fileDescriptorSet.readMessage(name:"StickyNoteRequest",
-                                            proto:requestData) {
-              requestMessage.forOneField(name:"message") {(field) in
+              fileDescriptorSet.readMessage("StickyNoteRequest", data: requestData) {
+              requestMessage.forOneField("message") {(field) in
                 let imageData = self.drawImage(message: field.string())
 
-                let replyMessage = fileDescriptorSet.createMessage(name:"StickyNoteResponse")!
-                replyMessage.addField(name:"image", value:imageData)
+                let replyMessage = fileDescriptorSet.createMessage("StickyNoteResponse")!
+                replyMessage.addField("image", value:imageData)
                 requestHandler.sendResponse(message:replyMessage.serialize(),
                                             trailingMetadata:Metadata())
               }

+ 4 - 4
Packages/QuickProto/Sources/CodeBuilder.swift

@@ -47,7 +47,7 @@ public class CodeBuilder {
     code += "import Foundation\n"
     code += "\n"
     code += "var _FileDescriptor : [[String:Any]] = [\n"
-    message.forEachField(path:["file","message_type"]) {(field) in
+    message.forEachField(["file","message_type"]) {(field) in
       generateProtoDescription(field:field)
     }
     code += "];\n"
@@ -55,11 +55,11 @@ public class CodeBuilder {
 
   /// generate code for a dictionary literal describing a proto
   private func generateProtoDescription(field: Field) {
-    field.message().forEachField(path:["name"]) {(field) in
+    field.message().forEachField("name") {(field) in
       code += "  [\"name\": \"\(field.string())\",\n"
       code += "   \"fields\": [\n"
     }
-    field.message().forEachField(path:["field"]) {(field) in
+    field.message().forEachField("field") {(field) in
       var name : String?
       var number : Int?
       var type : Int = 0
@@ -85,7 +85,7 @@ public class CodeBuilder {
       }
     }
     code += "    ]],\n"
-    field.message().forEachField(path:["nested_type"]) {(field) in
+    field.message().forEachField("nested_type") {(field) in
       generateProtoDescription(field:field)
     }
   }

+ 5 - 5
Packages/QuickProto/Sources/FieldDescriptor.swift

@@ -49,13 +49,13 @@ class FieldDescriptor {
   }
 
   init(message: Message) {
-    name = message.oneField(name:"name")!.string()
-    type = FieldType(rawValue:message.oneField(name:"type")!.integer())!
-    tag = message.oneField(name:"number")!.integer()
-    if let field = message.oneField(name:"type_name") {
+    name = message.oneField("name")!.string()
+    type = FieldType(rawValue:message.oneField("type")!.integer())!
+    tag = message.oneField("number")!.integer()
+    if let field = message.oneField("type_name") {
       type_name = field.string()
     }
-    label = FieldLabel(rawValue:message.oneField(name:"label")!.integer())!
+    label = FieldLabel(rawValue:message.oneField("label")!.integer())!
   }
 
   func wireType() -> WireType {

+ 1 - 1
Packages/QuickProto/Sources/FileDescriptor.swift

@@ -45,7 +45,7 @@ class FileDescriptor {
 
   // creates a FileDescriptor from a FileDescriptor proto
   init(message:Message) {
-    message.forEachField(path:["message_type"]) { (field) in
+    message.forEachField(["message_type"]) { (field) in
       let messageDescriptor = MessageDescriptor(message: field.message())
       messageDescriptors.append(messageDescriptor)
     }

+ 9 - 9
Packages/QuickProto/Sources/FileDescriptorSet.swift

@@ -40,11 +40,11 @@ public class FileDescriptorSet {
     fileDescriptors.append(FileDescriptor())
   }
 
-  public init(proto:Data) {
+  public init(data:Data) {
     let baseFileDescriptorSet = FileDescriptorSet()
-    if let descriptorMessage = baseFileDescriptorSet.readMessage(name:"FileDescriptorSet",
-                                                                 proto:proto) {
-      descriptorMessage.forEachField(path:["file"]) { (field) in
+    if let descriptorMessage = baseFileDescriptorSet.readMessage("FileDescriptorSet",
+                                                                 data:data) {
+      descriptorMessage.forEachField("file") { (field) in
         let fileDescriptor = FileDescriptor(message: field.message())
         fileDescriptors.append(fileDescriptor)
       }
@@ -56,12 +56,12 @@ public class FileDescriptorSet {
     let path = Bundle.main.resourcePath!.appending("/").appending(filename)
     let fileDescriptorSetProto = NSData(contentsOfFile:path)
     assert(fileDescriptorSetProto != nil) // the file to be loaded must be in the resource bundle
-    self.init(proto:fileDescriptorSetProto! as Data)
+    self.init(data:fileDescriptorSetProto! as Data)
   }
 #endif
 
   init(message:Message) {
-    message.forEachField(path:["file"]) { (field) in
+    message.forEachField("file") { (field) in
       let fileDescriptor = FileDescriptor(message: field.message())
       fileDescriptors.append(fileDescriptor)
     }
@@ -79,7 +79,7 @@ public class FileDescriptorSet {
     return nil
   }
 
-  public func createMessage(name: String) -> Message! {
+  public func createMessage(_ name: String) -> Message! {
     if let messageDescriptor = self.messageDescriptor(name: name) {
       return Message(descriptor:messageDescriptor, fields:[])
     } else {
@@ -87,10 +87,10 @@ public class FileDescriptorSet {
     }
   }
 
-  public func readMessage(name:String, proto:Data) -> Message? {
+  public func readMessage(_ name:String, data:Data) -> Message? {
     let descriptorReader = MessageReader(self,
                                          messageName:name,
-                                         data:proto)
+                                         data:data)
     let descriptorMessage = descriptorReader.readMessage()
     return descriptorMessage
   }

+ 7 - 7
Packages/QuickProto/Sources/Message.swift

@@ -53,7 +53,7 @@ public class Message {
   }
 
   /// add a field and perform the specified action
-  public func addField(name: String, action:((Field) -> Void)) {
+  public func addField(_ name: String, action:((Field) -> Void)) {
     // look up the field descriptor
     for fieldDescriptor in descriptor.fieldDescriptors {
       if (fieldDescriptor.name == name) {
@@ -68,7 +68,7 @@ public class Message {
 
 
   /// add a field and set it to the specified value
-  public func addField(name: String, value: Any) {
+  public func addField(_ name: String, value: Any) {
     // look up the field descriptor
     for fieldDescriptor in descriptor.fieldDescriptors {
       if (fieldDescriptor.name == name) {
@@ -86,7 +86,7 @@ public class Message {
   }
 
   /// get one field with the specified name
-  public func oneField(name: String) -> Field? {
+  public func oneField(_ name: String) -> Field? {
     for field in fields {
       if field.name() == name {
         return field
@@ -96,7 +96,7 @@ public class Message {
   }
 
   /// perform an action on one field with the specified name
-  public func forOneField(name: String, action:((Field) -> Void)) {
+  public func forOneField(_ name: String, action:((Field) -> Void)) {
     for field in fields {
       if field.name() == name {
         action(field)
@@ -106,7 +106,7 @@ public class Message {
   }
 
   /// perform an action on each field with the specified name
-  public func forEachField(name:String, action:(Field) -> (Void)) {
+  public func forEachField(_ name:String, action:(Field) -> (Void)) {
     for field in fields {
       if field.name() == name {
         action(field)
@@ -115,7 +115,7 @@ public class Message {
   }
 
   /// perform an action on each field following the specified path of field names
-  public func forEachField(path:[String], action:(Field) -> (Void)) {
+  public func forEachField(_ path:[String], action:(Field) -> (Void)) {
     for field in fields {
       if field.name() == path[0] {
         if path.count == 1 {
@@ -123,7 +123,7 @@ public class Message {
         } else {
           var subpath = path
           subpath.removeFirst()
-          field.message().forEachField(path:subpath, action:action)
+          field.message().forEachField(subpath, action:action)
         }
       }
     }

+ 2 - 2
Packages/QuickProto/Sources/MessageDescriptor.swift

@@ -38,10 +38,10 @@ public class MessageDescriptor {
   var fieldDescriptors: [FieldDescriptor] = []
 
   init(message:Message) { // the message should be a DescriptorProto (descriptor.proto)
-    if let field = message.oneField(name:"name") {
+    if let field = message.oneField("name") {
       name = field.string()
     }
-    message.forEachField(name:"field") {(field) in
+    message.forEachField("field") {(field) in
       let fieldDescriptor = FieldDescriptor(message:field.message())
       fieldDescriptors.append(fieldDescriptor)
     }

+ 1 - 104
QuickProto/QuickProto.xcodeproj/project.pbxproj

@@ -7,19 +7,6 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		D33465771D828C6B00C8D159 /* _FileDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8191D75FC2200E5DFAB /* _FileDescriptor.swift */; };
-		D33465781D828C6B00C8D159 /* CodeBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81A1D75FC2200E5DFAB /* CodeBuilder.swift */; };
-		D33465791D828C6B00C8D159 /* Field.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81B1D75FC2200E5DFAB /* Field.swift */; };
-		D334657A1D828C6B00C8D159 /* FieldDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81C1D75FC2200E5DFAB /* FieldDescriptor.swift */; };
-		D334657B1D828C6B00C8D159 /* FieldLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81D1D75FC2200E5DFAB /* FieldLabel.swift */; };
-		D334657C1D828C6B00C8D159 /* FieldType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81E1D75FC2200E5DFAB /* FieldType.swift */; };
-		D334657D1D828C6B00C8D159 /* FileDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81F1D75FC2200E5DFAB /* FileDescriptor.swift */; };
-		D334657E1D828C6B00C8D159 /* FileDescriptorSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8201D75FC2200E5DFAB /* FileDescriptorSet.swift */; };
-		D334657F1D828C6B00C8D159 /* Message.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8211D75FC2200E5DFAB /* Message.swift */; };
-		D33465801D828C6B00C8D159 /* MessageDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8221D75FC2200E5DFAB /* MessageDescriptor.swift */; };
-		D33465811D828C6B00C8D159 /* MessageReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8231D75FC2200E5DFAB /* MessageReader.swift */; };
-		D33465821D828C6B00C8D159 /* NSMutableData+Proto.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8241D75FC2200E5DFAB /* NSMutableData+Proto.swift */; };
-		D33465831D828C6B00C8D159 /* WireType.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8251D75FC2200E5DFAB /* WireType.swift */; };
 		D35BEA331D8397CC00BB9230 /* _FileDescriptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C8191D75FC2200E5DFAB /* _FileDescriptor.swift */; };
 		D35BEA341D8397CC00BB9230 /* CodeBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81A1D75FC2200E5DFAB /* CodeBuilder.swift */; };
 		D35BEA351D8397CC00BB9230 /* Field.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3A2C81B1D75FC2200E5DFAB /* Field.swift */; };
@@ -80,18 +67,6 @@
 		};
 /* End PBXContainerItemProxy section */
 
-/* Begin PBXCopyFilesBuildPhase section */
-		D35C9F671D74A4AB000443CD /* CopyFiles */ = {
-			isa = PBXCopyFilesBuildPhase;
-			buildActionMask = 2147483647;
-			dstPath = /usr/share/man/man1/;
-			dstSubfolderSpec = 0;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 1;
-		};
-/* End PBXCopyFilesBuildPhase section */
-
 /* Begin PBXFileReference section */
 		D35BEA401D83B10100BB9230 /* SampleMessage.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = SampleMessage.bin; path = Samples/sample/SampleMessage.bin; sourceTree = SOURCE_ROOT; };
 		D35BEA421D83B10F00BB9230 /* sample.out */ = {isa = PBXFileReference; lastKnownFileType = file; name = sample.out; path = Samples/sample/sample.out; sourceTree = SOURCE_ROOT; };
@@ -104,7 +79,6 @@
 		D35C9F341D74A1C0000443CD /* QuickProto.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = QuickProto.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		D35C9F361D74A1C0000443CD /* QuickProto.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QuickProto.h; sourceTree = "<group>"; };
 		D35C9F371D74A1C0000443CD /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
-		D35C9F691D74A4AB000443CD /* QuickDemo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = QuickDemo; sourceTree = BUILT_PRODUCTS_DIR; };
 		D3A2C8191D75FC2200E5DFAB /* _FileDescriptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = _FileDescriptor.swift; path = ../Packages/QuickProto/Sources/_FileDescriptor.swift; sourceTree = "<group>"; };
 		D3A2C81A1D75FC2200E5DFAB /* CodeBuilder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CodeBuilder.swift; path = ../Packages/QuickProto/Sources/CodeBuilder.swift; sourceTree = "<group>"; };
 		D3A2C81B1D75FC2200E5DFAB /* Field.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Field.swift; path = ../Packages/QuickProto/Sources/Field.swift; sourceTree = "<group>"; };
@@ -138,13 +112,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		D35C9F661D74A4AB000443CD /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		D3D692491D8380D800813DEC /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -212,7 +179,6 @@
 			isa = PBXGroup;
 			children = (
 				D35C9F341D74A1C0000443CD /* QuickProto.framework */,
-				D35C9F691D74A4AB000443CD /* QuickDemo */,
 				D3D6924C1D8380D800813DEC /* QuickProtoTests.xctest */,
 				D35BEA481D83B9AB00BB9230 /* QuickProtoGen.app */,
 			);
@@ -279,23 +245,6 @@
 			productReference = D35C9F341D74A1C0000443CD /* QuickProto.framework */;
 			productType = "com.apple.product-type.framework";
 		};
-		D35C9F681D74A4AB000443CD /* QuickDemo */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = D35C9F6F1D74A4AB000443CD /* Build configuration list for PBXNativeTarget "QuickDemo" */;
-			buildPhases = (
-				D35C9F651D74A4AB000443CD /* Sources */,
-				D35C9F661D74A4AB000443CD /* Frameworks */,
-				D35C9F671D74A4AB000443CD /* CopyFiles */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = QuickDemo;
-			productName = QuickDemo;
-			productReference = D35C9F691D74A4AB000443CD /* QuickDemo */;
-			productType = "com.apple.product-type.tool";
-		};
 		D3D6924B1D8380D800813DEC /* QuickProtoTests */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = D3D692561D8380D800813DEC /* Build configuration list for PBXNativeTarget "QuickProtoTests" */;
@@ -335,11 +284,6 @@
 						LastSwiftMigration = 0800;
 						ProvisioningStyle = Automatic;
 					};
-					D35C9F681D74A4AB000443CD = {
-						CreatedOnToolsVersion = 8.0;
-						DevelopmentTeam = EQHXZ8M8AV;
-						ProvisioningStyle = Automatic;
-					};
 					D3D6924B1D8380D800813DEC = {
 						CreatedOnToolsVersion = 8.0;
 						DevelopmentTeam = EQHXZ8M8AV;
@@ -361,7 +305,6 @@
 			projectRoot = "";
 			targets = (
 				D35C9F331D74A1C0000443CD /* QuickProto */,
-				D35C9F681D74A4AB000443CD /* QuickDemo */,
 				D3D6924B1D8380D800813DEC /* QuickProtoTests */,
 				D35BEA471D83B9AB00BB9230 /* QuickProtoGen */,
 			);
@@ -439,26 +382,6 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		D35C9F651D74A4AB000443CD /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				D33465771D828C6B00C8D159 /* _FileDescriptor.swift in Sources */,
-				D33465781D828C6B00C8D159 /* CodeBuilder.swift in Sources */,
-				D33465791D828C6B00C8D159 /* Field.swift in Sources */,
-				D334657A1D828C6B00C8D159 /* FieldDescriptor.swift in Sources */,
-				D334657B1D828C6B00C8D159 /* FieldLabel.swift in Sources */,
-				D334657C1D828C6B00C8D159 /* FieldType.swift in Sources */,
-				D334657D1D828C6B00C8D159 /* FileDescriptor.swift in Sources */,
-				D334657E1D828C6B00C8D159 /* FileDescriptorSet.swift in Sources */,
-				D334657F1D828C6B00C8D159 /* Message.swift in Sources */,
-				D33465801D828C6B00C8D159 /* MessageDescriptor.swift in Sources */,
-				D33465811D828C6B00C8D159 /* MessageReader.swift in Sources */,
-				D33465821D828C6B00C8D159 /* NSMutableData+Proto.swift in Sources */,
-				D33465831D828C6B00C8D159 /* WireType.swift in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 		D3D692481D8380D800813DEC /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -585,24 +508,6 @@
 			};
 			name = Release;
 		};
-		D35C9F6D1D74A4AB000443CD /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				DEVELOPMENT_TEAM = EQHXZ8M8AV;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_VERSION = 3.0;
-			};
-			name = Debug;
-		};
-		D35C9F6E1D74A4AB000443CD /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				DEVELOPMENT_TEAM = EQHXZ8M8AV;
-				PRODUCT_NAME = "$(TARGET_NAME)";
-				SWIFT_VERSION = 3.0;
-			};
-			name = Release;
-		};
 		D3D1C85F1D6D15D9002F1B53 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -729,6 +634,7 @@
 				D35BEA541D83B9AB00BB9230 /* Release */,
 			);
 			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
 		};
 		D35C9F391D74A1C0000443CD /* Build configuration list for PBXNativeTarget "QuickProto" */ = {
 			isa = XCConfigurationList;
@@ -739,15 +645,6 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
-		D35C9F6F1D74A4AB000443CD /* Build configuration list for PBXNativeTarget "QuickDemo" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				D35C9F6D1D74A4AB000443CD /* Debug */,
-				D35C9F6E1D74A4AB000443CD /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
 		D3D1C8551D6D15D9002F1B53 /* Build configuration list for PBXProject "QuickProto" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

+ 2 - 2
QuickProto/QuickProtoGen/AppDelegate.swift

@@ -47,8 +47,8 @@ let path = "/tmp/_FileDescriptor.swift"
 func regenerate() {
   let descriptorProtoURL = Bundle.main.url(forResource: "descriptor", withExtension: "out")
   let descriptorProtoData = try! Data(contentsOf: descriptorProtoURL!)
-  let descriptorMessage = FileDescriptorSet().readMessage(name:"FileDescriptorSet",
-                                                          proto:descriptorProtoData)!
+  let descriptorMessage = FileDescriptorSet().readMessage("FileDescriptorSet",
+                                                          data:descriptorProtoData)!
   let builder = CodeBuilder(descriptorMessage)
   try! builder.string().write(toFile:path,
                               atomically:false,

+ 66 - 66
QuickProto/QuickProtoTests/QuickProtoTests.swift

@@ -41,28 +41,28 @@ class QuickProtoTests: XCTestCase {
     if let sampleProtoURL = sampleProtoURL, let sampleMessageURL = sampleMessageURL {
 
       let sampleProtoData = try! Data(contentsOf: sampleProtoURL)
-      let fileDescriptorSet = FileDescriptorSet(proto:sampleProtoData as Data)
+      let fileDescriptorSet = FileDescriptorSet(data:sampleProtoData as Data)
 
       let sampleMessageData = try! Data(contentsOf: sampleMessageURL)
-      if let message = fileDescriptorSet.readMessage(name:"SampleMessage", proto:sampleMessageData) {
+      if let message = fileDescriptorSet.readMessage("SampleMessage", data:sampleMessageData) {
         XCTAssert(message.fieldCount() == 15)
-        XCTAssert(message.oneField(name:"d")!.double() == 1.23)
-        XCTAssert(message.oneField(name:"f")!.float() == 4.56)
-        XCTAssert(message.oneField(name:"i64")!.integer() == 1234567)
-        XCTAssert(message.oneField(name:"ui64")!.integer() == 1234567)
-        XCTAssert(message.oneField(name:"i32")!.integer() == 1234)
-        XCTAssert(message.oneField(name:"b")!.bool() == true)
-        XCTAssert(message.oneField(name:"text")!.string() == "Hello, world!")
-        XCTAssert(message.oneField(name:"ui32")!.integer() == 1234)
-        XCTAssert(message.oneField(name:"sf32")!.integer() == 1234)
-        XCTAssert(message.oneField(name:"sf64")!.integer() == 1234567)
-        XCTAssert(message.oneField(name:"si32")!.integer() == 1234)
-        XCTAssert(message.oneField(name:"si64")!.integer() == 1234567)
-        let inner = message.oneField(name:"message")!.message()
-        XCTAssert(inner.oneField(name:"text")!.string() == "ABCDEFG")
-        // XCTAssert(inner.oneField(name:"b")!.bool() == false)
-        XCTAssert(inner.oneField(name:"si32")!.integer() == -1234)
-        XCTAssert(inner.oneField(name:"si64")!.integer() == -1234567)
+        XCTAssert(message.oneField("d")!.double() == 1.23)
+        XCTAssert(message.oneField("f")!.float() == 4.56)
+        XCTAssert(message.oneField("i64")!.integer() == 1234567)
+        XCTAssert(message.oneField("ui64")!.integer() == 1234567)
+        XCTAssert(message.oneField("i32")!.integer() == 1234)
+        XCTAssert(message.oneField("b")!.bool() == true)
+        XCTAssert(message.oneField("text")!.string() == "Hello, world!")
+        XCTAssert(message.oneField("ui32")!.integer() == 1234)
+        XCTAssert(message.oneField("sf32")!.integer() == 1234)
+        XCTAssert(message.oneField("sf64")!.integer() == 1234567)
+        XCTAssert(message.oneField("si32")!.integer() == 1234)
+        XCTAssert(message.oneField("si64")!.integer() == 1234567)
+        let inner = message.oneField("message")!.message()
+        XCTAssert(inner.oneField("text")!.string() == "ABCDEFG")
+        // XCTAssert(inner.oneField("b")!.bool() == false)
+        XCTAssert(inner.oneField("si32")!.integer() == -1234)
+        XCTAssert(inner.oneField("si64")!.integer() == -1234567)
       }
     } else {
       XCTAssert(false)
@@ -74,71 +74,71 @@ class QuickProtoTests: XCTestCase {
     let sampleProtoURL = myBundle.url(forResource: "sample", withExtension: "out")
     if let sampleProtoURL = sampleProtoURL {
       let sampleProtoData = try! Data(contentsOf: sampleProtoURL)
-      let fileDescriptorSet = FileDescriptorSet(proto:sampleProtoData as Data)
+      let fileDescriptorSet = FileDescriptorSet(data:sampleProtoData)
       // construct an internal representation of a message
-      let message = fileDescriptorSet.createMessage(name:"SampleMessage")
+      let message = fileDescriptorSet.createMessage("SampleMessage")
       XCTAssert(message != nil)
       if let message = message {
-        message.addField(name:"d") {(field) in field.setDouble(-12.34)}
-        message.addField(name:"f") {(field) in field.setFloat(-56.78)}
-        message.addField(name:"i64") {(field) in field.setInt(123)}
-        message.addField(name:"ui64") {(field) in field.setInt(123456)}
-        message.addField(name:"i32") {(field) in field.setInt(123)}
-        message.addField(name:"f64") {(field) in field.setInt(123)}
-        message.addField(name:"f32") {(field) in field.setInt(123)}
-        message.addField(name:"b") {(field) in field.setBool(true)}
-        message.addField(name:"text") {(field) in field.setString("hello, world")}
-        message.addField(name:"message") {(field) in
-          let innerMessage = fileDescriptorSet.createMessage(name:"SampleMessage")!
-          innerMessage.addField(name:"text") {(field) in field.setString("inner message")}
-          innerMessage.addField(name:"i32") {(field) in field.setInt(54321)}
-          innerMessage.addField(name:"message") {(field) in
-            let innermostMessage = fileDescriptorSet.createMessage(name:"SampleMessage")!
-            innermostMessage.addField(name:"text") {(field) in field.setString("innermost message")}
-            innermostMessage.addField(name:"i32") {(field) in field.setInt(12345)}
+        message.addField("d") {(field) in field.setDouble(-12.34)}
+        message.addField("f") {(field) in field.setFloat(-56.78)}
+        message.addField("i64") {(field) in field.setInt(123)}
+        message.addField("ui64") {(field) in field.setInt(123456)}
+        message.addField("i32") {(field) in field.setInt(123)}
+        message.addField("f64") {(field) in field.setInt(123)}
+        message.addField("f32") {(field) in field.setInt(123)}
+        message.addField("b") {(field) in field.setBool(true)}
+        message.addField("text") {(field) in field.setString("hello, world")}
+        message.addField("message") {(field) in
+          let innerMessage = fileDescriptorSet.createMessage("SampleMessage")!
+          innerMessage.addField("text") {(field) in field.setString("inner message")}
+          innerMessage.addField("i32") {(field) in field.setInt(54321)}
+          innerMessage.addField("message") {(field) in
+            let innermostMessage = fileDescriptorSet.createMessage("SampleMessage")!
+            innermostMessage.addField("text") {(field) in field.setString("innermost message")}
+            innermostMessage.addField("i32") {(field) in field.setInt(12345)}
             field.setMessage(innermostMessage)
           }
           field.setMessage(innerMessage)
         }
-        message.addField(name:"data") {(field) in
+        message.addField("data") {(field) in
           let data = "ABCDEFG 123".data(using: .utf8)!
           field.setData(data)
         }
-        message.addField(name:"ui32") {(field) in field.setInt(123456)}
-        message.addField(name:"sf32") {(field) in field.setInt(123456)}
-        message.addField(name:"sf64") {(field) in field.setInt(123456)}
-        message.addField(name:"si32") {(field) in field.setInt(-123)}
-        message.addField(name:"si64") {(field) in field.setInt(-123)}
+        message.addField("ui32") {(field) in field.setInt(123456)}
+        message.addField("sf32") {(field) in field.setInt(123456)}
+        message.addField("sf64") {(field) in field.setInt(123456)}
+        message.addField("si32") {(field) in field.setInt(-123)}
+        message.addField("si64") {(field) in field.setInt(-123)}
 
         // serialize the message as a binary protocol buffer
         let data = message.serialize()
 
         // re-read it and check fields
-        let message2 = fileDescriptorSet.readMessage(name:"SampleMessage", proto:data)!
-        XCTAssert(message2.oneField(name:"d")!.double() == -12.34)
-        XCTAssert(message2.oneField(name:"f")!.float() == -56.78)
-        XCTAssert(message2.oneField(name:"i64")!.integer() == 123)
-        XCTAssert(message2.oneField(name:"ui64")!.integer() == 123456)
-        XCTAssert(message2.oneField(name:"i32")!.integer() == 123)
-        XCTAssert(message2.oneField(name:"f64")!.integer() == 123)
-        XCTAssert(message2.oneField(name:"f32")!.integer() == 123)
-        XCTAssert(message2.oneField(name:"b")!.bool() == true)
-        XCTAssert(message2.oneField(name:"text")!.string() == "hello, world")
-        XCTAssert(message2.oneField(name:"ui32")!.integer() == 123456)
-        XCTAssert(message2.oneField(name:"sf32")!.integer() == 123456)
-        XCTAssert(message2.oneField(name:"sf64")!.integer() == 123456)
-        XCTAssert(message2.oneField(name:"si32")!.integer() == -123)
-        XCTAssert(message2.oneField(name:"si64")!.integer() == -123)
+        let message2 = fileDescriptorSet.readMessage("SampleMessage", data:data)!
+        XCTAssert(message2.oneField("d")!.double() == -12.34)
+        XCTAssert(message2.oneField("f")!.float() == -56.78)
+        XCTAssert(message2.oneField("i64")!.integer() == 123)
+        XCTAssert(message2.oneField("ui64")!.integer() == 123456)
+        XCTAssert(message2.oneField("i32")!.integer() == 123)
+        XCTAssert(message2.oneField("f64")!.integer() == 123)
+        XCTAssert(message2.oneField("f32")!.integer() == 123)
+        XCTAssert(message2.oneField("b")!.bool() == true)
+        XCTAssert(message2.oneField("text")!.string() == "hello, world")
+        XCTAssert(message2.oneField("ui32")!.integer() == 123456)
+        XCTAssert(message2.oneField("sf32")!.integer() == 123456)
+        XCTAssert(message2.oneField("sf64")!.integer() == 123456)
+        XCTAssert(message2.oneField("si32")!.integer() == -123)
+        XCTAssert(message2.oneField("si64")!.integer() == -123)
 
-        let inner2 = message2.oneField(name:"message")!.message()
-        XCTAssert(inner2.oneField(name:"text")!.string() == "inner message")
-        XCTAssert(inner2.oneField(name:"i32")!.integer() == 54321)
+        let inner2 = message2.oneField("message")!.message()
+        XCTAssert(inner2.oneField("text")!.string() == "inner message")
+        XCTAssert(inner2.oneField("i32")!.integer() == 54321)
 
-        let inner3 = inner2.oneField(name:"message")!.message()
-        XCTAssert(inner3.oneField(name:"text")!.string() == "innermost message")
-        XCTAssert(inner3.oneField(name:"i32")!.integer() == 12345)
+        let inner3 = inner2.oneField("message")!.message()
+        XCTAssert(inner3.oneField("text")!.string() == "innermost message")
+        XCTAssert(inner3.oneField("i32")!.integer() == 12345)
 
-        let data2 = message2.oneField(name:"data")!.data()
+        let data2 = message2.oneField("data")!.data()
         XCTAssert( String(data: data2, encoding:.utf8) == "ABCDEFG 123")
       }
     }