[ { "Primitive" :
    { "name"     : "Clash.Explicit.SimIO.mealyIO"
    , "primType" : "Function"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.display"
    , "kind"     : "Declaration"
    , "renderVoid" : "RenderVoid"
    , "template" : "$display(~ARG[0]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.finish"
    , "kind"     : "Declaration"
    , "renderVoid" : "RenderVoid"
    , "template" : "$finish_and_return(~LIT[0]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.reg"
    , "kind"     : "Expression"
    , "template" : "~ARG[0]"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.readReg"
    , "kind"     : "Expression"
    , "template" : "~ARG[0]"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.writeReg"
    , "kind"     : "Declaration"
    , "renderVoid" : "RenderVoid"
    , "template" : "~ARG[0] = ~ARG[1];"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.openFile"
    , "kind"     : "Expression"
    , "template" : "$fopen(~FILE[~LIT[0]],~LIT[1])"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.closeFile"
    , "kind"     : "Declaration"
    , "renderVoid" : "RenderVoid"
    , "template" : "$fclose(~ARG[0]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.getChar"
    , "kind"     : "Expression"
    , "template" : "$fgetc(~ARG[0])"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.putChar"
    , "kind"     : "Declaration"
    , "renderVoid" : "RenderVoid"
    , "template" : "$ungetc(~ARG[0],~ARG[1]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.getLine"
    , "kind"     : "Declaration"
    , "template" : "~RESULT = $fgets(~ARG[2],~ARG[1]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.isEOF"
    , "kind"     : "Expression"
    , "template" : "$feof(~ARG[0])"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.flush"
    , "kind"     : "Declaration"
    , "renderVoid" : "RenderVoid"
    , "template" : "$fflush(~ARG[0]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.seek"
    , "kind"     : "Declaration"
    , "template" : "~RESULT = $fseek(~ARG[0],~ARG[1],~ARG[2]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.rewind"
    , "kind"     : "Declaration"
    , "template" : "~RESULT = $rewind(~ARG[0]);"
    }
  }
, { "BlackBox" :
    { "name"     : "Clash.Explicit.SimIO.tell"
    , "kind"     : "Expression"
    , "template" : "$ftell(~ARG[0])"
    }
  }
, { "Primitive" :
    { "name"     : "Clash.Explicit.SimIO.fmapSimIO#"
    , "primType" : "Function"
    }
  }
, { "Primitive" :
    { "name"     : "Clash.Explicit.SimIO.pureSimIO#"
    , "primType" : "Function"
    }
  }
, { "Primitive" :
    { "name"     : "Clash.Explicit.SimIO.apSimIO#"
    , "primType" : "Function"
    }
  }
, { "Primitive" :
    { "name"     : "Clash.Explicit.SimIO.bindSimIO#"
    , "primType" : "Function"
    }
  }
, { "Primitive" :
    { "name"     : "Clash.Explicit.SimIO.unSimIO#"
    , "primType" : "Function"
    }
  }
]