pitrou commented on code in PR #47573:
URL: https://github.com/apache/arrow/pull/47573#discussion_r2431582660


##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.
+// Original source:
+// 
https://github.com/lemire/FrameOfReference/blob/master/scripts/turbopacking64.py
+// The original copyright notice follows.
+
+// This code is released under the
+// Apache License Version 2.0 http://www.apache.org/licenses/.
+// (c) Daniel Lemire 2013
+"""
+
+HEADER = """
+#pragma once
+
+#include <cstdint>
+#include <cstring>
+
+#include "arrow/util/endian.h"
+#include "arrow/util/ubsan.h"
+
+namespace arrow::internal {
+namespace {
+
+template <typename Int>
+Int LoadInt(const uint8_t* in) {
+  return bit_util::FromLittleEndian(util::SafeLoadAs<Int>(in));
+}
+"""
+
+FOOTER = """
+}  // namespace
+}  // namespace arrow::internal
+"""
+
+
[email protected]
+class ScalarUnpackGenerator:
+    out_type: str
+    smart_halve: bool
+
+    @property
+    def out_bit_width(self) -> int:
+        if self.out_type == "bool":
+            return 8

Review Comment:
   That's not necessarily the case, right?
   
   It sounds like, instead of generating dedicated functions for `bool`, you 
should perhaps add logic on the C++ side to redirect `bool` to the 
appropriately sized `uint`?



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.
+// Original source:
+// 
https://github.com/lemire/FrameOfReference/blob/master/scripts/turbopacking64.py
+// The original copyright notice follows.
+
+// This code is released under the
+// Apache License Version 2.0 http://www.apache.org/licenses/.
+// (c) Daniel Lemire 2013
+"""
+
+HEADER = """
+#pragma once
+
+#include <cstdint>
+#include <cstring>
+
+#include "arrow/util/endian.h"
+#include "arrow/util/ubsan.h"
+
+namespace arrow::internal {
+namespace {
+
+template <typename Int>
+Int LoadInt(const uint8_t* in) {
+  return bit_util::FromLittleEndian(util::SafeLoadAs<Int>(in));
+}
+"""
+
+FOOTER = """
+}  // namespace
+}  // namespace arrow::internal
+"""
+
+
[email protected]
+class ScalarUnpackGenerator:
+    out_type: str
+    smart_halve: bool
+
+    @property
+    def out_bit_width(self) -> int:
+        if self.out_type == "bool":
+            return 8
+        elif self.out_type.startswith("uint"):
+            return int(self.out_type.removeprefix("uint").removesuffix("_t"))
+
+    @property
+    def out_byte_width(self) -> int:
+        return self.out_bit_width // 8
+
+    @property
+    def out_type_half(self) -> str:
+        return f"uint{self.out_bit_width // 2}_t"
+
+    @property
+    def struct_name(self) -> str:
+        return "ScalarUnpackerForWidth"
+
+    def struct_specialization(self, bit: int) -> str:
+        return f"{self.struct_name}<{self.out_type}, {bit}>"
+
+    def print_struct_declaration(self):
+        print("template<typename Uint, int kBitWidth>")
+        print(f"struct {self.struct_name};")
+
+    @property
+    def howmany(self) -> int:

Review Comment:
   It would be worth giving this a more explicit name, e.g. 
`num_unpacked_values`?



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.
+// Original source:
+// 
https://github.com/lemire/FrameOfReference/blob/master/scripts/turbopacking64.py
+// The original copyright notice follows.
+
+// This code is released under the
+// Apache License Version 2.0 http://www.apache.org/licenses/.
+// (c) Daniel Lemire 2013
+"""
+
+HEADER = """
+#pragma once
+
+#include <cstdint>
+#include <cstring>
+
+#include "arrow/util/endian.h"
+#include "arrow/util/ubsan.h"
+
+namespace arrow::internal {
+namespace {
+
+template <typename Int>
+Int LoadInt(const uint8_t* in) {
+  return bit_util::FromLittleEndian(util::SafeLoadAs<Int>(in));
+}
+"""
+
+FOOTER = """
+}  // namespace
+}  // namespace arrow::internal
+"""
+
+
[email protected]
+class ScalarUnpackGenerator:
+    out_type: str
+    smart_halve: bool
+
+    @property
+    def out_bit_width(self) -> int:
+        if self.out_type == "bool":
+            return 8
+        elif self.out_type.startswith("uint"):
+            return int(self.out_type.removeprefix("uint").removesuffix("_t"))
+
+    @property
+    def out_byte_width(self) -> int:
+        return self.out_bit_width // 8
+
+    @property
+    def out_type_half(self) -> str:
+        return f"uint{self.out_bit_width // 2}_t"
+
+    @property
+    def struct_name(self) -> str:
+        return "ScalarUnpackerForWidth"
+
+    def struct_specialization(self, bit: int) -> str:
+        return f"{self.struct_name}<{self.out_type}, {bit}>"
+
+    def print_struct_declaration(self):
+        print("template<typename Uint, int kBitWidth>")
+        print(f"struct {self.struct_name};")
+
+    @property
+    def howmany(self) -> int:
+        """How many values are we going to pack?"""
+        if self.smart_halve:
+            return self.out_bit_width // 2
+        return self.out_bit_width
+
+    def howmanywords(self, bit: int) -> int:

Review Comment:
   Similar remark wrt. giving this a more descriptive name.



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.
+// Original source:
+// 
https://github.com/lemire/FrameOfReference/blob/master/scripts/turbopacking64.py
+// The original copyright notice follows.
+
+// This code is released under the
+// Apache License Version 2.0 http://www.apache.org/licenses/.
+// (c) Daniel Lemire 2013
+"""
+
+HEADER = """
+#pragma once
+
+#include <cstdint>
+#include <cstring>
+
+#include "arrow/util/endian.h"
+#include "arrow/util/ubsan.h"
+
+namespace arrow::internal {
+namespace {
+
+template <typename Int>
+Int LoadInt(const uint8_t* in) {
+  return bit_util::FromLittleEndian(util::SafeLoadAs<Int>(in));
+}
+"""
+
+FOOTER = """
+}  // namespace
+}  // namespace arrow::internal
+"""
+
+
[email protected]
+class ScalarUnpackGenerator:
+    out_type: str
+    smart_halve: bool
+
+    @property
+    def out_bit_width(self) -> int:
+        if self.out_type == "bool":
+            return 8
+        elif self.out_type.startswith("uint"):
+            return int(self.out_type.removeprefix("uint").removesuffix("_t"))

Review Comment:
   It seems like it lacks a fallback `else`, perhaps raising an exception?



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.
+// Original source:
+// 
https://github.com/lemire/FrameOfReference/blob/master/scripts/turbopacking64.py
+// The original copyright notice follows.
+
+// This code is released under the
+// Apache License Version 2.0 http://www.apache.org/licenses/.
+// (c) Daniel Lemire 2013
+"""
+
+HEADER = """
+#pragma once
+
+#include <cstdint>
+#include <cstring>
+
+#include "arrow/util/endian.h"
+#include "arrow/util/ubsan.h"
+
+namespace arrow::internal {
+namespace {
+
+template <typename Int>
+Int LoadInt(const uint8_t* in) {
+  return bit_util::FromLittleEndian(util::SafeLoadAs<Int>(in));
+}
+"""
+
+FOOTER = """
+}  // namespace
+}  // namespace arrow::internal
+"""
+
+
[email protected]
+class ScalarUnpackGenerator:
+    out_type: str
+    smart_halve: bool
+
+    @property
+    def out_bit_width(self) -> int:
+        if self.out_type == "bool":
+            return 8
+        elif self.out_type.startswith("uint"):
+            return int(self.out_type.removeprefix("uint").removesuffix("_t"))
+
+    @property
+    def out_byte_width(self) -> int:
+        return self.out_bit_width // 8
+
+    @property
+    def out_type_half(self) -> str:
+        return f"uint{self.out_bit_width // 2}_t"
+
+    @property
+    def struct_name(self) -> str:
+        return "ScalarUnpackerForWidth"
+
+    def struct_specialization(self, bit: int) -> str:
+        return f"{self.struct_name}<{self.out_type}, {bit}>"
+
+    def print_struct_declaration(self):
+        print("template<typename Uint, int kBitWidth>")
+        print(f"struct {self.struct_name};")
+
+    @property
+    def howmany(self) -> int:
+        """How many values are we going to pack?"""

Review Comment:
   ```suggestion
           """How many values are we going to unpack?"""
   ```



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.
+// Original source:
+// 
https://github.com/lemire/FrameOfReference/blob/master/scripts/turbopacking64.py
+// The original copyright notice follows.
+
+// This code is released under the
+// Apache License Version 2.0 http://www.apache.org/licenses/.
+// (c) Daniel Lemire 2013
+"""
+
+HEADER = """
+#pragma once
+
+#include <cstdint>
+#include <cstring>
+
+#include "arrow/util/endian.h"
+#include "arrow/util/ubsan.h"
+
+namespace arrow::internal {
+namespace {
+
+template <typename Int>
+Int LoadInt(const uint8_t* in) {
+  return bit_util::FromLittleEndian(util::SafeLoadAs<Int>(in));
+}
+"""
+
+FOOTER = """
+}  // namespace
+}  // namespace arrow::internal
+"""
+
+
[email protected]
+class ScalarUnpackGenerator:
+    out_type: str
+    smart_halve: bool

Review Comment:
   I'm afraid I don't understand what `smart_halve` means here. If it's meant 
to compute the number of unpacked values, perhaps we should simply pass it 
directly here?
   ```suggestion
       num_values: int
   ```



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.
+// Original source:
+// 
https://github.com/lemire/FrameOfReference/blob/master/scripts/turbopacking64.py
+// The original copyright notice follows.
+
+// This code is released under the
+// Apache License Version 2.0 http://www.apache.org/licenses/.
+// (c) Daniel Lemire 2013

Review Comment:
   I don't this needs to be in the generated code, it's sufficient to put this 
at the top of this script.



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h

Review Comment:
   Seems like this line needs updating?



##########
cpp/src/arrow/util/bpacking_scalar_codegen.py:
##########
@@ -0,0 +1,264 @@
+#!/bin/python
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This script is modified from its original version in GitHub. Original source:
+# 
https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py
+
+# Usage:
+#   python bpacking64_codegen.py > bpacking64_default_internal.h
+
+
+import dataclasses
+import sys
+
+
+LICENSE = """// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+// This file was generated by script which is modified from its original 
version in GitHub.

Review Comment:
   Let's give the name of the script for clarity?
   ```suggestion
   // File automatically generated by `bpacking_scalar_codegen.py`; DO NOT EDIT.
   ```



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to