local d = {}
local 简文件库 = require("lfs")
local ffi = require("ffi")
--~ 排
--~ 办排中值的能
--~ 入参2
--~ 入参3
--~ 入参4
function d.历排(o1_0, o1, o2, o3, o4)
  local k1_0
  --~ 集排
  k1_0 = {}
  for o5 = 1, #o1_0 do
    k1_0[#k1_0 + 1] = o1(o1_0[o5], o2, o3, o4)
    end
  return k1_0
  end
--~ 文
--~ 历文的能
--~ 入参2
--~ 入参3
function d.历文(o1, o2, o3, o4)
  local k1_0
  --~ 集排
  k1_0 = {}
  for o5 in o2(o1, o3, o4) do
    k1_0[#k1_0 + 1] = o5
    end
  return k1_0
  end
--~ 排
--~ 能
function d.历排取一(o1_0, o1)
  local k1
  for o2 = 1, #o1_0 do
    --~ 值
    k1 = d.历排取一的模(k1, o1_0[o2], o1)
    end
  return k1
  end
--~ 值
--~ 排中值
function d.历排取一的模(o1, o2, o3)
  if o1 == nil then
    return o2
  elseif o3(o1, o2) then
    return o2
  else
    return o1
    end
  end
--~ 对
--~ 能
function d.历对取一(o1_0, o1)
  local k1, k2
  for o2, o2_0 in pairs(o1_0) do
    --~ 键
    --~ 值
    k1, k2 = d.历对取一的模(k1, k2, o2, o2_0, o1)
    end
  return k1, k2
  end
function d.历对取一的模(o1, o2, o3, o4, o5)
  if o1 == nil then
    return o3, o4
  elseif o5(o1, o2, o3, o4) then
    return o3, o4
  else
    return o1, o2
    end
  end
function d.历对(o1_0, o1, o2)
  local k1
  local k1_0, k2_0
  --~ 对
  k1_0 = {}
  for o3, o2_0 in pairs(o1_0) do
    --~ 键
    --~ 值
    k1, k2_0 = o1(o3, o2_0, o2)
    if k1 then
      k1_0[k1] = k2_0
    else
      end
    end
  return k1_0
  end
--~ 排中值
--~ 值类
--~ 办值的能
function d.操类(o1_0, o1, o2)
  if type(o1_0) == o1 then
    return o2(o1_0)
  else
    return o1_0
    end
  end
--~ 排中文
--~ 入参2
--~ 入参3
--~ 入参4
function d.全筛文(o1, o2, o3, o4)
  if string.find(o1, o2, o3, o4) then
    return o1
    end
  end
--~ 文
--~ 前缀
function d.加前缀(o1, o2)
  return (o2 or "") .. o1
  end
--~ 文
--~ 后缀
function d.加后缀(o1, o2)
  return o1 .. (o2 or "")
  end
--~ 令
function d.办令(o1)
  print(o1)
  os.execute(o1)
  end
--~ 文
--~ 前缀
function d.全筛前缀(o1, o2)
  if string.sub(o1, 1, #o2) == o2 then
    return o1
    end
  end
--~ 文
--~ 后缀
function d.全筛后缀(o1, o2)
  if string.sub(o1, -#o2) == o2 then
    return o1
    end
  end
--~ 目对
function d.用令行工具操文件(o1_0)
  local k1_9
  --~ 令行排
  k1_9 = d.历文(o1_0.文件目, 简文件库.dir)
  k1_9 = d.历排(k1_9, d.全筛后缀, o1_0.文件类)
  for o1 = 1, #k1_9 do
    k1_9[o1] = d.加前缀(k1_9[o1], o1_0.文件目)
    k1_9[o1] = d.加前缀(k1_9[o1], [["]])
    k1_9[o1] = d.加后缀(k1_9[o1], [["]])
    k1_9[o1] = d.加前缀(k1_9[o1], o1_0.令行前缀)
    d.办令(k1_9[o1])
    end
  end
--~ 文件路
--~ 式
function d.读文件(o1, o2)
  local k1
  local k1_3
  --~ 文件
  k1_3 = io.open(o1, o2 or "r")
  --~ 文
  k1 = k1_3:read("a")
  k1_3:flush()
  k1_3:close()
  return k1
  end
--~ 常量排
function d.加对限(o1_0)
  table.insert(o1_0, 1, "local k1_0 = {}")
  table.insert(o1_0, "return k1_0")
  return table.concat(o1_0, "\n")
  end
--~ 文
--~ 文件路
--~ 式
function d.写文件(o1, o2, o3)
  local k1_3
  --~ 文件
  k1_3 = io.open(o2, o3 or "w")
  k1_3:write(o1)
  k1_3:flush()
  k1_3:close()
  end
--~ 文
function d.删左右空白(o1)
  o1 = string.gsub(o1, "^%s+", "")
  return string.gsub(o1, "%s+$", "")
  end
--~ 对
--~ 对
function d.连两对(o1_0, o2_0)
  for o3_0, o4_0 in pairs(o2_0) do
    o1_0[o3_0] = o4_0
    end
  return o1_0
  end
--~ 键
--~ 值
function d.修对类(o1_0, o2_0)
  if tonumber(o1_0) then
    return tonumber(o1_0), o2_0
  else
    return o1_0, o2_0
    end
  end
do
  --~ 加数
  local k1 = 0
  function d.递增()
    k1 = k1 + 1
    return k1
    end
  end
--~ 左加数
--~ 右加数
function d.加法(o1, o2)
  return o1 + o2
  end
--~ 左减数
--~ 右减数
function d.减法(o1, o2)
  return o1 - o2
  end
--~ 左乘数
--~ 右乘数
function d.乘法(o1, o2)
  return o1 * o2
  end
--~ 左除数
--~ 右除数
function d.除法(o1, o2)
  return o1 / o2
  end
--~ 左数
--~ 右数
function d.位和(o1, o2)
  return bit.band(o1, o2)
  end
--~ 数
--~ 右移几位
function d.位右移(o1, o2)
  return bit.rshift(o1, o2)
  end
--~ 键
--~ 最大值
--~ 键
--~ 值
function d.筛对中最大值(o1, o2, o3, o4)
  if o2 < o4 then
    return true
    end
  end
--~ 最短键
--~ 值
--~ 键
--~ 值
function d.筛对中最短键(o1, o2, o3, o4)
  if #o1 > #o3 then
    return true
    end
  end
--~ 最短文
--~ 值
function d.筛排中最短文(o1, o2)
  if #o1 > #o2 then
    return true
    end
  end
--~ 内数
function d.to_uint64(o1)
  local uint64_pointer = ffi.new("uint64_t[1]", o1)
  return uint64_pointer[0]
  end
--~ 键
--~ 值
--~ 要找的值
function d.全等筛对中值(o1, o2, o3)
  if o2 == o3 then
    return o1, o2
  else
    end
  end
return d
