<commit_before>// Copyright (C) 2012-2015 Leap Motion, Inc. All rights reserved.
#pragma once
#include "auto_id.h"

class AutoPacket;
template <class T> class auto_in;
class CoreContext;

/*
 The auto_arg<T> classes are used to generate of auto_in and auto_out types
 based on the argument T.
 The core functionality is that all argument types are treated as standard
 types, and can be re-derived from those standard types.
 It is expected that every parent of auto_arg will define:
 - id_type (an unqualified T)
 - base_type (a T qualified by const and/or &)
 - shared_type (the pointer T from which the parent inherits)
 Furthermore, by classifying arguments in terms of orientation and fundamental
 T, auto_arg enables the specification of a principal T to any class
 implementing an AutoFilter method.
 */

/// <summary>
/// Reinterpret copied argument as input
/// </summary>
template<class T>
class auto_arg
{
public:
  typedef const T& type;
  typedef type arg_type;
  typedef auto_id_t<T> id_type;
  static const bool is_input = true;
  static const bool is_output = false;
  static const bool is_shared = false;
  static const bool is_multi = false;
  static const int tshift = 0;

  template<class C>
  static const T& arg(C& packet) {
    (void) auto_id_t_init<T, true>::init;
    return packet.template Get<T>();
  }
};

/// <summary>
/// Reinterpret copied argument as input
/// </summary>
template<class T><commit_msg>fix call order<commit_after>// Copyright (C) 2012-2015 Leap Motion, Inc. All rights reserved.
#pragma once
#include "auto_id.h"

class AutoPacket;
template <class T> class auto_in;
class CoreContext;

/*
 The auto_arg<T> classes are used to generate of auto_in and auto_out types
 based on the argument T.
 The core functionality is that all argument types are treated as standard
 types, and can be re-derived from those standard types.
 It is expected that every parent of auto_arg will define:
 - id_type (an unqualified T)
 - base_type (a T qualified by const and/or &)
 - shared_type (the pointer T from which the parent inherits)
 Furthermore, by classifying arguments in terms of orientation and fundamental
 T, auto_arg enables the specification of a principal T to any class
 implementing an AutoFilter method.
 */

/// <summary>
/// Reinterpret copied argument as input
/// </summary>
template<class T>
class auto_arg
{
public:
  typedef const T type;
  typedef type arg_type;
  typedef auto_id_t<T> id_type;
  static const bool is_input = true;
  static const bool is_output = false;
  static const bool is_shared = false;
  static const bool is_multi = false;
  static const int tshift = 0;

  template<class C>
  static const T arg(C& packet) {
    (void) auto_id_t_init<T, true>::init;
    return packet.template Get<T>();
  }
};

/// <summary>
/// Reinterpret copied argument as input
/// </summary>
template<class T>
{'fraction_non_alphanumeric': 0.0830715532286213, 'fraction_numerical': 0.0062827225130890054, 'mean_word_length': 3.9159519725557463, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5591395', 'n_tokens_mistral': 856, 'n_tokens_neox': 827, 'n_words': 373}