Vowpal Wabbit
Classes | Functions
hashstring.h File Reference
#include <cstdint>
#include "hash.h"
#include "future_compat.h"

Go to the source code of this file.

Classes

struct  substring
 

Functions

VW_STD14_CONSTEXPR uint64_t hashall (substring s, uint64_t h)
 
VW_STD14_CONSTEXPR uint64_t hashstring (substring s, uint64_t h)
 

Function Documentation

◆ hashall()

VW_STD14_CONSTEXPR uint64_t hashall ( substring  s,
uint64_t  h 
)
inline

Definition at line 13 of file hashstring.h.

References substring::begin, substring::end, and uniform_hash().

Referenced by getHasher().

14 {
15  return uniform_hash((unsigned char*)s.begin, s.end - s.begin, h);
16 }
char * end
Definition: hashstring.h:10
char * begin
Definition: hashstring.h:9
VW_STD14_CONSTEXPR uint64_t uniform_hash(const void *key, size_t len, uint64_t seed)
Definition: hash.h:67

◆ hashstring()

VW_STD14_CONSTEXPR uint64_t hashstring ( substring  s,
uint64_t  h 
)
inline

Definition at line 18 of file hashstring.h.

References substring::begin, substring::end, and uniform_hash().

Referenced by vw_slim::example_predict_builder::example_predict_builder(), getHasher(), TC_parser< audit >::maybeFeature(), CB::parse_label(), COST_SENSITIVE::parse_label(), CB_EVAL::parse_label(), and vw_slim::example_predict_builder::push_feature_string().

19 {
20  // trim leading whitespace but not UTF-8
21  for (; s.begin < s.end && *(s.begin) <= 0x20 && (int)*(s.begin) >= 0; s.begin++)
22  ;
23  // trim trailing white space but not UTF-8
24  for (; s.end > s.begin && *(s.end - 1) <= 0x20 && (int)*(s.end - 1) >= 0; s.end--)
25  ;
26 
27  size_t ret = 0;
28  char* p = s.begin;
29  while (p != s.end)
30  if (*p >= '0' && *p <= '9')
31  ret = 10 * ret + *(p++) - '0';
32  else
33  return uniform_hash((unsigned char*)s.begin, s.end - s.begin, h);
34 
35  return ret + h;
36 }
char * end
Definition: hashstring.h:10
char * begin
Definition: hashstring.h:9
VW_STD14_CONSTEXPR uint64_t uniform_hash(const void *key, size_t len, uint64_t seed)
Definition: hash.h:67