Line 1... |
Line 1... |
// $Id: RtclRlinkConnect.cpp 495 2013-03-06 17:13:48Z mueller $
|
// $Id: RtclRlinkConnect.cpp 521 2013-05-20 22:16:45Z mueller $
|
//
|
//
|
// Copyright 2011-2013 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
// Copyright 2011-2013 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
//
|
//
|
// This program is free software; you may redistribute and/or modify it under
|
// This program is free software; you may redistribute and/or modify it under
|
// the terms of the GNU General Public License as published by the Free
|
// the terms of the GNU General Public License as published by the Free
|
Line 25... |
Line 25... |
// 2011-02-11 360 0.1 First draft
|
// 2011-02-11 360 0.1 First draft
|
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
|
|
/*!
|
/*!
|
\file
|
\file
|
\version $Id: RtclRlinkConnect.cpp 495 2013-03-06 17:13:48Z mueller $
|
\version $Id: RtclRlinkConnect.cpp 521 2013-05-20 22:16:45Z mueller $
|
\brief Implemenation of class RtclRlinkConnect.
|
\brief Implemenation of class RtclRlinkConnect.
|
*/
|
*/
|
|
|
#include <ctype.h>
|
#include <ctype.h>
|
|
|
Line 301... |
Line 301... |
}
|
}
|
if(!Rtcl::SetVar(interp, vardata[icmd], pres)) return kERR;
|
if(!Rtcl::SetVar(interp, vardata[icmd], pres)) return kERR;
|
}
|
}
|
|
|
if (icmd<varstat.size() && !varstat[icmd].empty()) {
|
if (icmd<varstat.size() && !varstat[icmd].empty()) {
|
RtclOPtr pres = Tcl_NewIntObj((int)cmd.Status());
|
RtclOPtr pres(Tcl_NewIntObj((int)cmd.Status()));
|
if (!Rtcl::SetVar(interp, varstat[icmd], pres)) return kERR;
|
if (!Rtcl::SetVar(interp, varstat[icmd], pres)) return kERR;
|
}
|
}
|
}
|
}
|
|
|
if (!varprint.empty()) {
|
if (!varprint.empty()) {
|
ostringstream sos;
|
ostringstream sos;
|
const RlinkConnect::LogOpts& logopts = Obj().GetLogOpts();
|
const RlinkConnect::LogOpts& logopts = Obj().GetLogOpts();
|
clist.Print(sos, Obj().Context(), &Obj().AddrMap(), logopts.baseaddr,
|
clist.Print(sos, Obj().Context(), &Obj().AddrMap(), logopts.baseaddr,
|
logopts.basedata, logopts.basestat);
|
logopts.basedata, logopts.basestat);
|
RtclOPtr pobj = Rtcl::NewLinesObj(sos);
|
RtclOPtr pobj(Rtcl::NewLinesObj(sos));
|
if (!Rtcl::SetVarOrResult(args.Interp(), varprint, pobj)) return kERR;
|
if (!Rtcl::SetVarOrResult(args.Interp(), varprint, pobj)) return kERR;
|
}
|
}
|
|
|
if (!vardump.empty()) {
|
if (!vardump.empty()) {
|
ostringstream sos;
|
ostringstream sos;
|
clist.Dump(sos, 0);
|
clist.Dump(sos, 0);
|
RtclOPtr pobj = Rtcl::NewLinesObj(sos);
|
RtclOPtr pobj(Rtcl::NewLinesObj(sos));
|
if (!Rtcl::SetVarOrResult(args.Interp(), vardump, pobj)) return kERR;
|
if (!Rtcl::SetVarOrResult(args.Interp(), vardump, pobj)) return kERR;
|
}
|
}
|
|
|
if (!varlist.empty()) {
|
if (!varlist.empty()) {
|
RtclOPtr prlist = Tcl_NewListObj(0, NULL);
|
RtclOPtr prlist(Tcl_NewListObj(0, NULL));
|
for (size_t icmd=0; icmd<clist.Size(); icmd++) {
|
for (size_t icmd=0; icmd<clist.Size(); icmd++) {
|
RlinkCommand& cmd(clist[icmd]);
|
RlinkCommand& cmd(clist[icmd]);
|
|
|
RtclOPtr pres = Tcl_NewListObj(0, NULL);
|
RtclOPtr pres(Tcl_NewListObj(0, NULL));
|
Tcl_ListObjAppendElement(NULL, pres, fCmdnameObj[cmd.Command()]);
|
Tcl_ListObjAppendElement(NULL, pres, fCmdnameObj[cmd.Command()]);
|
Tcl_ListObjAppendElement(NULL, pres, Tcl_NewIntObj((int)cmd.Request()));
|
Tcl_ListObjAppendElement(NULL, pres, Tcl_NewIntObj((int)cmd.Request()));
|
Tcl_ListObjAppendElement(NULL, pres, Tcl_NewIntObj((int)cmd.Flags()));
|
Tcl_ListObjAppendElement(NULL, pres, Tcl_NewIntObj((int)cmd.Flags()));
|
Tcl_ListObjAppendElement(NULL, pres, Tcl_NewIntObj((int)cmd.Status()));
|
Tcl_ListObjAppendElement(NULL, pres, Tcl_NewIntObj((int)cmd.Status()));
|
|
|
Line 443... |
Line 443... |
} else {
|
} else {
|
return args.Quit(string("-E: no mapping defined for '") + name + "'");
|
return args.Quit(string("-E: no mapping defined for '") + name + "'");
|
}
|
}
|
|
|
} else { // amap
|
} else { // amap
|
RtclOPtr plist = Tcl_NewListObj(0, NULL);
|
RtclOPtr plist(Tcl_NewListObj(0, NULL));
|
const RlinkAddrMap::amap_t amap = addrmap.Amap();
|
const RlinkAddrMap::amap_t amap = addrmap.Amap();
|
for (RlinkAddrMap::amap_cit_t it=amap.begin(); it!=amap.end(); it++) {
|
for (RlinkAddrMap::amap_cit_t it=amap.begin(); it!=amap.end(); it++) {
|
Tcl_Obj* tpair[2];
|
Tcl_Obj* tpair[2];
|
tpair[0] = Tcl_NewIntObj(it->first);
|
tpair[0] = Tcl_NewIntObj(it->first);
|
tpair[1] = Tcl_NewStringObj((it->second).c_str(),(it->second).length());
|
tpair[1] = Tcl_NewStringObj((it->second).c_str(),(it->second).length());
|