nany
signature.h
1 #pragma once
2 #include <yuni/yuni.h>
3 #include "classdef.h"
4 #include "details/utils/clid.h"
5 #include <vector>
6 #include <memory>
7 
8 
9 namespace ny {
10 
11 
12 struct Atom;
13 
14 
15 class Signature final {
16 public:
17  struct Paramtype final {
19  nytype_t kind = nyt_any;
21  Atom* atom = nullptr;
24 
25  bool operator == (const Paramtype& rhs) const;
26  bool operator != (const Paramtype& rhs) const;
27  };
28 
29  struct Parameters final {
31  void resize(uint count);
33  uint size() const;
35  bool empty() const;
36 
37  const Paramtype& operator [] (uint32_t index) const;
38  Paramtype& operator [] (uint32_t index);
39 
40 
41  bool operator == (const Parameters& rhs) const;
42 
43  private:
44  friend class Signature;
45  void hash(size_t&) const;
47  std::vector<Paramtype> m_types;
48  };
49 
50 
51 public:
53  size_t hash() const;
54 
55  bool operator == (const Signature& rhs) const;
56  bool operator != (const Signature& rhs) const;
57 
58 public:
63 
64 }; // class Signature
65 
66 
67 } // namespace ny
68 
69 #include "signature.hxx"
Definition: signature.h:17
Parameters parameters
Function parameters (func (a, b , c))
Definition: signature.h:60
Definition: signature.h:15
Definition: ast.cpp:6
Atom * atom
Atom attached to it, if any (kind == nyt_any)
Definition: signature.h:21
nytype_t kind
Kind of the parameter.
Definition: signature.h:19
Definition of a single class or function.
Definition: atom.h:37
size_t hash() const
Get the hash of this singature.
Definition: signature.cpp:75
Qualifiers qualifiers
Qualifiers (ref, const...)
Definition: signature.h:23
Definition: qualifiers.h:9
Parameters tmplparams
Template parameters.
Definition: signature.h:62
Definition: signature.h:29