source code for llvm

i don’t understand the source code :
static StringMapEntryBase getTombstoneVal() {
return (StringMapEntryBase
} at “include\llvm\adt\stingmaph” at line 116. “(StringMapEntryBase*)-1” is it the cast or something other? why there is a * after class StringMapEntryBase?
thank you ~~

Cast -1 to a pointer to StringMapEntryBase. -1 is an integer with all
bits being 1.
I have to say if you don't even understand this, just DO NOT try to
rewrite clang in C.