Logikai szimulátor
 Összes Osztályok Fájl Függvények Változók
logic_vm osztályreferencia

#include <logic_vm.hpp>

+ A logic_vm osztály együttműködési diagramja:

Osztályok

class  block

Publikus tagfüggvények

 logic_vm (std::string const &vm_name="Default-VM")
void add (block *element)
blockelement (std::string const &id)
std::string get_name ()
unsigned get_time ()
void info ()
void run (unsigned end)
void list_queue ()
 ~logic_vm ()

Publikus attribútumok

std::list< block * > elements

Védett attribútumok

std::list< std::pair< unsigned,
std::function< void()> > > 
queue
std::ofstream dot_file

Privát attribútumok

unsigned time_stamp = 0
std::string vm_name

Részletes leírás

Ez az osztály valósítja meg a logikai szimulátort. Ezt példányosítva tudunk "kapcsolásokat" létrehozni. A példányokba kell beregisztrálnunk az áramkörünk elemeit, valamint azokat összekötni.

Definíció a(z) logic_vm.hpp fájl 16. sorában.

Konstruktorok és destruktorok dokumentációja

logic_vm::logic_vm ( std::string const &  vm_name = "Default-VM")
inline

Definíció a(z) logic_vm.hpp fájl 259. sorában.

Hivatkozások dot_file és vm_name.

std::cout << "Logic VM " << vm_name << " has been created." << std::endl;
dot_file.open(vm_name+".dot");
dot_file << "digraph " << vm_name << " {\n";
}
logic_vm::~logic_vm ( )
inline

Definíció a(z) logic_vm.hpp fájl 326. sorában.

Hivatkozások dot_file és vm_name.

{
dot_file << "}\n";
dot_file.close();
std::cout << "Logic VM " << vm_name << " has been destructed." << std::endl;
}

Tagfüggvények dokumentációja

void logic_vm::add ( block element)
inline

Áramköri elem hozzáadása.

Paraméterek
elementaz áramkörre mutató pointer

Definíció a(z) logic_vm.hpp fájl 269. sorában.

Hivatkozások dot_file, elements, logic_vm::block::get_id() és logic_vm::block::set_parent().

Hivatkozások: main().

{
elements.push_back(element);
dot_file << element->get_id() << " [label=\"" << element->get_id() << "\" shape=\"box\"]" << "\n";
}
block& logic_vm::element ( std::string const &  id)
inline

Áramköri elem keresése azonosító alapján.

Paraméterek
idazonosító
Visszatérési érték
az elemre mutató referencia

Definíció a(z) logic_vm.hpp fájl 281. sorában.

Hivatkozások elements és logic_vm::block::get_id().

Hivatkozások: main().

{
for( auto &element: elements)
if (element->get_id() == id)
return *element;
throw "";
}
std::string logic_vm::get_name ( )
inline

Logikai szimulátor nevének lekérdezése.

Definíció a(z) logic_vm.hpp fájl 289. sorában.

Hivatkozások vm_name.

Hivatkozások: logic_vm::block::connect(), logic_vm::block::print() és logic_vm::block::port::set_state().

{ return vm_name; }
unsigned logic_vm::get_time ( )
inline

Logikai szimulátor aktuális idejének lekérdezése.

Definíció a(z) logic_vm.hpp fájl 291. sorában.

Hivatkozások time_stamp.

Hivatkozások: logic_vm::block::port::set_state().

{ return time_stamp; }
void logic_vm::info ( )
inline

Statisztikák kiírása.

Definíció a(z) logic_vm.hpp fájl 293. sorában.

Hivatkozások elements, queue, time_stamp és vm_name.

Hivatkozások: main().

{
std::cout << " VM informations:" << std::endl;
std::cout << "\t vm_name: \t\t" << vm_name << std::endl;
std::cout << "\t time_stamp: \t\t" << time_stamp << std::endl;
std::cout << "\t Elements in the VM: \t" << elements.size() << std::endl;
std::cout << "\t Events in the queue: \t" << queue.size() << std::endl;
}
void logic_vm::list_queue ( )
inline

A végrehajtási lista kiírása

Definíció a(z) logic_vm.hpp fájl 320. sorában.

Hivatkozások queue.

{
for(auto instance: queue) {
std::cout << "Time: " << instance.first << std::endl;
}
}
void logic_vm::run ( unsigned  end)
inline

Szimuláció futtatása. A szimuláció előre definiált ideig fut.

Paraméterek
enda kívánt időlépések száma

Definíció a(z) logic_vm.hpp fájl 306. sorában.

Hivatkozások queue és time_stamp.

Hivatkozások: main().

{
unsigned until = time_stamp+end;
for(; time_stamp<until; ++time_stamp) {
while(queue.front().first == time_stamp) {
std::cout << "Event at " << time_stamp << std::endl;
(queue.front().second)();
queue.pop_front();
}
}
}

Adattagok dokumentációja

std::ofstream logic_vm::dot_file
protected

Dot file.

Definíció a(z) logic_vm.hpp fájl 255. sorában.

Hivatkozások: add(), logic_vm::block::port::add_driven(), logic_vm::block::add_port(), logic_vm() és ~logic_vm().

std::list<block*> logic_vm::elements

A szimulátorhoz adott áramköri elemek pointerei.

Definíció a(z) logic_vm.hpp fájl 258. sorában.

Hivatkozások: add(), element() és info().

std::list<std::pair<unsigned, std::function<void()> > > logic_vm::queue
protected

Feladatlista. Tartalmazza a végrehajtandó eseményt és annak az időpontját.

Definíció a(z) logic_vm.hpp fájl 253. sorában.

Hivatkozások: info(), list_queue(), run() és logic_vm::block::port::set_state().

unsigned logic_vm::time_stamp = 0
private

A logikai szimulátor aktuális idejét tartalmazó változó.

Definíció a(z) logic_vm.hpp fájl 245. sorában.

Hivatkozások: get_time(), info() és run().

std::string logic_vm::vm_name
private

A szimulátor példány neve.

Definíció a(z) logic_vm.hpp fájl 247. sorában.

Hivatkozások: get_name(), info(), logic_vm() és ~logic_vm().


Ez a dokumentáció az osztályról a következő fájl alapján készült: