You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
640 B
36 lines
640 B
#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
|