ComponentTextKit/Utility/CKFunctor.h (42 lines of code) (raw):
/*
 *  Copyright (c) 2014-present, Facebook, Inc.
 *  All rights reserved.
 *
 *  This source code is licensed under the BSD-style license found in the
 *  LICENSE file in the root directory of this source tree. An additional grant
 *  of patent rights can be found in the PATENTS file in the same directory.
 *
 */
#import <ComponentKit/CKDefines.h>
#if CK_NOT_SWIFT
#import <Foundation/Foundation.h>
/* generic functors */
namespace CK {
  
  template<class T>
  struct DescribeFunctor {
    NSString *operator()(const T &t) const {
      return [NSString stringWithFormat:@"%d", static_cast<int>(t)];
    }
  };
  
  template<class T>
  struct HashFunctor {
    size_t operator()(const T &key) const {
      return (size_t)(key);
    }
  };
  
  template<class T>
  struct EqualFunctor {
    bool operator()(const T &left, const T&right) const {
      return left == right;
    }
  };
  
  template<class T>
  struct CompareFunctor {
    bool operator()(const T &left, const T &right) const {
      return (int)left < (int)right;
    };
  };
  
  template<class T>
  struct RoundToIntegerFunctor {
    T operator()(const T &t) const {
      return t;
    }
  };
  template<class T>
  struct RoundToSubFunctor {
    T operator()(const T &t, float sub) const {
      return t;
    }
  };
}
#endif