summary refs log tree commit diff stats
path: root/lib/field.cpp
blob: 168935c1521746878d72cd136524b16e24419a90 (plain) (blame)
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
93
94
95
96
97
98
99
100
101
#include "field.h"
#include "filter.h"

namespace verbly {
  
  filter field::operator==(int value) const
  {
    return filter(*this, filter::comparison::int_equals, value);
  }
  
  filter field::operator!=(int value) const
  {
    return filter(*this, filter::comparison::int_does_not_equal, value);
  }
  
  filter field::operator<(int value) const
  {
    return filter(*this, filter::comparison::int_is_less_than, value);
  }
  
  filter field::operator<=(int value) const
  {
    return filter(*this, filter::comparison::int_is_at_most, value);
  }
  
  filter field::operator>(int value) const
  {
    return filter(*this, filter::comparison::int_is_greater_than, value);
  }
  
  filter field::operator>=(int value) const
  {
    return filter(*this, filter::comparison::int_is_at_least, value);
  }
  
  filter field::operator==(part_of_speech value) const
  {
    return filter(*this, filter::comparison::int_equals, static_cast<int>(value));
  }
  
  filter field::operator==(positioning value) const
  {
    return filter(*this, filter::comparison::int_equals, static_cast<int>(value));
  }
  
  filter field::operator==(inflection value) const
  {
    return filter(*this, filter::comparison::int_equals, static_cast<int>(value));
  }
  
  filter field::operator==(bool value) const
  {
    return filter(*this, filter::comparison::boolean_equals, value);
  }
  
  filter field::operator==(std::string value) const
  {
    return filter(*this, filter::comparison::string_equals, std::move(value));
  }
  
  filter field::operator!=(std::string value) const
  {
    return filter(*this, filter::comparison::string_does_not_equal, std::move(value));
  }
  
  filter field::operator%=(std::string value) const
  {
    return filter(*this, filter::comparison::string_is_like, std::move(value));
  }
  
  field::operator filter() const
  {
    if (isJoin())
    {
      return filter(*this, filter::comparison::matches, filter());
    } else {
      return filter(*this, filter::comparison::is_not_null);
    }
  }
  
  filter field::operator!() const
  {
    if (isJoin())
    {
      return filter(*this, filter::comparison::does_not_match, filter());
    } else {
      return filter(*this, filter::comparison::is_null);
    }
  }
  
  filter field::operator%=(filter joinCondition) const
  {
    if (type_ == type::hierarchal_join)
    {
      return filter(*this, filter::comparison::hierarchally_matches, std::move(joinCondition));
    } else {
      return filter(*this, filter::comparison::matches, std::move(joinCondition));
    }
  }
  
};