+1

-Bryan


> On May 13, 2019, at 5:33 PM, Masaori Koshiba <masa...@apache.org> wrote:
> 
>> I’m pretty -1 on having files with the same filenames in different
> location. I’m sure that will just break all sort of shit, including my tiny
> brain.
> I strongly agree with this.
> 
>> I’m leaning more towards Chao's proposal of cleaning up the actual mess.
> If we want to rename the I_ and P_ files, that’s fine too.
> We should figure out why the P_ files are needed. It looks like we don't
> need them in many cases.
> 
>> We moved some stuff to a generic include directory, such that we can get
> away with just one single -I${topdir)/include in the compiles, and then use
> #include “some_major_module/P_Stuff.h”.
> Looks reasonable. I think I_Stuff.h or Stuff.h instead P_Stuff.h.
> 
> In total, using I_/P_Net.h for example, if we really need private header
> file by some reason, the change would be like this?
> 
> # before
> /iocore/net/I_Net.h
> /iocore/net/P_Net.h
> 
> - include search path : ${topdir)/iocore/net
> - #include "P_Net.h" and #include "I_Net.h" are used by everywhere
> 
> # after
> /include/iocore/net/Net.h
> /iocore/net/P_Net.h
> 
> - include search path : ${topdir)/include
> - #include "P_Net.h" MUST be used only in the iocore/net submodule
> - other submodules MUST use #include "iocore/net/Net.h"
> 
> - Masaori
> 
> 
> On Mon, May 13, 2019 at 11:39 PM Leif Hedstrom <zw...@apache.org> wrote:
> 
>> 
>> 
>>> On May 13, 2019, at 8:33 AM, Walt Karas <wka...@verizonmedia.com.INVALID>
>> wrote:
>>> 
>>> How about an approach using recursively nested modules?
>>> - Exported headers for a module are in the module directory.
>>> - Private headers and implementation (.cc) files are in a subdirectory
>>> named "private".
>>> - The submodules of a module are subdirectories of the module directory.
>>> - Module source files include their own exported headers with #include
>>> "../name.h"
>>> - Source files include exported headers of other modules with #include
>>> "../../module/name.h", #include "../../../module/name.h", etc.  That is
>> to
>>> say, a headers name, preceded by a module name, preceded by two or more
>>> parent directory links (..).  So that source files only include the
>> header
>>> files of modules that directly or indirectly contain them.
>> 
>> 
>> Can you please make that a little bit more complicated please?
>> 
>> I’m pretty -1 on having files with the same filenames in different
>> location. I’m sure that will just break all sort of shit, including my tiny
>> brain.
>> 
>> I’m leaning more towards Chao's proposal of cleaning up the actual mess.
>> If we want to rename the I_ and P_ files, that’s fine too. We moved some
>> stuff to a generic include directory, such that we can get away with just
>> one single -I${topdir)/include in the compiles, and then use #include
>> “some_major_module/P_Stuff.h”.
>> 
>> Ciao,
>> 
>> — leif
>> 
>>> 
>>> On Mon, May 13, 2019 at 1:20 AM Chao Xu <ok...@apache.org> wrote:
>>> 
>>>> Hi Masaori,
>>>> 
>>>> The functionality does not change as the file name changes:
>>>> 
>>>> - The P_ files should contain any types and definitions that are
>>>> private to the subsystem,
>>>> - The public interface should be contained in a I_ prefixed header.
>>>> 
>>>> Confusing private and public definitions will cause the code to have
>>>> circular dependencies.
>>>> 
>>>> In order to solve the issue that the P_ files are included from out
>>>> side of subsystem, we have 2 choice:
>>>> 
>>>> 1. Pulls related types and definitions from P_ files into I_ files (be
>>>> careful to do it).
>>>> 2. Do not include that P_ files (figure out why the P_ files is needed).
>>>> 
>>>> If you just don't like the I_ and P_ prefix, you can rename the
>>>> filename as you want or put them into different directory, for
>>>> example:
>>>> 
>>>> - Puts all those I_ prefix header files into iocore/api/ and keeps all
>>>> P_ prefix header files within subsystem directory.
>>>> - Compile with `-I iocore/api`
>>>> 
>>>> Thanks.
>>>> 
>>>> - Oknet Xu
>>>> 
>>>> Masaori Koshiba <masa...@apache.org> 于2019年5月13日周一 上午9:57写道:
>>>>> 
>>>>> We have a naming convention for header files, P_ or I_ prefix. Details
>>>> are
>>>>> described in below.
>>>>> 
>>>>>> # Header files
>>>>>> In most subsystems, header files are named with a P_ or I_ prefix. P_
>>>>> files should contain
>>>>>> any types and definitions that are private to the subsystem, while the
>>>>> public interface
>>>>>> should be contained in a I_-prefixed header.
>>>>> 
>>>>> 
>>>> 
>> https://cwiki.apache.org/confluence/display/TS/Coding+Style#CodingStyle-Headerfiles
>>>>> 
>>>>> But this looks obsoleted 1). many subsystem don't follow this rule, 2).
>>>>> even if this rule is
>>>>> followed, P_ files (subsystem private header files) are included from
>> out
>>>>> side of subsystem.
>>>>> (e.g. P_Net.h, P_EventSystem.h )
>>>>> 
>>>>> The consensus at last summit was we should remove this rule.
>>>>> 
>>>>> If there’re any real use case of subsystem private header files, we can
>>>>> move them a directory
>>>>> under the subsystem and include them internally.
>>>>> 
>>>>> Any thoughts?
>>>>> 
>>>>> Thanks,
>>>>> Masaori
>>>> 
>>>> 
>>>> 
>>>> --
>>>> - Oknet Xu
>>>> 
>> 
>> 

Reply via email to