//--------------------------------------------------------------------- %typemap(out) uint64 { $result = PyLong_FromUnsignedLongLong((unsigned long long) $1); } //--------------------------------------------------------------------- %typemap(in) uint64 { uint64 $1_temp; if ( !PyW_GetNumber($input, &$1_temp) ) { PyErr_SetString(PyExc_TypeError, "Expected an uint64 type"); return NULL; } $1 = $1_temp; } //--------------------------------------------------------------------- %ignore wchar2char; %ignore hit_counter_t; %ignore reg_hit_counter; %ignore create_hit_counter; %ignore hit_counter_timer; %ignore print_all_counters; %ignore incrementer_t; %ignore reloc_info_t; // swig under mac chokes on this %ignore qmutex_create; %ignore qiterator; %ignore qmutex_free; %ignore qmutex_lock; %ignore qmutex_t; %ignore qmutex_unlock; %ignore qsem_create; %ignore qsem_free; %ignore qsem_post; %ignore qsem_wait; %ignore qsemaphore_t; %ignore qthread_cb_t; %ignore qthread_create; %ignore qthread_free; %ignore qthread_join; %ignore qthread_kill; %ignore qthread_self; %ignore qthread_same; %ignore qthread_t; %ignore qhandle_t; %ignore qpipe_create; %ignore qpipe_read; %ignore qpipe_write; %ignore qpipe_close; %ignore qwait_for_handles; %ignore qstrlen; %ignore qstrcmp; %ignore qstrstr; %ignore qstrchr; %ignore qstrrchr; %ignore bytevec_t; %ignore qstrvec_t; %ignore reloc_info_t; %ignore relobj_t; %ignore wchar2char; %ignore u2cstr; %ignore c2ustr; %ignore base64_encode; %ignore base64_decode; %ignore utf8_unicode; %ignore unicode_utf8; %ignore win_utf2idb; %ignore char2oem; %ignore oem2char; %ignore set_codepages; %ignore get_codepages; %ignore convert_codepage; %ignore test_bit; %ignore set_bit; %ignore clear_bit; %ignore set_all_bits; %ignore clear_all_bits; %ignore interval::overlap; %ignore interval::includes; %ignore interval::contains; %ignore qrotl; %ignore qrotr; %ignore setflag; %ignore read2bytes; %ignore rotate_left; //%ignore qswap; %ignore swap32; %ignore swap16; %ignore swap_value; %ignore qalloc_or_throw; %ignore qrealloc_or_throw; %ignore get_buffer_for_sysdir; %ignore get_buffer_for_winerr; %ignore call_atexits; %ignore launch_process_params_t; %ignore launch_process; %ignore term_process; %ignore get_process_exit_code; %ignore BELOW_NORMAL_PRIORITY_CLASS; %ignore parse_command_line; %ignore parse_command_line2; %ignore parse_command_line3; %rename (parse_command_line3) py_parse_command_line; %ignore qgetenv; %ignore qsetenv; %ignore qctime; %ignore qlocaltime; %ignore qstrftime; %ignore qstrftime64; %ignore qstrtok; %ignore qstrlwr; %ignore qstrupr; void qvector::grow(const unsigned int &x=0); %ignore qvector::grow; %ignore qvector::at(size_t); // simpleline_t doesn't implement '=='. Therefore, all these cannot be present in the instantiated template. %ignore qvector::operator==; %ignore qvector::operator!=; %ignore qvector::find; %ignore qvector::has; %ignore qvector::del; %ignore qvector::add_unique; %include "pro.h" //--------------------------------------------------------------------- %extend qvector { inline size_t __len__() const { return $self->size(); } // The fact that we are returning a const version of a reference to the // type is what allows SWIG to generate a wrapper for this method, that // will build an proper object (int, unsigned int, ...) instead // of a pointer. Remove the 'const', and you'll see that, in // SWIGINTERN PyObject *_wrap_uvalvec_t___getitem__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { // it will produce this: // resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_unsigned_int, 0 | 0 ); // instead of that: // resultobj = SWIG_From_unsigned_SS_int(static_cast< unsigned int >(*result)); inline const T& __getitem__(size_t i) const throw(std::out_of_range) { if (i >= $self->size() || i < 0) throw std::out_of_range("out of bounds access"); return $self->at(i); } inline void __setitem__(size_t i, const T& v) throw(std::out_of_range) { if (i >= $self->size() || i < 0) throw std::out_of_range("out of bounds access"); $self->at(i) = v; } %pythoncode { __iter__ = _bounded_getitem_iterator } } //--------------------------------------------------------------------- %template(uvalvec_t) qvector; // unsigned values %template(intvec_t) qvector; %template(boolvec_t) qvector; %template(casevec_t) qvector >; // signed values %template(strvec_t) qvector; %pythoncode %{ _listify_types(uvalvec_t, intvec_t, boolvec_t, casevec_t, strvec_t) %}