Hi guys,

*Background:*
I'm currently building/prototyping a modified version of the protoc 
java-compiler. I need to change some things from the 
standard-implementation for my usecase, but want to keep most of it.
To avoid starting from scratch I copied the java-generation-code to my own 
project and started to modify it. I'm a java-dev, so C++ proves to be quite 
the challenge, but I'm learning a lot and am nearly finished with what I 
wanted to do. However now I'm stuck and need your help.

Here is a quick overview of the relevant folders in my project ( 
https://github.com/leohilbert/protoc-gen-java-leo ):

   - *include-folder*: "h-files" that I copied over (otherwise no classes 
   from the protoc-libraries were found)
   - *java-folder*: for my java-library. Also contains my test-proto-files 
   for now (java/src/test/proto).
   - *src/google/protobuf/compiler/java_leo*: copied and modifed 
   java-generation code from the official repo
   - *src/javaleo/proto*: the generated c++ code for my custom FieldOption 
   (java/src/test/proto/options.proto)
   
btw: if you have any feedback on my setup, it's greatly appreciated! I'm a 
C++ noob and trying to understand everything as I go. :) 

*Now to my actual problem:*
If you navigate to src/google/protobuf/compiler/java_leo/java_field.cc 
<https://github.com/leohilbert/protoc-gen-java-leo/blob/master/src/google/protobuf/compiler/java_leo/java_field.cc>
 in 
line 64 you can see that I'm trying to read the value from my custom-field 
option by calling 
string test = field->options().GetExtension(javaleo::proto::javatype);

This is *always *empty. Although I imported and used this exact custom 
FieldOption 
<https://github.com/leohilbert/protoc-gen-java-leo/blob/master/java/src/test/proto/options.proto>
 
in my addressbook.proto 
<https://github.com/leohilbert/protoc-gen-java-leo/blob/master/java/src/test/proto/addressbook.proto>
.
The C++-Class for the option.proto is also generated and add in the 
CMakeList (src/javaleo/proto).
"javaleo::proto::javatype" *does* compile, so at least it seems to be in 
the executable somewhere.

What makes me suspicious is that I did not register this custom-extension 
anywhere in my code. I'm thinking of something like 
"ExtensionRegistry.registerExtension(javaleo::proto::javatype);" to add to 
the beginning of my plugin (main.cpp). Otherwise how should protoc know how 
this field should be interpreted. Am I on the right track here, or did I 
understand this whole system wrong.

I debugged this a lot already and am running out of ideas. Searching for a 
solution online is also really tricky, because not a lot of people have 
compiled there own protoc-compiler.. But maybe I'm looking in the wrong 
direction.

I hope my issue is somewhat clear, it's hard describing it when knowing so 
little about c++ and how protoc works internally.. ^^

TLDR: I need to get the value of my custom-option during code-generation, 
but my field-option is always ignored. Help :c

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/8135f496-9ec3-4e0d-bff2-dd37d85792bc%40googlegroups.com.

Reply via email to