diff options
Diffstat (limited to 'katomic/atom.h')
-rw-r--r-- | katomic/atom.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/katomic/atom.h b/katomic/atom.h new file mode 100644 index 00000000..19d9b087 --- /dev/null +++ b/katomic/atom.h @@ -0,0 +1,35 @@ +#ifndef ATOM_H +#define ATOM_H + +#define MAX_CONNS_PER_ATOM 8 + +class atom { + public: + char obj; + char conn[MAX_CONNS_PER_ATOM + 1]; + + bool operator==(const atom& rhs) const { return (rhs.obj == obj && !strcmp(rhs.conn,conn)); } + bool isEmpty() const { return (obj == 0 || obj == '.'); } +}; + +inline char int2atom(int i) { + if (!i) + return '.'; + if (i == 254) + return '#'; + if (i <= 9) + return i + '0'; + return i + 'a' - 10; +} + +inline int atom2int(char ch) { + if (ch == '.' || ch == 0) + return 0; + if (ch == '#') + return 254; + if (ch >= '0' && ch <= '9') + return ch - '0'; + return ch - 'a' + 10; +} + +#endif |