packages feed

protocol-buffers (empty) → 0.0.1

raw patch · 25 files changed

+382/−0 lines, 25 filessetup-changed

Files

+ LICENSE view
@@ -0,0 +1,10 @@+Copyright (c) 2008, Christopher Edward Kuklewicz+All rights reserved.++Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:++    * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.+    * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.+    * Neither the name of the copyright holder nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMainWithHooks defaultUserHooks
+ doc.txt view
@@ -0,0 +1,30 @@+By Chris Kukelwicz, started 2008-07-08++I am uploading this to hackage early, in case someone wished to avoid+duplicating effort.++http://code.google.com/apis/protocolbuffers/docs/overview.html+http://code.google.com/p/protobuf/downloads/list+http://groups.google.com/group/protobuf+http://code.google.com/apis/protocolbuffers/docs/proto.html++In particular you need 'descriptor.proto' from the source from Google.+This file describes the programatic representation of a ".proto" file.++to bootstrap:++DONE (1) Decide on how to make the namespaces work+DONE (2) Manually translate 'descriptor.proto' into basic data types under its "DescriptorProtos" namespace+     (3) Write Parsec parser that can load 'descriptor.proto' into basic data types from (2)+     (4) Write automatic translator that can generate haskell source to replace (2) using parsed data from (3)+     (5) Expand (3) to handle full specification for '.proto' files+     (5) Add API (see Java/Python/C++ APIs) to manipulate data/messages/enums/groups/extensions+     (6) Expand (4) to create stub instances for API in (5)+     (7) Implement stub instances for serializing to and from the wire (use Data.Binary ?)+     (8) Implement stub instances for 'rpc' calls++The self-hosting nature of "DescriptorProtos" means that opportunities+for type safety are being lost.  The ranges of the integers and+contents of the strings are not part of the '.proto' file, so the+generated data structures do not reflect bounds or encodings.  The+parser in (3) can be tweaked to use more fine-grained (new)types.
+ protocol-buffers.cabal view
@@ -0,0 +1,72 @@+name: protocol-buffers+version: 0.0.1+cabal-version: >= 1.2+build-type: Simple+license: BSD3+license-file: LICENSE+copyright: (c) 2008 Christopher Edward Kuklewicz+author: Christopher Edward Kuklewicz+maintainer: Chris Kuklewicz <protobuf@personal.mightyreason.com>+stability: vapor+-- homepage: http://hackage.haskell.org/+-- package-url: URL+synopsis: Parse Google Protocol Buffer specifications+description: Parse http://code.google.com/apis/protocolbuffers/docs/proto.html+  and perhaps general haskell code to use them+category: Language+Tested-With: GHC ==6.8.3+-- data-files:+extra-source-files: Setup.hs+                    doc.txt+-- extra-tmp-files:++Library+  hs-source-dirs: ./src+  exposed-modules: DescriptorProtos+                   DescriptorProtos.DescriptorProto.ExtensionRange+                   DescriptorProtos.DescriptorProto+                   DescriptorProtos.EnumDescriptorProto+                   DescriptorProtos.EnumOptions+                   DescriptorProtos.EnumValueDescriptorProto+                   DescriptorProtos.EnumValueOptions+                   DescriptorProtos.FieldDescriptorProto.Label+                   DescriptorProtos.FieldDescriptorProto.Type+                   DescriptorProtos.FieldDescriptorProto+                   DescriptorProtos.FieldOptions.CType+                   DescriptorProtos.FieldOptions+                   DescriptorProtos.FileDescriptorProto+                   DescriptorProtos.FileOptions.OptimizeMode+                   DescriptorProtos.FileOptions+                   DescriptorProtos.MessageOptions+                   DescriptorProtos.MethodDescriptorProto+                   DescriptorProtos.MethodOptions+                   DescriptorProtos.ServiceDescriptorProto+                   DescriptorProtos.ServiceOptions+                   ProtocolBuffers.Header+--   build-depends:++-- Executable proto-hs+--   main-is:+--   build-depends:++-- buildable:+-- other-modules:+-- hs-source-dirs:+-- extensions:+-- build-tools:+-- ghc-options:  token list+-- ghc-prof-options: token list+-- ghc-shared-options: token list+-- hugs-options: token list+-- nhc98-options: token list+-- includes: filename list+-- install-includes: filename list+-- include-dirs: directory list+-- c-sources: filename list+-- extra-libraries: token list+-- extra-lib-dirs: directory list+-- cc-options: token list+-- ld-options: token list+-- pkgconfig-depends: package list+-- frameworks: token list+
+ src/DescriptorProtos.hs view
@@ -0,0 +1,20 @@+module DescriptorProtos.DescriptorProtos() where++import qualified DescriptorProtos.DescriptorProto as DescriptorProtos(DescriptorProto) +import qualified DescriptorProtos.DescriptorProto.ExtensionRange as DescriptorProtos.DescriptorProto(ExtensionRange)+import qualified DescriptorProtos.EnumDescriptorProto as DescriptorProtos(EnumDescriptorProto) +import qualified DescriptorProtos.EnumOptions as DescriptorProtos(EnumOptions)+import qualified DescriptorProtos.EnumValueDescriptorProto as DescriptorProtos(EnumValueDescriptorProto)+import qualified DescriptorProtos.EnumValueOptions as DescriptorProtos(EnumValueOptions) +import qualified DescriptorProtos.FieldDescriptorProto as DescriptorProtos(FieldDescriptorProto) +import qualified DescriptorProtos.FieldDescriptorProto.Label as DescriptorProtos.FieldDescriptorProto(Label)+import qualified DescriptorProtos.FieldDescriptorProto.Type as DescriptorProtos.FieldDescriptorProto(Type)+import qualified DescriptorProtos.FieldOptions as DescriptorProtos(FieldOptions)+import qualified DescriptorProtos.FieldOptions.CType as DescriptorProtos.FieldOptions(CType)+import qualified DescriptorProtos.FileOptions as DescriptorProtos(FileOptions)+import qualified DescriptorProtos.FileOptions.OptimizeMode as DescriptorProtos.FileOptions(OptimizeMode)+import qualified DescriptorProtos.MessageOptions as DescriptorProtos(MessageOptions)+import qualified DescriptorProtos.MethodDescriptorProto as DescriptorProtos(MethodDescriptorProto)+import qualified DescriptorProtos.MethodOptions as DescriptorProtos(MethodOptions)+import qualified DescriptorProtos.ServiceDescriptorProto as DescriptorProtos(ServiceDescriptorProto) +import qualified DescriptorProtos.ServiceOptions as DescriptorProtos(ServiceOptions)
+ src/DescriptorProtos/DescriptorProto.hs view
@@ -0,0 +1,20 @@+module DescriptorProtos.DescriptorProto+  (DescriptorProto(..))+ where++import ProtocolBuffers.Header+import qualified DescriptorProtos.FileOptions as DescriptorProtos(FileOptions)+import qualified DescriptorProtos.EnumDescriptorProto as DescriptorProtos(EnumDescriptorProto) +import qualified DescriptorProtos.FieldDescriptorProto as DescriptorProtos(FieldDescriptorProto) +import qualified DescriptorProtos.MessageOptions as DescriptorProtos(MessageOptions)+import qualified DescriptorProtos.DescriptorProto.ExtensionRange as DescriptorProtos.DescriptorProto(ExtensionRange)++data DescriptorProto = DescriptorProto+    { name :: Maybe String+    , field :: Seq DescriptorProtos.FieldDescriptorProto+    , extension :: Seq DescriptorProtos.FieldDescriptorProto+    , nested_type :: Seq DescriptorProto+    , enum_type :: Seq DescriptorProtos.EnumDescriptorProto+    , extension_range :: Seq DescriptorProtos.DescriptorProto.ExtensionRange+    , options :: Maybe DescriptorProtos.MessageOptions+    }
+ src/DescriptorProtos/DescriptorProto/ExtensionRange.hs view
@@ -0,0 +1,10 @@+module DescriptorProtos.DescriptorProto.ExtensionRange+  (ExtensionRange(..))+ where++import ProtocolBuffers.Header++data ExtensionRange = ExtensionRange+    { start :: Int32+    , end :: Int32+    }
+ src/DescriptorProtos/EnumDescriptorProto.hs view
@@ -0,0 +1,14 @@+module DescriptorProtos.EnumDescriptorProto+  (EnumDescriptorProto(..))+ where++import ProtocolBuffers.Header++import qualified DescriptorProtos.EnumValueDescriptorProto as DescriptorProtos(EnumValueDescriptorProto)+import qualified DescriptorProtos.EnumOptions as DescriptorProtos(EnumOptions)++data EnumDescriptorProto = EnumDescriptorProto+    { name :: Maybe String+    , value :: Seq DescriptorProtos.EnumValueDescriptorProto+    , options :: Maybe DescriptorProtos.EnumOptions+    }
+ src/DescriptorProtos/EnumOptions.hs view
@@ -0,0 +1,7 @@+module DescriptorProtos.EnumOptions+  (EnumOptions(..))+ where++import ProtocolBuffers.Header++data EnumOptions = EnumOptions
+ src/DescriptorProtos/EnumValueDescriptorProto.hs view
@@ -0,0 +1,12 @@+module DescriptorProtos.EnumValueDescriptorProto+  (EnumValueDescriptorProto(..))+ where++import ProtocolBuffers.Header+import qualified DescriptorProtos.EnumValueOptions as DescriptorProtos(EnumValueOptions) ++data EnumValueDescriptorProto = EnumValueDescriptorProto+    { name :: Maybe String+    , number :: Maybe Int32+    , options :: Maybe DescriptorProtos.EnumValueOptions+    }
+ src/DescriptorProtos/EnumValueOptions.hs view
@@ -0,0 +1,7 @@+module DescriptorProtos.EnumValueOptions+  (EnumValueOptions(..))+ where++import ProtocolBuffers.Header++data EnumValueOptions = EnumValueOptions
+ src/DescriptorProtos/FieldDescriptorProto.hs view
@@ -0,0 +1,19 @@+module DescriptorProtos.FieldDescriptorProto+  (FieldDescriptorProto(..))+ where++import ProtocolBuffers.Header+import qualified DescriptorProtos.FieldDescriptorProto.Label as DescriptorProtos.FieldDescriptorProto(Label)+import qualified DescriptorProtos.FieldDescriptorProto.Type as DescriptorProtos.FieldDescriptorProto(Type)+import qualified DescriptorProtos.FieldOptions as DescriptorProtos(FieldOptions)++data FieldDescriptorProto = FieldDescriptorProto+    { name :: Maybe String+    , number :: Maybe Int32+    , labelEnum :: Maybe DescriptorProtos.FieldDescriptorProto.Label+    , typeEnum :: Maybe DescriptorProtos.FieldDescriptorProto.Type+    , type_name :: Maybe String+    , extendee :: Maybe String+    , default_value :: Maybe String+    , options :: Maybe DescriptorProtos.FieldOptions+    }
+ src/DescriptorProtos/FieldDescriptorProto/Label.hs view
@@ -0,0 +1,12 @@+module DescriptorProtos.FieldDescriptorProto.Label+  (Label(..))+ where++import ProtocolBuffers.Header++data Label = LABEL_OPTIONAL+           | LABEL_REQUIRED+           | LABEL_REPEATED+  deriving (Show,Eq,Ord,Typeable,Data)++
+ src/DescriptorProtos/FieldDescriptorProto/Type.hs view
@@ -0,0 +1,25 @@+module DescriptorProtos.FieldDescriptorProto.Type+  (Type(..))+ where++import ProtocolBuffers.Header++data Type = TYPE_DOUBLE+          | TYPE_FLOAT+          | TYPE_INT64    -- inefficient for negative values+          | TYPE_UINT64+          | TYPE_INT32    -- inefficient for negative values+          | TYPE_FIXED64+          | TYPE_FIXED32+          | TYPE_BOOL+          | TYPE_STRING+          | TYPE_GROUP      -- Tag-delimited aggregate.+          | TYPE_MESSAGE    -- Length-delimeted aggegate+            -- descriptor.proto "New in version 2"+          | TYPE_BYTES+          | TYPE_UINT32+          | TYPE_ENUM+          | TYPE_SFIXED32+          | TYPE_SFIXED64+          | TYPE_SINT32 -- Uses ZipZag encoding+          | TYPE_SINT64 -- Uses ZipZag encoding
+ src/DescriptorProtos/FieldOptions.hs view
@@ -0,0 +1,12 @@+module DescriptorProtos.FieldOptions+  (FieldOptions(..))+ where++import ProtocolBuffers.Header++import qualified DescriptorProtos.FieldOptions.CType as DescriptorProtos.FieldOptions(CType)++data FieldOptions = FieldOptions+    { ctype :: Maybe DescriptorProtos.FieldOptions.CType+    , experimental_map_key :: Maybe String+    }
+ src/DescriptorProtos/FieldOptions/CType.hs view
@@ -0,0 +1,7 @@+module DescriptorProtos.FieldOptions.CType+  (CType(..))+ where++import ProtocolBuffers.Header++data CType = CORD | STRING_PIECE
+ src/DescriptorProtos/FileDescriptorProto.hs view
@@ -0,0 +1,21 @@+module DescriptorProtos.FileDescriptorProto+  (FileDescriptorProto(..))+ where++import ProtocolBuffers.Header+import qualified DescriptorProtos.DescriptorProto as DescriptorProtos(DescriptorProto) +import qualified DescriptorProtos.EnumDescriptorProto as DescriptorProtos(EnumDescriptorProto) +import qualified DescriptorProtos.FieldDescriptorProto as DescriptorProtos(FieldDescriptorProto) +import qualified DescriptorProtos.FileOptions as DescriptorProtos(FileOptions)+import qualified DescriptorProtos.ServiceDescriptorProto as DescriptorProtos(ServiceDescriptorProto) ++data FileDescriptorProto = FileDescriptorProto+    { name :: Maybe String+    , package :: Maybe String+    , dependency :: Seq String+    , message_type :: Seq DescriptorProtos.DescriptorProto+    , enum_type :: Seq DescriptorProtos.EnumDescriptorProto+    , service :: Seq DescriptorProtos.ServiceDescriptorProto+    , extension :: Seq DescriptorProtos.FieldDescriptorProto+    , options :: Maybe DescriptorProtos.FileOptions+    }
+ src/DescriptorProtos/FileOptions.hs view
@@ -0,0 +1,13 @@+module DescriptorProtos.FileOptions+  (FileOptions(..))+ where++import ProtocolBuffers.Header+import qualified DescriptorProtos.FileOptions.OptimizeMode as DescriptorProtos.FileOptions(OptimizeMode)++data FileOptions = FileOptions+    { java_package :: Maybe String+    , java_outer_classname :: Maybe String+    , java_multiple_files :: Maybe Bool+    , optimize_for :: Maybe DescriptorProtos.FileOptions.OptimizeMode+    }
+ src/DescriptorProtos/FileOptions/OptimizeMode.hs view
@@ -0,0 +1,10 @@+module DescriptorProtos.FileOptions.OptimizeMode+  (OptimizeMode(..))+ where++import ProtocolBuffers.Header++data OptimizeMode = SPEED | CODE_SIZE+  deriving (Show,Eq,Ord,Typeable)++
+ src/DescriptorProtos/MessageOptions.hs view
@@ -0,0 +1,9 @@+module DescriptorProtos.MessageOptions+  (MessageOptions(..))+ where++import ProtocolBuffers.Header++data MessageOptions = MessageOptions+    { message_set_wire_format :: Maybe Bool+    }
+ src/DescriptorProtos/MethodDescriptorProto.hs view
@@ -0,0 +1,13 @@+module DescriptorProtos.MethodDescriptorProto+  (MethodDescriptorProto(..))+ where++import ProtocolBuffers.Header+import qualified DescriptorProtos.MethodOptions as DescriptorProtos(MethodOptions)++data MethodDescriptorProto = MethodDescriptorProto+    { name :: Maybe String+    , input_type :: Maybe String+    , output_type :: Maybe String+    , options :: Maybe DescriptorProtos.MethodOptions+    }
+ src/DescriptorProtos/MethodOptions.hs view
@@ -0,0 +1,7 @@+module DescriptorProtos.MethodOptions+  (MethodOptions(..))+ where++import ProtocolBuffers.Header++data MethodOptions = MethodOptions
+ src/DescriptorProtos/ServiceDescriptorProto.hs view
@@ -0,0 +1,14 @@+module DescriptorProtos.ServiceDescriptorProto+  (ServiceDescriptorProto(..))+ where++import ProtocolBuffers.Header++import qualified DescriptorProtos.MethodDescriptorProto as DescriptorProtos(MethodDescriptorProto)+import qualified DescriptorProtos.ServiceOptions as DescriptorProtos(ServiceOptions)++data ServiceDescriptorProto = ServiceDescriptorProto+    { name :: Maybe String+    , method :: Seq DescriptorProtos.MethodDescriptorProto+    , options :: Maybe DescriptorProtos.ServiceOptions+    }
+ src/DescriptorProtos/ServiceOptions.hs view
@@ -0,0 +1,7 @@+module DescriptorProtos.ServiceOptions+  (ServiceOptions(..))+ where++import ProtocolBuffers.Header++data ServiceOptions = ServiceOptions
+ src/ProtocolBuffers/Header.hs view
@@ -0,0 +1,9 @@+module ProtocolBuffers.Header (UArray,ByteString,Data(..),Int32,Int64,Seq,Typeable(..),Word32,Word64) where++import Data.Array.Unboxed(UArray)+import Data.ByteString(ByteString)+import Data.Generics(Data(..))+import Data.Int(Int32,Int64)+import Data.Sequence(Seq)+import Data.Typeable(Typeable(..))+import Data.Word(Word32,Word64)