Here is way to do it without code generation. 

When we are developing compiler plugin....it is not feasible to use code 
generated c++.

I think the following solution works:
const Reflection *reflection= message.GetReflection();
std::vector<const FieldDescriptor *> l_fields;
reflection.ListFields( message, &fields );

Once we have FieldDescriptor, then it is usual business
 



On Friday, December 6, 2019 at 7:31:00 PM UTC+1, Nadav Samet wrote:
>
> KakshmiKanth, in addition, please take a look at HasExtension and 
> GetExtension: 
> https://developers.google.com/protocol-buffers/docs/reference/cpp-generated#extension
>  to 
> get your extension field from FieldOptions.
>
> On Fri, Dec 6, 2019 at 10:26 AM 'Adam Cozzette' via Protocol Buffers <
> [email protected] <javascript:>> wrote:
>
>> FieldOptions is just a proto message defined in descriptor.proto: 
>> https://github.com/protocolbuffers/protobuf/blob/2220670ed97fb5d52868a0316054748e6354b6aa/src/google/protobuf/descriptor.proto#L509
>>
>> On Fri, Dec 6, 2019 at 5:33 AM LakshmiKanth Gupta <[email protected] 
>> <javascript:>> wrote:
>>
>>> Finally I have figured out whether a field has options or not.
>>>
>>> Unfortunately every field in message is associated with FieldOptions. By 
>>> default, each field has DefaultOptions .So I could make pointer comparision 
>>> and say whether a field has Custom field options or not.
>>>
>>>
>>> Final question remains: How do I know the attributes of FieldOptions.
>>>
>>>
>>>
>>> On Friday, December 6, 2019 at 5:01:49 AM UTC+1, LakshmiKanth Gupta 
>>> wrote:
>>>>
>>>> Yes.I am developing protoc plugin using c++.But I didn't find any 
>>>> function to do that. Could somebody help me with that. Also couldn't find 
>>>> the information of the options.
>>>>
>>>> I am using following code:
>>>>
>>>> FieldOptions l_options= m_record->field(i)->options();
>>>>
>>>> From here I couldn't figure out how I can look at these options.
>>>>
>>>>
>>>>
>>>>
>>>> On Thursday, December 5, 2019 at 11:43:37 PM UTC+1, Adam Cozzette wrote:
>>>>>
>>>>> I assume your converter is set up as a protoc plugin? In that case you 
>>>>> can examine the descriptor for each field to see if it has a custom 
>>>>> option 
>>>>> defined or not. The details depend on the language you are using, though.
>>>>>
>>>>> On Thu, Dec 5, 2019 at 12:26 PM LakshmiKanth Gupta <[email protected]> 
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Currently I am writing a convertor from proto format to ttcn3 format.
>>>>>>
>>>>>> Messages which I have defined has some custom Field options. How can 
>>>>>> I check whether a field has custom options or not.
>>>>>>
>>>>>>
>>>>>> syntax="proto3";
>>>>>> import "google/protobuf/descriptor.proto"
>>>>>> extend google.protobuf.FieldOptions{
>>>>>>    bool presence=50001;
>>>>>> }
>>>>>>
>>>>>> message Mymessage
>>>>>> {
>>>>>>     int32 foo=1[(presence)=true];
>>>>>>     string bar=2;
>>>>>> }
>>>>>>
>>>>>> This is my file. I would like to know when my convertor is invoked 
>>>>>> using protoc whether a field has options defined or not.
>>>>>>
>>>>>> Thanks in advance,
>>>>>>
>>>>>> with best regards,
>>>>>>   Gupta
>>>>>>
>>>>>> -- 
>>>>>> 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 [email protected].
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/protobuf/87e492fa-3535-4ee3-b391-f1bb6362f9ad%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/protobuf/87e492fa-3535-4ee3-b391-f1bb6362f9ad%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> -- 
>>> 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 [email protected] <javascript:>.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/protobuf/ead37db8-2237-4de5-9cfb-625af0a394d6%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/protobuf/ead37db8-2237-4de5-9cfb-625af0a394d6%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> -- 
>> 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 [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/protobuf/CADqAXr57Eofka0-qr%3Dn4CkhqsY%2B6Qf8-Kvuugp5r4%2BE8TBGeXw%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/protobuf/CADqAXr57Eofka0-qr%3Dn4CkhqsY%2B6Qf8-Kvuugp5r4%2BE8TBGeXw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
>
>
> -- 
> -Nadav
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/protobuf/6acfb858-f035-4c87-a3cd-c1a123585887%40googlegroups.com.

Reply via email to