diff options
author | Shivaram Venkataraman <shivaram@cs.berkeley.edu> | 2015-05-23 00:04:01 -0700 |
---|---|---|
committer | Shivaram Venkataraman <shivaram@cs.berkeley.edu> | 2015-05-23 00:04:01 -0700 |
commit | a40bca0111de45763c3ef4270afb2185c16b8f95 (patch) | |
tree | fd7d6b8d70c25cf2b82b7b8731ff43ac3e67fe7d /R/pkg/src-native/string_hash_code.c | |
parent | 7af3818c6b2bf35bfa531ab7cc3a4a714385015e (diff) | |
download | spark-a40bca0111de45763c3ef4270afb2185c16b8f95.tar.gz spark-a40bca0111de45763c3ef4270afb2185c16b8f95.tar.bz2 spark-a40bca0111de45763c3ef4270afb2185c16b8f95.zip |
[SPARK-6811] Copy SparkR lib in make-distribution.sh
This change also remove native libraries from SparkR to make sure our distribution works across platforms
Tested by building on Mac, running on Amazon Linux (CentOS), Windows VM and vice-versa (built on Linux run on Mac)
I will also test this with YARN soon and update this PR.
Author: Shivaram Venkataraman <shivaram@cs.berkeley.edu>
Closes #6373 from shivaram/sparkr-binary and squashes the following commits:
ae41b5c [Shivaram Venkataraman] Remove native libraries from SparkR Also include the built SparkR package in make-distribution.sh
Diffstat (limited to 'R/pkg/src-native/string_hash_code.c')
-rw-r--r-- | R/pkg/src-native/string_hash_code.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/R/pkg/src-native/string_hash_code.c b/R/pkg/src-native/string_hash_code.c new file mode 100644 index 0000000000..e3274b9a0c --- /dev/null +++ b/R/pkg/src-native/string_hash_code.c @@ -0,0 +1,49 @@ +/* + 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. +*/ + +/* + * A C function for R extension which implements the Java String hash algorithm. + * Refer to http://en.wikipedia.org/wiki/Java_hashCode%28%29#The_java.lang.String_hash_function + * + */ + +#include <R.h> +#include <Rinternals.h> + +/* for compatibility with R before 3.1 */ +#ifndef IS_SCALAR +#define IS_SCALAR(x, type) (TYPEOF(x) == (type) && XLENGTH(x) == 1) +#endif + +SEXP stringHashCode(SEXP string) { + const char* str; + R_xlen_t len, i; + int hashCode = 0; + + if (!IS_SCALAR(string, STRSXP)) { + error("invalid input"); + } + + str = CHAR(asChar(string)); + len = XLENGTH(asChar(string)); + + for (i = 0; i < len; i++) { + hashCode = (hashCode << 5) - hashCode + *str++; + } + + return ScalarInteger(hashCode); +} |