ChrisHegarty commented on issue #12396:
URL: https://github.com/apache/lucene/issues/12396#issuecomment-1615848352

   If I'm not mistaken, the specific interface required here to abstract out 
`ForUtil` would look something like this?
   ```
   interface ForUtilXXX {
     /** Number of bytes required to encode 128 integers of {@code 
bitsPerValue} bits per value. */
     int numBytes(int bitsPerValue);
   
     /** Encodes integers from {@code values} into {@code out}. */
     void encode(int[] values, int bitsPerValue, DataOutput out) throws 
IOException;
   
     /** Decodes integers into {@code values}. */
     void decode(int bitsPerValue, DataInput in, int[] values) throws 
IOException;
   }
   ```
   
   This interface does not need to be shared outside of its package - both the 
default and Panama implementations can reside in the same package. Maybe we 
need this interface for different codec versions? If so, then it could be 
copied, otherwise we need to find a "sharable" package.
   
   We current have a `TestSecrets`, that supports cross-package access, but 
even a more general non-test specific `o.a.l.internal.SharedSecrets` is not 
sufficient here, since we need to share both the Vector lookup code, and 
(maybe?) the interface, ForUtilXXX.  The most straightforward, but less 
defensive, way I see is to double down on `org.apache.lucene.internal` as 
location to house such things that are Lucene internal **not to be used by 
external developers**.  While not a very novel approach, it is well understood, 
commonly used, and adds the least amount of friction to the code.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to