/usr/include/Synopsis/PTree/Atoms.hh is in libsynopsis0.12-dev 0.12-10.
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | //
// Copyright (C) 2004 Stefan Seefeld
// All rights reserved.
// Licensed to the public under the terms of the GNU LGPL (>= 2),
// see the file COPYING for details.
//
#ifndef Synopsis_PTree_Atoms_hh_
#define Synopsis_PTree_Atoms_hh_
#include <Synopsis/PTree/NodesFwd.hh>
#include <Synopsis/PTree/Node.hh>
namespace Synopsis
{
namespace PTree
{
class Literal : public Atom
{
public:
Literal(Token const &tk) : Atom(tk), my_type(tk.type) {}
virtual void accept(Visitor *visitor) { visitor->visit(this);}
Token::Type type() const { return my_type;}
private:
Token::Type my_type;
};
class CommentedAtom : public Atom
{
public:
CommentedAtom(Token const &tk, Node *c = 0) : Atom(tk), my_comments(c) {}
CommentedAtom(char const *p, size_t l, Node *c = 0) : Atom(p, l), my_comments(c) {}
virtual void accept(Visitor *visitor) { visitor->visit(this);}
Node *get_comments() { return my_comments;}
void set_comments(Node *c) { my_comments = c;}
private:
Node *my_comments;
};
// class DupLeaf is used by Ptree::Make() and QuoteClass (qMake()).
// The string given to the constructors are duplicated.
class DupAtom : public CommentedAtom
{
public:
DupAtom(char const *, size_t);
DupAtom(char const *, size_t, char const *, size_t);
virtual void accept(Visitor *visitor) { visitor->visit(this);}
};
class Identifier : public CommentedAtom
{
public:
Identifier(Token const &t) : CommentedAtom(t) {}
Identifier(char const *p, size_t l) : CommentedAtom(p, l) {}
virtual void accept(Visitor *visitor) { visitor->visit(this);}
};
class Keyword : public CommentedAtom
{
public:
Keyword(Token const &t) : CommentedAtom(t) {}
Keyword(char const *str, int len) : CommentedAtom(str, len) {}
virtual Token::Type token() const = 0;
virtual void accept(Visitor *visitor) { visitor->visit(this);}
};
template <Token::Type t>
class KeywordT : public Keyword
{
public:
KeywordT(Token const &tk) : Keyword(tk) {}
KeywordT(char const *ptr, size_t length) : Keyword(ptr, length) {}
virtual Token::Type token() const { return t;}
virtual void accept(Visitor *visitor) { visitor->visit(this);}
};
class UserKeyword : public Keyword
{
public:
UserKeyword(Token const &t) : Keyword(t) {}
virtual Token::Type token() const { return my_type;}
virtual void accept(Visitor *visitor) { visitor->visit(this);}
private:
Token::Type my_type;
};
}
}
#endif
|