> On 5. Mar 2019, at 19:06, HenrikNergaard5 <h_...@hotmail.com> wrote:
> 
> Hi Holger,
> 
>> My plan of action is to start with a protobuf compiler/model and then look
>> into binding the gRPC C implementation to Pharo. 
> 
> I have an almost complete parser and compiler (class generation)
> implementation of protobuf in Pharo around somewhere...
> I cant quite remember the state of it, but I think everything is implemented
> parsing wise expect the gRPC part.
> 
> Instead of using slots the compiler generates accessor methods for each
> variable, initialization, custom encoding and decoding based on its message
> definition.

That would be good timing. I have hand created enough descriptions to be able 
to materialize the descriptor.proto (the model definition in itself) and class 
generation is next.

I have experimented (by using the right super class) with automatic selector 
creation and I think it will work if tweaked to handle collections/repeated 
fields correctly.

A class/type definition currently reads as:

PBTypeMessage subclass: #GBPFieldDescriptorProto
        slots: { #name => (PBTypeString asSlot fieldName: 'name'; fieldNumber: 
1; beOptional). 
                                #extendee => (PBTypeString asSlot fieldName: 
'extendee'; fieldNumber: 2; beOptional). 
                                #number => (PBTypeInt32 asSlot fieldName: 
'number'; fieldNumber: 3; beOptional). 
                                #label => (GBPFieldDescriptorProto_Label asSlot 
fieldName: 'label'; fieldNumber: 4; beOptional). 
                                #type => (GBPFieldDescriptorProto_Type asSlot 
fieldName: 'type'; fieldNumber: 5; beOptional). 
                                #type_name => (PBTypeString asSlot fieldName: 
'type_name'; fieldNumber: 6; beOptional). 
                                #default_value => (PBTypeString asSlot 
fieldName: 'default_value'; fieldNumber: 7; beOptional). 
                                #options => (GBPFieldOptions asSlot fieldName: 
'options'; fieldNumber: 8; beOptional). 
                                #json_name => (PBTypeString asSlot fieldName: 
'json_name'; fieldNumber: 10; beOptional) }
        classVariables: {  }
        package: 'Protobuf-Compiler-Definitions'


> i can probably dig it up and make it publicly available if it is of
> interest.

That would be helpful!


> 
> Best regards,
> Henrik
> 
> 
> 
> --
> Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
> 


Reply via email to