/* #<pydoc> def generate_disassembly(ea, max_lines, as_stack, notags): """ Generate disassembly lines (many lines) and put them into a buffer @param ea: address to generate disassembly for @param max_lines: how many lines max to generate @param as_stack: Display undefined items as 2/4/8 bytes @return: - None on failure - tuple(most_important_line_number, tuple(lines)) : Returns a tuple containing the most important line number and a tuple of generated lines """ pass #</pydoc> */ PyObject *py_generate_disassembly( ea_t ea, int max_lines, bool as_stack, bool notags) { PYW_GIL_CHECK_LOCKED_SCOPE(); if ( max_lines <= 0 ) Py_RETURN_NONE; qstring qbuf; char **lines = new char *[max_lines]; int lnnum; int nlines = generate_disassembly(ea, lines, max_lines, &lnnum, as_stack); newref_t py_tuple(PyTuple_New(nlines)); for ( int i=0; i<nlines; i++ ) { const char *s = lines[i]; size_t line_len = strlen(s); if ( notags ) { qbuf.resize(line_len+5); tag_remove(s, &qbuf[0], line_len); s = (const char *)&qbuf[0]; } PyTuple_SetItem(py_tuple.o, i, PyString_FromString(s)); qfree(lines[i]); } delete [] lines; return Py_BuildValue("(iO)", lnnum, py_tuple.o); }
/* #<pydoc> def generate_disassembly(ea, max_lines, as_stack, notags): """ Generate disassembly lines (many lines) and put them into a buffer @param ea: address to generate disassembly for @param max_lines: how many lines max to generate @param as_stack: Display undefined items as 2/4/8 bytes @return: - None on failure - tuple(most_important_line_number, tuple(lines)) : Returns a tuple containing the most important line number and a tuple of generated lines """ pass #</pydoc> */ PyObject *py_generate_disassembly( ea_t ea, int max_lines, bool as_stack, bool notags) { PYW_GIL_CHECK_LOCKED_SCOPE(); if ( max_lines <= 0 ) Py_RETURN_NONE; qstring qbuf; qstrvec_t lines; int lnnum; int nlines = generate_disassembly(&lines, &lnnum, ea, max_lines, as_stack); newref_t py_tuple(PyTuple_New(nlines)); for ( int i=0; i < nlines; i++ ) { const qstring &l = lines[i]; const char *s = l.c_str(); if ( notags ) { tag_remove(&qbuf, l); s = qbuf.c_str(); } PyTuple_SetItem(py_tuple.o, i, PyString_FromString(s)); } return Py_BuildValue("(iO)", lnnum, py_tuple.o); }
svn_error_t *proplist_receiver_c ( void *baton_, const char *path, apr_hash_t *prop_hash, apr_pool_t *pool ) { ProplistReceiveBaton *baton = reinterpret_cast<ProplistReceiveBaton *>( baton_ ); PythonDisallowThreads callback_permission( baton->m_permission ); Py::Dict prop_dict; Py::Tuple py_tuple( 2 ); py_tuple[0] = Py::String( path ); py_tuple[1] = propsToObject( prop_hash, baton->m_pool ); baton->m_prop_list.append( py_tuple ); return SVN_NO_ERROR; }
svn_error_t *list_receiver_c ( void *baton_, const char *path, const svn_dirent_t *dirent, const svn_lock_t *lock, const char *abs_path, apr_pool_t *pool ) { ListReceiveBaton *baton = reinterpret_cast<ListReceiveBaton *>( baton_ ); PythonDisallowThreads callback_permission( baton->m_permission ); std::string full_path( baton->m_url_or_path ); std::string full_repos_path( abs_path ); if( strlen( path ) != 0 ) { full_path += "/"; full_path += path; full_repos_path += "/"; full_repos_path += path; } Py::Tuple py_tuple( 2 ); Py::Dict entry_dict; entry_dict[ *py_name_path ] = Py::String( full_path, name_utf8 ); entry_dict[ *py_name_repos_path ] = Py::String( full_repos_path, name_utf8 ); if( dirent != NULL ) { if( baton->m_dirent_fields&SVN_DIRENT_KIND ) { entry_dict[ *py_name_kind ] = toEnumValue( dirent->kind ); } if( baton->m_dirent_fields&SVN_DIRENT_SIZE ) { entry_dict[ *py_name_size ] = Py::Long( Py::Float( double( static_cast<signed_int64>( dirent->size ) ) ) ); } if( baton->m_dirent_fields&SVN_DIRENT_CREATED_REV ) { entry_dict[ *py_name_created_rev ] = Py::asObject( new pysvn_revision( svn_opt_revision_number, 0, dirent->created_rev ) ); } if( baton->m_dirent_fields&SVN_DIRENT_TIME ) { entry_dict[ *py_name_time ] = toObject( dirent->time ); } if( baton->m_dirent_fields&SVN_DIRENT_HAS_PROPS ) { entry_dict[ *py_name_has_props ] = Py::Int( dirent->has_props ); } if( baton->m_dirent_fields&SVN_DIRENT_LAST_AUTHOR ) { entry_dict[ *py_name_last_author ] = utf8_string_or_none( dirent->last_author ); } } py_tuple[0] = baton->m_wrapper_list->wrapDict( entry_dict ); if( lock == NULL ) { py_tuple[1] = Py::None(); } else { py_tuple[1] = toObject( *lock, *baton->m_wrapper_lock ); } baton->m_list_list.append( py_tuple ); return SVN_NO_ERROR; }