⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ambulantinterface.h

📁 彩信浏览器
💻 H
📖 第 1 页 / 共 3 页
字号:
/* ==== Declaration of C++ to Python callback module pyambulant ===== */#include "Python.h"#define WITH_EXTERNAL_DOM 1#include "ambulant/lib/node.h"#include "ambulant/lib/document.h"#include "ambulant/lib/event.h"#include "ambulant/lib/event_processor.h"#include "ambulant/lib/parser_factory.h"#include "ambulant/lib/sax_handler.h"#include "ambulant/lib/system.h"#include "ambulant/lib/timer.h"#include "ambulant/lib/transition_info.h"#include "ambulant/common/embedder.h"#include "ambulant/common/factory.h"#include "ambulant/common/gui_player.h"#include "ambulant/common/layout.h"#include "ambulant/common/playable.h"#include "ambulant/common/player.h"#include "ambulant/common/region_dim.h"#include "ambulant/common/region_info.h"#include "ambulant/gui/none/none_gui.h"#include "ambulant/net/datasource.h"#include "ambulant/net/stdio_datasource.h"#include "ambulant/net/posix_datasource.h"#include "ambulant/gui/qt/qt_factory.h"#include "ambulant/gui/SDL/sdl_factory.h"#include "ambulant/net/ffmpeg_factory.h"#include "ambulant/lib/node_navigator.h"/* ============ Glue classes to maintain object identity ============ */class cpppybridge {  public:    virtual ~cpppybridge() {};};#if 1extern PyTypeObject pycppbridge_Type;extern cpppybridge *pycppbridge_getwrapper(PyObject *o);extern void pycppbridge_setwrapper(PyObject *o, cpppybridge *w);inline bool pycppbridge_Check(PyObject *x){	return PyObject_TypeCheck(x, &pycppbridge_Type);}#elseinline bool pycppbridge_Check(PyObject *x) { return false; };inline cpppybridge *pycppbridge_getwrapper(PyObject *o) { return NULL; };inline void pycppbridge_setwrapper(PyObject *o, cpppybridge *w) {};#endifclass node_context : public cpppybridge, public ambulant::lib::node_context {public:	node_context(PyObject *itself);	virtual ~node_context();	void set_prefix_mapping(const std::string& prefix, const std::string& uri);	const char * get_namespace_prefix(const ambulant::lib::xml_string& uri) const;	ambulant::net::url resolve_url(const ambulant::net::url& rurl) const;	const ambulant::lib::node* get_root() const;	const ambulant::lib::node* get_node(const std::string& idd) const;	const custom_test_map* get_custom_tests() const { return NULL; }  private:	PyObject *py_node_context;	friend PyObject *node_contextObj_New(ambulant::lib::node_context *itself);};#define BGEN_BACK_SUPPORT_node_contextinline node_context *Py_WrapAs_node_context(PyObject *o){	node_context *rv = dynamic_cast<node_context*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new node_context(o);	pycppbridge_setwrapper(o, rv);	return rv;}class node : public cpppybridge, public ambulant::lib::node {public:	node(PyObject *itself);	virtual ~node();	const ambulant::lib::node* down() const;	const ambulant::lib::node* up() const;	const ambulant::lib::node* next() const;	ambulant::lib::node* down();	ambulant::lib::node* up();	ambulant::lib::node* next();	void down(ambulant::lib::node* n);	void up(ambulant::lib::node* n);	void next(ambulant::lib::node* n);	const ambulant::lib::node* previous() const;	const ambulant::lib::node* get_last_child() const;	ambulant::lib::node* locate_node(const char* path);	ambulant::lib::node* get_first_child(const char* name);	const ambulant::lib::node* get_first_child(const char* name) const;	ambulant::lib::node* get_root();	const char * get_container_attribute(const char* name) const;	ambulant::lib::node* append_child(ambulant::lib::node* child);	ambulant::lib::node* append_child(const char* name);	ambulant::lib::node* detach();	ambulant::lib::node* clone() const;	void append_data(const char *data__in__, size_t data__len__);	void append_data(const char* c_str);	void append_data(const ambulant::lib::xml_string& str);	void set_attribute(const char* name, const char* value);	void set_attribute(const char* name, const ambulant::lib::xml_string& value);	void set_namespace(const ambulant::lib::xml_string& ns);	const ambulant::lib::xml_string& get_namespace() const;	const ambulant::lib::xml_string& get_local_name() const;	const ambulant::lib::q_name_pair& get_qname() const;	int get_numid() const;	const ambulant::lib::xml_string& get_data() const;	ambulant::lib::xml_string get_trimmed_data() const;	const char * get_attribute(const char* name) const;	const char * get_attribute(const std::string& name) const;	void del_attribute(const char* name);	ambulant::net::url get_url(const char* attrname) const;	unsigned int size() const;	std::string get_path_display_desc() const;	std::string get_sig() const;	ambulant::lib::xml_string xmlrepr() const;	const ambulant::lib::node_context* get_context() const;	void set_context(ambulant::lib::node_context* c);	void get_children(const_node_list& l) const {ambulant::lib::node_navigator<const ambulant::lib::node>::get_children(this, l);}	void set_attributes(const char **attrs) { abort(); }  private:	PyObject *py_node;	ambulant::lib::xml_string get_namespace_rvkeepref;	ambulant::lib::xml_string get_local_name_rvkeepref;	ambulant::lib::q_name_pair get_qname_rvkeepref;	ambulant::lib::xml_string get_data_rvkeepref;	friend PyObject *nodeObj_New(ambulant::lib::node *itself);};#define BGEN_BACK_SUPPORT_nodeinline node *Py_WrapAs_node(PyObject *o){	node *rv = dynamic_cast<node*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new node(o);	pycppbridge_setwrapper(o, rv);	return rv;}class node_factory : public cpppybridge, public ambulant::lib::node_factory {public:	node_factory(PyObject *itself);	virtual ~node_factory();	ambulant::lib::node* new_node(const ambulant::lib::q_name_pair& qn, const ambulant::lib::q_attributes_list& qattrs, const ambulant::lib::node_context* ctx);	ambulant::lib::node* new_node(const ambulant::lib::node* other);	ambulant::lib::node *new_node(const char *local_name, const char **attrs = 0, const ambulant::lib::node_context *ctx = 0) { abort(); };	ambulant::lib::node *new_node(const ambulant::lib::xml_string& local_name, const char **attrs = 0, const ambulant::lib::node_context *ctx = 0) { abort(); };  private:	PyObject *py_node_factory;	friend PyObject *node_factoryObj_New(ambulant::lib::node_factory *itself);};#define BGEN_BACK_SUPPORT_node_factoryinline node_factory *Py_WrapAs_node_factory(PyObject *o){	node_factory *rv = dynamic_cast<node_factory*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new node_factory(o);	pycppbridge_setwrapper(o, rv);	return rv;}class event : public cpppybridge, public ambulant::lib::event {public:	event(PyObject *itself);	virtual ~event();	void fire();  private:	PyObject *py_event;	friend PyObject *eventObj_New(ambulant::lib::event *itself);};#define BGEN_BACK_SUPPORT_eventinline event *Py_WrapAs_event(PyObject *o){	event *rv = dynamic_cast<event*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new event(o);	pycppbridge_setwrapper(o, rv);	return rv;}class event_processor : public cpppybridge, public ambulant::lib::event_processor {public:	event_processor(PyObject *itself);	virtual ~event_processor();	void add_event(ambulant::lib::event* pe, ambulant::lib::timer::time_type t, ambulant::lib::event_priority priority);	void cancel_all_events();	bool cancel_event(ambulant::lib::event* pe, ambulant::lib::event_priority priority);	void serve_events();	ambulant::lib::timer* get_timer() const;	void stop_processor_thread();  private:	PyObject *py_event_processor;	friend PyObject *event_processorObj_New(ambulant::lib::event_processor *itself);};#define BGEN_BACK_SUPPORT_event_processorinline event_processor *Py_WrapAs_event_processor(PyObject *o){	event_processor *rv = dynamic_cast<event_processor*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new event_processor(o);	pycppbridge_setwrapper(o, rv);	return rv;}class parser_factory : public cpppybridge, public ambulant::lib::parser_factory {public:	parser_factory(PyObject *itself);	virtual ~parser_factory();	std::string get_parser_name();	ambulant::lib::xml_parser* new_parser(ambulant::lib::sax_content_handler*, ambulant::lib::sax_error_handler*) { abort(); }  private:	PyObject *py_parser_factory;	friend PyObject *parser_factoryObj_New(ambulant::lib::parser_factory *itself);};#define BGEN_BACK_SUPPORT_parser_factoryinline parser_factory *Py_WrapAs_parser_factory(PyObject *o){	parser_factory *rv = dynamic_cast<parser_factory*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new parser_factory(o);	pycppbridge_setwrapper(o, rv);	return rv;}class xml_parser : public cpppybridge, public ambulant::lib::xml_parser {public:	xml_parser(PyObject *itself);	virtual ~xml_parser();	bool parse(const char *buf__in__, size_t buf__len__, bool final);	void set_content_handler(ambulant::lib::sax_content_handler*) { abort(); }	void set_error_handler(ambulant::lib::sax_error_handler*) { abort(); }  private:	PyObject *py_xml_parser;	friend PyObject *xml_parserObj_New(ambulant::lib::xml_parser *itself);};#define BGEN_BACK_SUPPORT_xml_parserinline xml_parser *Py_WrapAs_xml_parser(PyObject *o){	xml_parser *rv = dynamic_cast<xml_parser*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new xml_parser(o);	pycppbridge_setwrapper(o, rv);	return rv;}class system_embedder : public cpppybridge, public ambulant::lib::system_embedder {public:	system_embedder(PyObject *itself);	virtual ~system_embedder();	void show_file(const ambulant::net::url& href);  private:	PyObject *py_system_embedder;	friend PyObject *system_embedderObj_New(ambulant::lib::system_embedder *itself);};#define BGEN_BACK_SUPPORT_system_embedderinline system_embedder *Py_WrapAs_system_embedder(PyObject *o){	system_embedder *rv = dynamic_cast<system_embedder*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new system_embedder(o);	pycppbridge_setwrapper(o, rv);	return rv;}class timer_events : public cpppybridge, public ambulant::lib::timer_events {public:	timer_events(PyObject *itself);	virtual ~timer_events();	void speed_changed();  private:	PyObject *py_timer_events;	friend PyObject *timer_eventsObj_New(ambulant::lib::timer_events *itself);};#define BGEN_BACK_SUPPORT_timer_eventsinline timer_events *Py_WrapAs_timer_events(PyObject *o){	timer_events *rv = dynamic_cast<timer_events*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new timer_events(o);	pycppbridge_setwrapper(o, rv);	return rv;}class timer : public cpppybridge, public ambulant::lib::timer {public:	timer(PyObject *itself);	virtual ~timer();	ambulant::lib::timer::time_type elapsed() const;	double get_realtime_speed() const;  private:	PyObject *py_timer;	friend PyObject *timerObj_New(ambulant::lib::timer *itself);};#define BGEN_BACK_SUPPORT_timerinline timer *Py_WrapAs_timer(PyObject *o){	timer *rv = dynamic_cast<timer*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new timer(o);	pycppbridge_setwrapper(o, rv);	return rv;}class timer_control : public timer, public ambulant::lib::timer_control {public:	timer_control(PyObject *itself);	virtual ~timer_control();	ambulant::lib::timer::time_type elapsed() const;	ambulant::lib::timer::time_type elapsed(ambulant::lib::timer::time_type pt) const;	void start(ambulant::lib::timer::time_type t);	void stop();	void pause();	void resume();	void set_speed(double speed);	void set_time(ambulant::lib::timer::time_type t);	double get_speed() const;	bool running() const;	double get_realtime_speed() const;  private:	PyObject *py_timer_control;	friend PyObject *timer_controlObj_New(ambulant::lib::timer_control *itself);};#define BGEN_BACK_SUPPORT_timer_controlinline timer_control *Py_WrapAs_timer_control(PyObject *o){	timer_control *rv = dynamic_cast<timer_control*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new timer_control(o);	pycppbridge_setwrapper(o, rv);	return rv;}class embedder : public system_embedder, public ambulant::common::embedder {public:	embedder(PyObject *itself);	virtual ~embedder();	void close(ambulant::common::player* p);	void open(ambulant::net::url newdoc, bool start, ambulant::common::player* old);	void done(ambulant::common::player* p);	void starting(ambulant::common::player* p);	bool aux_open(const ambulant::net::url& href);	void show_file(const ambulant::net::url& url) { system_embedder::show_file(url); }  private:	PyObject *py_embedder;	friend PyObject *embedderObj_New(ambulant::common::embedder *itself);};#define BGEN_BACK_SUPPORT_embedderinline embedder *Py_WrapAs_embedder(PyObject *o){	embedder *rv = dynamic_cast<embedder*>(pycppbridge_getwrapper(o));	if (rv) return rv;	rv = new embedder(o);	pycppbridge_setwrapper(o, rv);	return rv;}class factories : public cpppybridge, public ambulant::common::factories {public:	factories(PyObject *itself);	virtual ~factories();	void init_factories();	void init_playable_factory();	void init_window_factory();	void init_datasource_factory();	void init_parser_factory();	void init_node_factory();	ambulant::common::global_playable_factory* get_playable_factory() const;	ambulant::common::window_factory* get_window_factory() const;	ambulant::net::datasource_factory* get_datasource_factory() const;	ambulant::lib::global_parser_factory* get_parser_factory() const;	ambulant::lib::node_factory* get_node_factory() const;	void set_playable_factory(ambulant::common::global_playable_factory* pf);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -