00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #include "simlpy/interpreter_defs.h"
00032 #include "simlpy/interpreter_hooks.h"
00033
00034 #include "parsers.h"
00035
00036 #include "WrapNode.h"
00037 #include "WrapLink.h"
00038
00039 #include "simlpy/SimulationException.h"
00040
00041 WrapNode*
00042 parse_node( InterpreterItem o )
00043 {
00044 if ( 0 == o )
00045 {
00046 PyErr_SetString(PyExc_ValueError,"null pointer");
00047 throw SimulationException( __FILE__ , __LINE__ );
00048 }
00049 ItemWrapper item = resolve_symbol(o);
00050 if ( 0 != item.type.find( "node" ) )
00051 {
00052 PyErr_SetString(PyExc_TypeError,"a node was expected");
00053 throw SimulationException( __FILE__ , __LINE__ );
00054 }
00055 return ((WrapNode*)(item.item));
00056 }
00057
00058 WrapLink*
00059 parse_link( InterpreterItem o )
00060 {
00061 if ( 0 == o )
00062 {
00063 PyErr_SetString(PyExc_ValueError,"null pointer");
00064 throw SimulationException( __FILE__ , __LINE__ );
00065 }
00066 ItemWrapper item = resolve_symbol(o);
00067 if ( 0 != item.type.find( "link" ) )
00068 {
00069 PyErr_SetString(PyExc_TypeError,"a link was expected");
00070 throw SimulationException( __FILE__ , __LINE__ );
00071 }
00072 return ((WrapLink*)(item.item));
00073 }
00074
00075 std::string
00076 stringify( const DTN::ByteString& s )
00077 {
00078 if ( 0 == s.length() ) return "-";
00079 std::string os;
00080 bool printable = true;
00081 for ( unsigned int i = 0 ; i < s.length() ; ++i )
00082 {
00083 if ( !isprint(s[i]) ) printable = false;
00084 if ( isspace(s[i]) ) printable = false;
00085 }
00086 if ( ! printable )
00087 {
00088 os += "0x";
00089 }
00090 for ( unsigned int i = 0 ; i < s.length() ; ++i )
00091 {
00092 if ( printable )
00093 {
00094 os += s[i];
00095 }
00096 else
00097 {
00098 char tmp[3];
00099 ::sprintf(tmp,"%02X",s[i]);
00100 os += tmp[0];
00101 os += tmp[1];
00102 }
00103 }
00104
00105 return os;
00106 }