using FilePtrVector = vector<FILE *>;
PYBIND11_MAKE_OPAQUE(FilePtrVector)
using OstreamPtrVector = vector<ostream *>;
PYBIND11_MAKE_OPAQUE(OstreamPtrVector)
using StringVector = vector<string>;
PYBIND11_MAKE_OPAQUE(StringVector)
using StringSet = set<string>;
PYBIND11_MAKE_OPAQUE(StringSet)
using StringToLogexpecteditemDict = dict<string, LogExpectedItem>;
PYBIND11_MAKE_OPAQUE(StringToLogexpecteditemDict)
using DesignPtrVector = vector<Design *>;
PYBIND11_MAKE_OPAQUE(DesignPtrVector)
using IdstringPool = pool<IdString>;
PYBIND11_MAKE_OPAQUE(IdstringPool)
using IdstringToCelltypeDict = dict<IdString, CellType>;
PYBIND11_MAKE_OPAQUE(IdstringToCelltypeDict)
using CellPtrSet = set<Cell *>;
PYBIND11_MAKE_OPAQUE(CellPtrSet)
using SigmapVector = vector<SigMap>;
PYBIND11_MAKE_OPAQUE(SigmapVector)
using SelectionVector = vector<Selection>;
PYBIND11_MAKE_OPAQUE(SelectionVector)
using StringToStringDict = dict<string, string>;
PYBIND11_MAKE_OPAQUE(StringToStringDict)
using StateVector = vector<State>;
PYBIND11_MAKE_OPAQUE(StateVector)
using StringPool = pool<string>;
PYBIND11_MAKE_OPAQUE(StringPool)
using IntVector = vector<int>;
PYBIND11_MAKE_OPAQUE(IntVector)
using IdstringToConstDict = dict<IdString, Const>;
PYBIND11_MAKE_OPAQUE(IdstringToConstDict)
using SigbitToSigbitDict = dict<SigBit, SigBit>;
PYBIND11_MAKE_OPAQUE(SigbitToSigbitDict)
using SigbitPool = pool<SigBit>;
PYBIND11_MAKE_OPAQUE(SigbitPool)
using SigbitSet = set<SigBit>;
PYBIND11_MAKE_OPAQUE(SigbitSet)
using WirePtrPool = pool<Wire *>;
PYBIND11_MAKE_OPAQUE(WirePtrPool)
using SigbitVector = vector<SigBit>;
PYBIND11_MAKE_OPAQUE(SigbitVector)
using IdstringToIdstringPoolDict = dict<IdString, pool<IdString>>;
PYBIND11_MAKE_OPAQUE(IdstringToIdstringPoolDict)
using ModulePtrVector = vector<Module *>;
PYBIND11_MAKE_OPAQUE(ModulePtrVector)
using MonitorPtrPool = pool<Monitor *>;
PYBIND11_MAKE_OPAQUE(MonitorPtrPool)
using IdstringToModulePtrDict = dict<IdString, Module *>;
PYBIND11_MAKE_OPAQUE(IdstringToModulePtrDict)
using BindingPtrVector = vector<Binding *>;
PYBIND11_MAKE_OPAQUE(BindingPtrVector)
using IdstringToSelectionDict = dict<IdString, Selection>;
PYBIND11_MAKE_OPAQUE(IdstringToSelectionDict)
using IdstringToIdstringDict = dict<IdString, IdString>;
PYBIND11_MAKE_OPAQUE(IdstringToIdstringDict)
using SigsigVector = vector<SigSig>;
PYBIND11_MAKE_OPAQUE(SigsigVector)
using WirePtrVector = vector<Wire *>;
PYBIND11_MAKE_OPAQUE(WirePtrVector)
using CellPtrVector = vector<Cell *>;
PYBIND11_MAKE_OPAQUE(CellPtrVector)
using MemoryPtrVector = vector<Memory *>;
PYBIND11_MAKE_OPAQUE(MemoryPtrVector)
using ProcessPtrVector = vector<Process *>;
PYBIND11_MAKE_OPAQUE(ProcessPtrVector)
using NamedobjectPtrVector = vector<NamedObject *>;
PYBIND11_MAKE_OPAQUE(NamedobjectPtrVector)
using IdstringToWirePtrDict = dict<IdString, Wire *>;
PYBIND11_MAKE_OPAQUE(IdstringToWirePtrDict)
using IdstringToCellPtrDict = dict<IdString, Cell *>;
PYBIND11_MAKE_OPAQUE(IdstringToCellPtrDict)
using IdstringIdict = idict<IdString>;
PYBIND11_MAKE_OPAQUE(IdstringIdict)
using IdstringToMemoryPtrDict = dict<IdString, Memory *>;
PYBIND11_MAKE_OPAQUE(IdstringToMemoryPtrDict)
using IdstringToProcessPtrDict = dict<IdString, Process *>;
PYBIND11_MAKE_OPAQUE(IdstringToProcessPtrDict)
using IdstringVector = vector<IdString>;
PYBIND11_MAKE_OPAQUE(IdstringVector)
using CellPtrPool = pool<Cell *>;
PYBIND11_MAKE_OPAQUE(CellPtrPool)
using CellPtrIdstringPairPool = pool<pair<Cell *, IdString>>;
PYBIND11_MAKE_OPAQUE(CellPtrIdstringPairPool)
using WirePtrToCellPtrPoolDict = dict<Wire *, pool<Cell *>>;
PYBIND11_MAKE_OPAQUE(WirePtrToCellPtrPoolDict)
using IdstringToSigspecDict = dict<IdString, SigSpec>;
PYBIND11_MAKE_OPAQUE(IdstringToSigspecDict)
using SigspecVector = vector<SigSpec>;
PYBIND11_MAKE_OPAQUE(SigspecVector)
using SwitchrulePtrVector = vector<SwitchRule *>;
PYBIND11_MAKE_OPAQUE(SwitchrulePtrVector)
using CaserulePtrVector = vector<CaseRule *>;
PYBIND11_MAKE_OPAQUE(CaserulePtrVector)
using MemwriteactionVector = vector<MemWriteAction>;
PYBIND11_MAKE_OPAQUE(MemwriteactionVector)
using SyncrulePtrVector = vector<SyncRule *>;
PYBIND11_MAKE_OPAQUE(SyncrulePtrVector)
static void bind_autogenerated_opaque_containers(py::module &m) {
	py::hashlib::bind_vector<vector<FILE *>, FILE *>(m, "FilePtrVector");
	py::implicitly_convertible<py::iterable, FilePtrVector>();
	py::hashlib::bind_vector<vector<ostream *>, ostream *>(m, "OstreamPtrVector");
	py::implicitly_convertible<py::iterable, OstreamPtrVector>();
	py::hashlib::bind_vector<vector<string>, string>(m, "StringVector");
	py::implicitly_convertible<py::iterable, StringVector>();
	py::hashlib::bind_set<set<string>, string>(m, "StringSet");
	py::implicitly_convertible<py::iterable, StringSet>();
	py::hashlib::bind_dict<dict<string, LogExpectedItem>, string, LogExpectedItem>(m, "StringToLogexpecteditemDict");
	py::implicitly_convertible<py::iterable, StringToLogexpecteditemDict>();
	py::hashlib::bind_vector<vector<Design *>, Design *>(m, "DesignPtrVector");
	py::implicitly_convertible<py::iterable, DesignPtrVector>();
	py::hashlib::bind_pool<pool<IdString>, IdString>(m, "IdstringPool");
	py::implicitly_convertible<py::iterable, IdstringPool>();
	py::hashlib::bind_dict<dict<IdString, CellType>, IdString, CellType>(m, "IdstringToCelltypeDict");
	py::implicitly_convertible<py::iterable, IdstringToCelltypeDict>();
	py::hashlib::bind_set<set<Cell *>, Cell *>(m, "CellPtrSet");
	py::implicitly_convertible<py::iterable, CellPtrSet>();
	py::hashlib::bind_vector<vector<SigMap>, SigMap>(m, "SigmapVector");
	py::implicitly_convertible<py::iterable, SigmapVector>();
	py::hashlib::bind_vector<vector<Selection>, Selection>(m, "SelectionVector");
	py::implicitly_convertible<py::iterable, SelectionVector>();
	py::hashlib::bind_dict<dict<string, string>, string, string>(m, "StringToStringDict");
	py::implicitly_convertible<py::iterable, StringToStringDict>();
	py::hashlib::bind_vector<vector<State>, State>(m, "StateVector");
	py::implicitly_convertible<py::iterable, StateVector>();
	py::hashlib::bind_pool<pool<string>, string>(m, "StringPool");
	py::implicitly_convertible<py::iterable, StringPool>();
	py::hashlib::bind_vector<vector<int>, int>(m, "IntVector");
	py::implicitly_convertible<py::iterable, IntVector>();
	py::hashlib::bind_dict<dict<IdString, Const>, IdString, Const>(m, "IdstringToConstDict");
	py::implicitly_convertible<py::iterable, IdstringToConstDict>();
	py::hashlib::bind_dict<dict<SigBit, SigBit>, SigBit, SigBit>(m, "SigbitToSigbitDict");
	py::implicitly_convertible<py::iterable, SigbitToSigbitDict>();
	py::hashlib::bind_pool<pool<SigBit>, SigBit>(m, "SigbitPool");
	py::implicitly_convertible<py::iterable, SigbitPool>();
	py::hashlib::bind_set<set<SigBit>, SigBit>(m, "SigbitSet");
	py::implicitly_convertible<py::iterable, SigbitSet>();
	py::hashlib::bind_pool<pool<Wire *>, Wire *>(m, "WirePtrPool");
	py::implicitly_convertible<py::iterable, WirePtrPool>();
	py::hashlib::bind_vector<vector<SigBit>, SigBit>(m, "SigbitVector");
	py::implicitly_convertible<py::iterable, SigbitVector>();
	py::hashlib::bind_dict<dict<IdString, pool<IdString>>, IdString, pool<IdString>>(m, "IdstringToIdstringPoolDict");
	py::implicitly_convertible<py::iterable, IdstringToIdstringPoolDict>();
	py::hashlib::bind_vector<vector<Module *>, Module *>(m, "ModulePtrVector");
	py::implicitly_convertible<py::iterable, ModulePtrVector>();
	py::hashlib::bind_pool<pool<Monitor *>, Monitor *>(m, "MonitorPtrPool");
	py::implicitly_convertible<py::iterable, MonitorPtrPool>();
	py::hashlib::bind_dict<dict<IdString, Module *>, IdString, Module *>(m, "IdstringToModulePtrDict");
	py::implicitly_convertible<py::iterable, IdstringToModulePtrDict>();
	py::hashlib::bind_vector<vector<Binding *>, Binding *>(m, "BindingPtrVector");
	py::implicitly_convertible<py::iterable, BindingPtrVector>();
	py::hashlib::bind_dict<dict<IdString, Selection>, IdString, Selection>(m, "IdstringToSelectionDict");
	py::implicitly_convertible<py::iterable, IdstringToSelectionDict>();
	py::hashlib::bind_dict<dict<IdString, IdString>, IdString, IdString>(m, "IdstringToIdstringDict");
	py::implicitly_convertible<py::iterable, IdstringToIdstringDict>();
	py::hashlib::bind_vector<vector<SigSig>, SigSig>(m, "SigsigVector");
	py::implicitly_convertible<py::iterable, SigsigVector>();
	py::hashlib::bind_vector<vector<Wire *>, Wire *>(m, "WirePtrVector");
	py::implicitly_convertible<py::iterable, WirePtrVector>();
	py::hashlib::bind_vector<vector<Cell *>, Cell *>(m, "CellPtrVector");
	py::implicitly_convertible<py::iterable, CellPtrVector>();
	py::hashlib::bind_vector<vector<Memory *>, Memory *>(m, "MemoryPtrVector");
	py::implicitly_convertible<py::iterable, MemoryPtrVector>();
	py::hashlib::bind_vector<vector<Process *>, Process *>(m, "ProcessPtrVector");
	py::implicitly_convertible<py::iterable, ProcessPtrVector>();
	py::hashlib::bind_vector<vector<NamedObject *>, NamedObject *>(m, "NamedobjectPtrVector");
	py::implicitly_convertible<py::iterable, NamedobjectPtrVector>();
	py::hashlib::bind_dict<dict<IdString, Wire *>, IdString, Wire *>(m, "IdstringToWirePtrDict");
	py::implicitly_convertible<py::iterable, IdstringToWirePtrDict>();
	py::hashlib::bind_dict<dict<IdString, Cell *>, IdString, Cell *>(m, "IdstringToCellPtrDict");
	py::implicitly_convertible<py::iterable, IdstringToCellPtrDict>();
	py::hashlib::bind_idict<idict<IdString>, IdString>(m, "IdstringIdict");
	py::implicitly_convertible<py::iterable, IdstringIdict>();
	py::hashlib::bind_dict<dict<IdString, Memory *>, IdString, Memory *>(m, "IdstringToMemoryPtrDict");
	py::implicitly_convertible<py::iterable, IdstringToMemoryPtrDict>();
	py::hashlib::bind_dict<dict<IdString, Process *>, IdString, Process *>(m, "IdstringToProcessPtrDict");
	py::implicitly_convertible<py::iterable, IdstringToProcessPtrDict>();
	py::hashlib::bind_vector<vector<IdString>, IdString>(m, "IdstringVector");
	py::implicitly_convertible<py::iterable, IdstringVector>();
	py::hashlib::bind_pool<pool<Cell *>, Cell *>(m, "CellPtrPool");
	py::implicitly_convertible<py::iterable, CellPtrPool>();
	py::hashlib::bind_pool<pool<pair<Cell *, IdString>>, pair<Cell *, IdString>>(m, "CellPtrIdstringPairPool");
	py::implicitly_convertible<py::iterable, CellPtrIdstringPairPool>();
	py::hashlib::bind_dict<dict<Wire *, pool<Cell *>>, Wire *, pool<Cell *>>(m, "WirePtrToCellPtrPoolDict");
	py::implicitly_convertible<py::iterable, WirePtrToCellPtrPoolDict>();
	py::hashlib::bind_dict<dict<IdString, SigSpec>, IdString, SigSpec>(m, "IdstringToSigspecDict");
	py::implicitly_convertible<py::iterable, IdstringToSigspecDict>();
	py::hashlib::bind_vector<vector<SigSpec>, SigSpec>(m, "SigspecVector");
	py::implicitly_convertible<py::iterable, SigspecVector>();
	py::hashlib::bind_vector<vector<SwitchRule *>, SwitchRule *>(m, "SwitchrulePtrVector");
	py::implicitly_convertible<py::iterable, SwitchrulePtrVector>();
	py::hashlib::bind_vector<vector<CaseRule *>, CaseRule *>(m, "CaserulePtrVector");
	py::implicitly_convertible<py::iterable, CaserulePtrVector>();
	py::hashlib::bind_vector<vector<MemWriteAction>, MemWriteAction>(m, "MemwriteactionVector");
	py::implicitly_convertible<py::iterable, MemwriteactionVector>();
	py::hashlib::bind_vector<vector<SyncRule *>, SyncRule *>(m, "SyncrulePtrVector");
	py::implicitly_convertible<py::iterable, SyncrulePtrVector>();
}
