This file is indexed.

/usr/include/odb/query.hxx is in libodb-dev 2.4.0-1+b1.

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
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
// file      : odb/query.hxx
// copyright : Copyright (c) 2009-2015 Code Synthesis Tools CC
// license   : GNU GPL v2; see accompanying LICENSE file

#ifndef ODB_QUERY_HXX
#define ODB_QUERY_HXX

#include <odb/pre.hxx>

#include <odb/forward.hxx>
#include <odb/traits.hxx>

namespace odb
{
  // Table alias for type T and tag Tag.
  //
  // The alias_traits interface consists of two things: the table_name
  // static variable containing the name and, in case of a derived type
  // in a polymorphic hierarchy, the base_traits typedef. Note that the
  // same interface is exposed by object_traits, which is used when
  // we need straight tables instead of aliases.
  //
  //
  template <typename T, database_id DB, typename Tag>
  struct alias_traits;

  template <typename T, database_id DB>
  struct query_columns_base;

  template <typename T, database_id DB, typename A>
  struct query_columns;

  template <typename T, database_id DB, typename A>
  struct pointer_query_columns;

  // Object pointer syntax wrapper.
  //
  template <typename T>
  struct query_pointer
  {
    query_pointer ()
    {
      // For some reason GCC needs this dummy c-tor if we make a static
      // data member of this type const.
    }

    T*
    operator-> () const
    {
      return 0; // All members in T are static.
    }
  };

  // Query parameter decay traits.
  //
  template <typename T>
  struct decay_traits
  {
    typedef const T& type;

    static type
    instance ();
  };

  template <typename T, std::size_t N>
  struct decay_traits<T[N]>
  {
    typedef const T* type;

    // Use the pointer comparability as a proxy for data comparability.
    // Note that it is stricter than using element comparability (i.e.,
    // one can compare int to char but not int* to char*).
    //
    static type
    instance ();
  };

  // VC9 cannot handle certain cases of non-type arguments with default
  // values in template functions (e.g., database::query()). As a result,
  // we have to use the impl trick below instead of simply having kind
  // as a second template argument with a default value.
  //
  template <typename T, database_id DB, class_kind kind>
  struct query_selector_impl;

  template <typename T, database_id DB>
  struct query_selector_impl<T, DB, class_object>
  {
    typedef typename object_traits_impl<T, DB>::query_base_type base_type;

    typedef
    query_columns<T, DB, access::object_traits_impl<T, DB> >
    columns_type;
  };

  template <typename T, database_id DB>
  struct query_selector_impl<T, DB, class_view>
  {
    typedef typename view_traits_impl<T, DB>::query_base_type base_type;
    typedef typename view_traits_impl<T, DB>::query_columns columns_type;
  };

  template <typename T, database_id DB>
  struct query_selector: query_selector_impl<T, DB, class_traits<T>::kind>
  {
  };

  template <typename T,
            typename B = typename query_selector<T, id_common>::base_type>
  class query;

  namespace core
  {
    using odb::query;
  }
}

#include <odb/post.hxx>

#endif // ODB_QUERY_HXX