content: {-# LANGUAGE BangPatterns, DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses #-}
  module MachineLearning.Protobufs.Forest (Forest(..)) where
  import Prelude ((+), (/))
  import qualified Prelude as Prelude'
  import qualified Data.Typeable as Prelude'
  import qualified Data.Data as Prelude'
  import qualified Text.ProtocolBuffers.Header as P'
  import qualified MachineLearning.Protobufs.Rescaling as Protobufs (Rescaling)
  import qualified MachineLearning.Protobufs.TreeNode as Protobufs (TreeNode)
   
  data Forest = Forest{trees :: !(P'.Seq Protobufs.TreeNode), rescaling :: !(P'.Maybe Protobufs.Rescaling)}
              deriving (Prelude'.Show, Prelude'.Eq, Prelude'.Ord, Prelude'.Typeable, Prelude'.Data)
   
  instance P'.Mergeable Forest where
    mergeAppend (Forest x'1 x'2) (Forest y'1 y'2) = Forest (P'.mergeAppend x'1 y'1) (P'.mergeAppend x'2 y'2)
   
  instance P'.Default Forest where
    defaultValue = Forest P'.defaultValue (Prelude'.Just (Prelude'.read "NONE"))
   
  instance P'.Wire Forest where
    wireSize ft' self'@(Forest x'1 x'2)
     = case ft' of
         10 -> calc'Size
         11 -> P'.prependMessageSize calc'Size
         _ -> P'.wireSizeErr ft' self'
      where
          calc'Size = (P'.wireSizeRep 1 11 x'1 + P'.wireSizeOpt 1 14 x'2)
    wirePut ft' self'@(Forest x'1 x'2)
     = case ft' of
         10 -> put'Fields
         11 -> do
                 P'.putSize (P'.wireSize 10 self')
                 put'Fields
         _ -> P'.wirePutErr ft' self'
      where
          put'Fields
           = do
               P'.wirePutRep 10 11 x'1
               P'.wirePutOpt 16 14 x'2
    wireGet ft'
     = case ft' of
         10 -> P'.getBareMessageWith update'Self
         11 -> P'.getMessageWith update'Self
         _ -> P'.wireGetErr ft'
      where
          update'Self wire'Tag old'Self
           = case wire'Tag of
               10 -> Prelude'.fmap (\ !new'Field -> old'Self{trees = P'.append (trees old'Self) new'Field}) (P'.wireGet 11)
               16 -> Prelude'.fmap (\ !new'Field -> old'Self{rescaling = Prelude'.Just new'Field}) (P'.wireGet 14)
               _ -> let (field'Number, wire'Type) = P'.splitWireTag wire'Tag in P'.unknown field'Number wire'Type old'Self
   
  instance P'.MessageAPI msg' (msg' -> Forest) Forest where
    getVal m' f' = f' m'
   
  instance P'.GPB Forest
   
  instance P'.ReflectDescriptor Forest where
    getMessageInfo _ = P'.GetMessageInfo (P'.fromDistinctAscList []) (P'.fromDistinctAscList [10, 16])
    reflectDescriptorInfo _
     = Prelude'.read
        "DescriptorInfo {descName = ProtoName {protobufName = FIName \".protobufs.Forest\", haskellPrefix = [MName \"MachineLearning\"], parentModule = [MName \"Protobufs\"], baseName = MName \"Forest\"}, descFilePath = [\"MachineLearning\",\"Protobufs\",\"Forest.hs\"], isGroup = False, fields = fromList [FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".protobufs.Forest.trees\", haskellPrefix' = [MName \"MachineLearning\"], parentModule' = [MName \"Protobufs\",MName \"Forest\"], baseName' = FName \"trees\"}, fieldNumber = FieldId {getFieldId = 1}, wireTag = WireTag {getWireTag = 10}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = True, mightPack = False, typeCode = FieldType {getFieldType = 11}, typeName = Just (ProtoName {protobufName = FIName \".protobufs.TreeNode\", haskellPrefix = [MName \"MachineLearning\"], parentModule = [MName \"Protobufs\"], baseName = MName \"TreeNode\"}), hsRawDefault = Nothing, hsDefault = Nothing},FieldInfo {fieldName = ProtoFName {protobufName' = FIName \".protobufs.Forest.rescaling\", haskellPrefix' = [MName \"MachineLearning\"], parentModule' = [MName \"Protobufs\",MName \"Forest\"], baseName' = FName \"rescaling\"}, fieldNumber = FieldId {getFieldId = 2}, wireTag = WireTag {getWireTag = 16}, packedTag = Nothing, wireTagLength = 1, isPacked = False, isRequired = False, canRepeat = False, mightPack = False, typeCode = FieldType {getFieldType = 14}, typeName = Just (ProtoName {protobufName = FIName \".protobufs.Rescaling\", haskellPrefix = [MName \"MachineLearning\"], parentModule = [MName \"Protobufs\"], baseName = MName \"Rescaling\"}), hsRawDefault = Just \"NONE\", hsDefault = Just (HsDef'Enum \"NONE\")}], keys = fromList [], extRanges = [], knownKeys = fromList [], storeUnknown = False, lazyFields = False}"