owlcpp  v0.3.3~
C++ library for working with OWL ontologies
 All Classes Namespaces Files Functions Macros Pages
term_methods.hpp
Go to the documentation of this file.
1 
6 #ifndef TERM_METHODS_HPP_
7 #define TERM_METHODS_HPP_
8 #include <string>
9 #include <cstring>
10 
11 namespace owlcpp{ namespace terms{
12 
15 template<class T> inline std::string to_string_full(const T&) {
16  typedef typename T::ns_type ns_t;
17  return ns_t::iri() + "#" + T::fragment();
18 }
19 
22 template<class T> inline std::string to_string_pref(const T&) {
23  typedef typename T::ns_type ns_t;
24  return ns_t::prefix() + ":" + T::fragment();
25 }
26 
29 template<class T> inline bool
30 comparison(char const* str, const std::size_t len, T const&) {
31  typedef typename T::ns_type ns_t;
32  if( len != ns_t::iri().size() + T::fragment().size() + 1 ) return false;
33  if(
34  ns_t::iri().compare(
35  0,
36  ns_t::iri().size(),
37  str,
38  0,
39  ns_t::iri().size()
40  ) != 0
41  ) return false;
42  if( str[ns_t::iri().size()] != '#' ) return false;
43  return T::fragment().compare(
44  0,
45  T::fragment().size(),
46  str,
47  ns_t::iri().size() + 1,
48  T::fragment().size()
49  ) == 0;
50 }
51 
52 template<class T> inline bool comparison(std::string const& str, T const&) {
53  typedef typename T::ns_type ns_t;
54  if( str.size() != ns_t::iri().size() + T::fragment().size() + 1 ) return false;
55  if(
56  ns_t::iri().compare(
57  0,
58  ns_t::iri().size(),
59  str,
60  0,
61  ns_t::iri().size()
62  ) != 0
63  ) return false;
64  if( str[ns_t::iri().size()] != '#' ) return false;
65  return T::fragment().compare(
66  0,
67  T::fragment().size(),
68  str,
69  ns_t::iri().size() + 1,
70  T::fragment().size()
71  ) == 0;
72 }
73 
74 template<class T> inline bool comparison(char const* str, T const&) {
75  return comparison(str, std::strlen(str), T());
76 }
77 
78 }//namespace terms
79 }//namespace owlcpp
80 
81 #endif /* TERM_METHODS_HPP_ */