text: // This code is part of the project "Ligra: A Lightweight Graph Processing
  // Framework for Shared Memory", presented at Principles and Practice of
  // Parallel Programming, 2013.
  // Copyright (c) 2013 Julian Shun and Guy Blelloch
  //
  // Permission is hereby granted, free of charge, to any person obtaining a
  // copy of this software and associated documentation files (the
  // "Software"), to deal in the Software without restriction, including
  // without limitation the rights (to use, copy, modify, merge, publish,
  // distribute, sublicense, and/or sell copies of the Software, and to
  // permit persons to whom the Software is furnished to do so, subject to
  // the following conditions:
  //
  // The above copyright notice and this permission notice shall be included
  // in all copies or substantial portions of the Software.
  //
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  #pragma once
  
  #include "macros.h"
  
  namespace gbbs {
  namespace gbbs_io {
  
  template <class E> struct pairFirstCmp {
      bool operator()(std::pair<uintE, E> a, std::pair<uintE, E> b) {
          return a.first < b.first;
      }
  };
  
  template <class E> struct getFirst {
      uintE operator()(std::pair<uintE, E> a) { return a.first; }
  };
  
  // returns a pointer and a length
  std::pair<char *, size_t> mmapStringFromFile(const char *filename);
  
  void unmmap(const char *bytes, size_t bytes_size);
  
  sequence<char> readStringFromFile(const char *fileName);
  
  std::tuple<char *, size_t> read_o_direct(const char *fname);
  
  } // namespace gbbs_io
  } // namespace gbbs
  