/usr/include/cln/symbol.h is in libcln-dev 1.3.4-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | // Symbols.
#ifndef _CL_SYMBOL_H
#define _CL_SYMBOL_H
#include "cln/string.h"
namespace cln {
// Symbols are just strings, uniquified through a global hash table.
struct cl_symbol : public cl_rcpointer {
public:
// Conversion to string.
operator cl_string () const;
// Constructors.
cl_symbol (const cl_string&); // create or lookup a symbol from its name
cl_symbol (const cl_symbol&);
// Assignment operators.
cl_symbol& operator= (const cl_symbol&);
// Private pointer manipulations.
cl_symbol (cl_private_thing p) : cl_rcpointer (p) {}
public: /* ugh */
// Create a new symbol given its name.
cl_symbol (struct hashuniq * null, const cl_string& s);
};
CL_DEFINE_COPY_CONSTRUCTOR2(cl_symbol,cl_rcpointer)
CL_DEFINE_ASSIGNMENT_OPERATOR(cl_symbol,cl_symbol)
// A symbol points to a string, so to convert cl_symbol -> cl_string, we just
// take the pointer and put it into a cl_string.
inline cl_symbol::operator cl_string () const
{
return cl_string(_as_cl_private_thing());
}
// Comparison.
inline bool equal (const cl_symbol& s1, const cl_symbol& s2)
{
return (s1.pointer == s2.pointer);
}
// Hash code.
extern unsigned long hashcode (const cl_symbol& s);
} // namespace cln
#endif /* _CL_SYMBOL_H */
|