I agree it doesn’t make sense to deploy *.java or /.cc files. What I
meant to deploy is *.h + precompiled .lib files or in java case it
will be *.class packaged in a jar or similar.

Anyway, just an idea.

On Jan 26, 3:37 pm, Henner Zeller <henner.zel...@googlemail.com>
wrote:
> On Wed, Jan 26, 2011 at 15:16, George <george.georg...@hotmail.com> wrote:
> > Hi,
>
> > Sorry for the delayed response I was out a few days.
>
> > Determine if the .proto is valid: if we are not importing
> > another .proto but just having forward message declaration this
> > doesn’t apply.
>
> > I don’t think if we agree that the forward concept is valuable it will
> > be a problem to find a protocol that will allow specifying all of the
> > needed information. It doesn’t look so much for me.
>
> >> To use the .proto, you need to build the imported proto files anyway, so
> > even if you could capture all of this in a simple forward-declaration-
> > type
> > scheme, I don't think you would save very much.
>
> > You will be able to see saving in this relation only if you start
> > thinking in multiple layers. If we have a single project this feature
> > obviously doesn’t make so much sense, but imagine you have a library L
> > that is used from Products P1 and P2. Let’s have some proto files
> > declared and compiled in L.
>
> > With the current functionality if I want to use a message declared in
> > L from a P1 I will need to deploy not only the language specific
> > interface say *.h file, but also the proto file itself.
>
> Well, doesn't it make sense to deploy the _source_ file of your
> protocol buffer, not the language specific thing it is compiled into
> (the *.cc,*.h or *.java) ? After all, this is the build process, and
> deploying the *.h/*.cc is more complicated than the source file.
>
> Often it is good to take a step back and think _why_ one would like to
> have a specific feature. While in some cases there is a need for
> forward declarations (e.g. cyclic dependencies in systems that don't
> resolve these on compilation unit level), this is not the problem you
> want to solve. Your problem is that you want to cut dependencies by
> underspecifying the information not necessary for 'the other user'.
>
> If you are indeed in that situation, that requires P1 and P2 not mess
> with (or even know) each others' protocol buffers, then what you
> actually mean to use are extensions. That way, P1 and P2 can work on
> their part of the protocol buffers without even knowing the details of
> the 
> other.http://code.google.com/apis/protocolbuffers/docs/proto.html#extensions
>
> In general it is impractical to have protocol buffers forward
> declarations because you wouldn't be able to generate code for most of
> the target languages (C++ could be made to work).
>
>
>
>
>
>
>
> > This obviously
> > complicates the building process of P1 to obtain this additional
> > dependency and to specify the location and so on. Imagine what it will
> > be if you have a multiple libraries.
>
> > Another extra this feature will provide is the possibility I to
> > provide a different message declaration from P1 and from P2.
> > For example if I have now
> > message Addressee {
> > …
> > }
>
> > message Request {
> >        required Addressee addressee =1;
> >        required bytes command =1;
> > }
>
> > Where command is serialized protobuf message binary with forward
> > declaration I will be able to do:
> > forward message Command;
> > message Request {
> >        required Addressee addressee =1;
> >        required Command command =1;
> > }
> > And to define different Command protobuf message in P1 and P2.
>
> > Thanks,
> > George
>
> > On Jan 21, 12:55 pm, Jason Hsueh <jas...@google.com> wrote:
> >> There are many things that need to be read from imported .proto files to
> >> determine if the .proto is valid, or to produce correct code. e.g.:
> >> - need to differentiate between enum and message imports
> >> - when referencing a qualified type like foo.bar.Baz.Qux, you need to know
> >> what components are package specifiers, and which are objects. This changes
> >> the forward declaration scheme: if that was package foo.bar; message Bar {
> >> message Qux { } }, the declaration is namespace foo { namespace bar { class
> >> Bar_Qux; } }, whereas maybe Bar is just a namespace, so you should instead
> >> produce namespace foo { namespace bar { namespace Bar { class Qux; } } }
> >> - options like java_multiple_files affects the generated code
> >> - when defining extensions, you need to know whether the extendee accepts
> >> extensions, and what range of extension numbers the extendee allows
>
> >> To use the .proto, you need to build the imported proto files anyway, so
> >> even if you could capture all of this in a simple forward-declaration-type
> >> scheme, I don't think you would save very much.
>
> >> On Wed, Jan 19, 2011 at 9:02 AM, George <george.georg...@hotmail.com> 
> >> wrote:
> >> > Hi,
>
> >> > It looks to me that the generated result of a single proto file
> >> > doesn’t change significantly based on the content of the imported
> >> > proto files, but mostly on the fact that it is imported.
>
> >> > Did you have considered replacing the need of actual import with some
> >> > kind of message forward declaration?
>
> >> > In my opinion having a single proto file self-sufficient even in case
> >> > it actually refers messages from other proto files could significantly
> >> > simplify the build process.
>
> >> > What the protobuf community thinks about this?
>
> >> > Thanks,
> >> > George
>
> >> > --
> >> > You received this message because you are subscribed to the Google Groups
> >> > "Protocol Buffers" group.
> >> > To post to this group, send email to protobuf@googlegroups.com.
> >> > To unsubscribe from this group, send email to
> >> > protobuf+unsubscr...@googlegroups.com<protobuf%2Bunsubscr...@googlegroups.c
> >> >  om>
> >> > .
> >> > For more options, visit this group at
> >> >http://groups.google.com/group/protobuf?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Protocol Buffers" group.
> > To post to this group, send email to protobuf@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > protobuf+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/protobuf?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to