亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sync_rule.h

?? 彩信瀏覽器
?? H
字號:
/* * This file is part of Ambulant Player, www.ambulantplayer.org. * * Copyright (C) 2003-2007 Stichting CWI,  * Kruislaan 413, 1098 SJ Amsterdam, The Netherlands. * * Ambulant Player is free software; you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation; either version 2.1 of the License, or * (at your option) any later version. * * Ambulant Player is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with Ambulant Player; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA *//*  * @$Id: sync_rule.h,v 1.9 2007/02/12 14:14:45 jackjansen Exp $  */#ifndef AMBULANT_SMIL2_SYNC_RULE_H#define AMBULANT_SMIL2_SYNC_RULE_H#include "ambulant/config/config.h"#include "ambulant/smil2/smil_time.h"#include <set>#include <cassert>// used by sync_list#include <list>namespace ambulant {namespace smil2 {// Time node and global "happenings" that may be used for synchronization.enum sync_event {	// Model abstract events raised by a time node.	// A model abstract event is raised by a time node 	// when the associated time value becomes known or changes.	// The timestamp associated with a model abstract event	// is the associated time value.	tn_begin, tn_repeat, tn_end,	 	// Model real events raised by a time node.	tn_begin_event, tn_repeat_event, tn_end_event,		// DOM events raised by a time node.	tn_activate_event,	tn_focusin_event,	tn_focusout_event,	tn_inbounds_event,	tn_outofbounds_event,		// DOM events raised globally and may affect a time node.	accesskey_event,		// Media marker event	tn_marker_event,		// DOM calls	tn_dom_call,		// Placeholder for unknown events	tn_unknown_event};sync_event sync_event_from_str(const std::string& s);const char* sync_event_str(sync_event ev);// A sync rule is a condition associated with a timing node// that specifies directly or indirectly within the context // of the model, when the node should begin or end.// // A sync rule depends either on the occurrence of a global // event or on something "happening" to a timing node.// Node happenings includes both real and abstract model events.//// When the sync rule depends on something happening // to a timing node, this node is called the syncbase // of the rule. The syncbase node keeps a pointer to the rule,// called syncarc, and when the associated real or abstract // model event "occurs", the syncbase node updates the rule.//// The syncbase update notification includes a timestamp // having a value as dictated by the model. // For real events the timestamp is the time// of the occurrence of the event. // For model events the timestamp is a calculated // time instance which can be in the past or in the future. // A sync_rule, as designed below, is a stand alone object// at the same level as a time node is.// Though it belongs to a time node (the target) this is // not visible within the sync rule implementation.// It has all the available info to do whatever calculations// it needs that otherwise would have to delegate to its owner.class time_node;// Rule typesenum rule_type { rt_begin, rt_end, rt_transout};const char* rule_type_str(rule_type rt);class sync_rule : public time_traits {  public:	// The dstr should be virtual since concrete rules will 	// be deleted through sync_rule base pointers.	virtual ~sync_rule() {}			// Appends to the time set arg any resolved instance times.	// The times appended are relative to target's implicit sync node.	// The target node is the owner of this rule 	// and also the caller of this function.	virtual void get_instance_times(time_mset& s) const {}		// Notification when a target's ancestor begins or repeats 	// Clears instance times as dictated by the model.	// Syncbased and media-marker instance times are cleared 	// when the src argument node is a common ascendant 	// of both the syncbase and the target.	// Instance times due to events, e.g. due to any of	// tn_begin_event, tn_repeat_event, tn_end_event, 	// tn_activate_event, accesskey_event, and dom calls	// are always cleared by this function  	virtual void reset(time_node *src) {}			// Update notifications coming from the syncbase node when 	// a new interval is created or when an interval is updated or canceled.	// e.g. when a tn_begin or a tn_end abstract model event	// is raised by the syncbase node.	// The times appended are relative to syncbase's implicit sync node.	virtual void new_instance(qtime_type timestamp, time_type instance) {}	virtual void cancel_instance(qtime_type timestamp, time_type instance) {}	virtual void update_instance(qtime_type timestamp, time_type instance, time_type old_instance) {}		// Notifications when a global or a syncbased event is raised. 	// e.g. any event except a tn_begin or a tn_end	// The instances are relative to syncbase's implicit 	// sync node clock or relative to the document's clock for global events.	virtual void add_instance(qtime_type timestamp, time_type instance, int data = 0) {}	virtual void add_instance(qtime_type timestamp, time_type instance, const std::string& data) {}		// Internal function that sets the target of this rule. 	// The target node is the owner of this rule 	// and also the caller of get_instance_times().	virtual void set_target(time_node *tn, rule_type rt) = 0;		// Internal function that sets the syncnbase and syncevent of this rule.	// For rules that depend on global events such as 	// an access key or dom calls, the syncbase is assumed 	// to be the time root.	virtual void set_syncbase(time_node *tn, sync_event se) = 0;		virtual time_node* get_target() = 0;	virtual time_node* get_syncbase() = 0;	virtual rule_type get_target_attr() = 0;	virtual sync_event get_syncbase_event() = 0;	virtual std::string to_string() = 0;	virtual void set_trace_mode(bool b) = 0;};// A base class providing an implementation for the internal functions.class sync_rule_impl : public sync_rule {  public:	sync_rule_impl(time_node *sb, sync_event se);	void set_target(time_node *tn, rule_type rt);	void set_syncbase(time_node *tn, sync_event se);	time_node* get_target() { return m_target;}	time_node* get_syncbase() { return m_syncbase;}	rule_type get_target_attr() { return m_target_attr;}	sync_event get_syncbase_event() { return m_syncbase_event;}	std::string to_string();	void set_trace_mode(bool b) {m_trace = b;}  protected:	void eval_refnode();	time_type to_ref(time_type instance) const;	time_type from_ref(time_type instance) const;	void lock() { m_locked = true;}	void unlock() { m_locked = false;}	bool locked() const { return m_locked;}			time_node *m_target;	rule_type m_target_attr;	time_node *m_syncbase;	sync_event m_syncbase_event;	time_node *m_refnode;	bool m_locked;	bool m_trace;};// A basic model ruleclass model_rule : public sync_rule_impl {  public:	model_rule(time_node *sb, sync_event se, time_type offset) 	:	sync_rule_impl(sb, se),		m_offset(offset)  {}	virtual void get_instance_times(time_mset& s) const;	virtual void reset(time_node *src);	virtual void new_instance(qtime_type timestamp, time_type instance);	virtual void cancel_instance(qtime_type timestamp, time_type instance);	virtual void update_instance(qtime_type timestamp, time_type instance, time_type old_instance); protected:		time_type m_offset;	time_list m_instances;};// A basic event ruleclass event_rule : public sync_rule_impl {  public:	event_rule(time_node *sb, sync_event se, value_type offset = 0, int selector = 0) 	:	sync_rule_impl(sb, se),		m_offset(offset),		m_selector(selector)  {}	event_rule(time_node *sb, sync_event se, value_type offset, const std::string& selector) 	:	sync_rule_impl(sb, se),		m_offset(offset),		m_selector(0),		m_str_selector(selector)  {}	virtual void get_instance_times(time_mset& s) const;	virtual void reset(time_node *src);	virtual void add_instance(qtime_type timestamp, time_type instance, int data = 0); 	virtual void add_instance(qtime_type timestamp, time_type instance, const std::string& data);protected:	time_type m_offset;	int m_selector;	std::string m_str_selector;	time_list m_instances;};// A simple offset rule. // An offset_rule is special case of a model_rule.// The implementation avoid inheritance from a model_rule for optinization reasonsclass offset_rule : public sync_rule_impl {  public:	offset_rule(time_node *sb, sync_event se, time_type offset) 	:	sync_rule_impl(sb, se),		m_offset(offset)  {}	virtual void get_instance_times(time_mset& s) const { s.insert(m_offset);} protected:		time_type m_offset;};// A special model rule for transOutclass transout_rule : public sync_rule_impl {  public:	transout_rule(time_node *sb, sync_event se, time_type offset) 	:	sync_rule_impl(sb, se),		m_offset(offset)  {}	virtual void get_instance_times(time_mset& s) const;	virtual void reset(time_node *src);	virtual void new_instance(qtime_type timestamp, time_type instance);	virtual void cancel_instance(qtime_type timestamp, time_type instance);	virtual void update_instance(qtime_type timestamp, time_type instance, time_type old_instance); protected:		time_type m_offset;	time_list m_instances;};// A trigger rule is a special model rule that differs // from the rest, in that it does not contribute to the // model through its instance times. // A trigger rule may link dependent nodes when the dependency // cannot be expressed through instance times.// The alt mechanism implemented by a trigger rule // is knowledge transfer between nodes.// The syncbase node uses this link to wake up // the target when the target may take benefit // of the newly acquired info at the syncbase. class trigger_rule : public sync_rule_impl {  public:	trigger_rule(time_node *sb, sync_event se, time_type offset) 	:	sync_rule_impl(sb, se), m_offset(offset) {}	virtual void new_instance(qtime_type timestamp, time_type instance);	virtual void cancel_instance(qtime_type timestamp, time_type instance);	virtual void update_instance(qtime_type timestamp, time_type instance, time_type old_instance); protected:		time_type m_offset;};// Sync rules context interface.// Used by a sync rule to notify its context // that something has changed.// The context of a sync_rule is a time node.// Therefore time nodes should implement this interface.class sync_rule_context : public time_traits {  public:	virtual ~sync_rule_context() {}		// Called by a sync rule when its state has changed.	// The context time node should re-evaluate its state.	// If the evaluation results to a change	// then the time node should update any dependents.	virtual void sync_update(qtime_type timestamp) = 0;};} // namespace smil2 } // namespace ambulant#endif // AMBULANT_SMIL2_SYNC_RULE_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频亚洲一区| 国产成人精品影视| 欧美电影在线免费观看| 亚洲高清久久久| 欧美一区二区三区系列电影| 青青国产91久久久久久| 久久人人超碰精品| av亚洲精华国产精华精| 亚洲精品菠萝久久久久久久| 欧美福利视频一区| 国产美女娇喘av呻吟久久| 国产精品久久免费看| 欧美性猛交xxxx乱大交退制版| 日韩激情av在线| 久久久久久久久久久久久久久99 | 精品国产乱码久久久久久1区2区| 麻豆一区二区三| 中文字幕免费一区| 在线精品视频一区二区| 久99久精品视频免费观看| 中文字幕一区二区三区不卡 | 日韩欧美在线1卡| 丁香六月综合激情| 亚洲国产精品自拍| 久久精品欧美日韩| 欧美午夜精品电影| 国产综合色产在线精品| 亚洲精品久久久久久国产精华液| 日韩久久久久久| 色综合视频在线观看| 国产专区欧美精品| 亚洲一区二区免费视频| 久久久久国色av免费看影院| 欧美日韩免费高清一区色橹橹 | 91精品国产综合久久国产大片| 国产盗摄一区二区| 丝瓜av网站精品一区二区 | 欧美激情一区二区三区| 欧美日韩国产区一| 成人高清在线视频| 精品一区二区免费| 亚洲福利一区二区| 18欧美乱大交hd1984| 欧美刺激午夜性久久久久久久| 色视频一区二区| 盗摄精品av一区二区三区| 美女一区二区视频| 午夜久久久影院| 亚洲另类在线一区| 国产精品免费人成网站| 精品国产免费一区二区三区四区 | 99riav久久精品riav| 国产一区激情在线| 偷窥少妇高潮呻吟av久久免费| 国产精品国产自产拍高清av| 精品久久国产老人久久综合| 欧美视频在线一区二区三区 | 亚洲bt欧美bt精品| 中文字幕精品—区二区四季| 欧美精品一区二区三区久久久 | 视频一区欧美日韩| 一区二区三区精品| 亚洲伦理在线免费看| 亚洲私人黄色宅男| 亚洲欧美色一区| 亚洲精品ww久久久久久p站| 亚洲欧洲av在线| 亚洲欧洲av一区二区三区久久| 国产精品久久看| 中文字幕在线不卡| 中文字幕在线观看不卡| 1000部国产精品成人观看| 中文字幕欧美区| 亚洲欧洲美洲综合色网| 亚洲欧美综合色| 亚洲三级免费观看| 亚洲另类在线一区| 亚洲第一主播视频| 视频一区二区欧美| 免费观看30秒视频久久| 久久国产精品免费| 国产一区二区h| 粉嫩aⅴ一区二区三区四区五区| 国产成人av自拍| 91亚洲男人天堂| 在线免费观看不卡av| 欧美日韩免费一区二区三区视频| 在线播放一区二区三区| 日韩美女在线视频| 欧美激情一区二区三区四区| 亚洲欧洲成人av每日更新| 亚洲午夜精品17c| 蜜桃久久久久久久| 国产精品亚洲午夜一区二区三区| 成人性视频免费网站| 日本高清不卡视频| 欧美巨大另类极品videosbest| 欧美一区2区视频在线观看| 久久一夜天堂av一区二区三区| 国产视频视频一区| 夜色激情一区二区| 人人狠狠综合久久亚洲| 韩国精品在线观看| 91片在线免费观看| 欧美精品自拍偷拍| 国产人妖乱国产精品人妖| 日韩美女啊v在线免费观看| 亚洲午夜一区二区三区| 黑人巨大精品欧美一区| 成人a级免费电影| 9191精品国产综合久久久久久 | 国产精品国产三级国产aⅴ中文 | 国产一区 二区 三区一级| 91视视频在线直接观看在线看网页在线看| 日本韩国视频一区二区| 精品久久久三级丝袜| 中文字幕一区二区三区乱码在线| 日韩在线卡一卡二| 成人av电影在线播放| 日韩一区二区免费电影| 综合亚洲深深色噜噜狠狠网站| 亚洲宅男天堂在线观看无病毒| 韩国av一区二区三区在线观看| 在线观看视频一区二区| 日本一区二区免费在线| 日韩和欧美的一区| 91在线观看污| 久久久美女毛片| 手机精品视频在线观看| 97久久超碰国产精品| 精品久久久久av影院| 午夜精品国产更新| 一本久久a久久免费精品不卡| 亚洲精品一区二区三区在线观看 | 日韩天堂在线观看| 一区二区视频在线| 岛国av在线一区| 精品国产伦一区二区三区观看方式 | 国产91精品在线观看| 91精品国产高清一区二区三区蜜臀 | 五月婷婷欧美视频| 91在线观看美女| 国产精品亲子乱子伦xxxx裸| 五月天网站亚洲| 欧美亚洲高清一区二区三区不卡| 国产精品二三区| 成人综合激情网| 久久久久久97三级| 韩国成人精品a∨在线观看| 日韩一区二区三区免费看| 天天影视色香欲综合网老头| 色视频成人在线观看免| 亚洲视频1区2区| av一区二区不卡| 国产精品久久久久久久久快鸭| 国产盗摄一区二区| 欧美激情一区不卡| 成人性生交大片免费看在线播放| 久久奇米777| 粉嫩一区二区三区在线看| 国产欧美一区二区在线观看| 国产98色在线|日韩| 国产欧美日韩卡一| 风间由美一区二区av101 | 国产乱码精品一品二品| 久久这里只有精品6| 国产麻豆精品视频| 亚洲国产精品成人综合色在线婷婷 | 国内偷窥港台综合视频在线播放| 91精品国产综合久久精品图片 | 亚洲色欲色欲www在线观看| 97se亚洲国产综合在线| 亚洲欧美国产高清| 欧美日韩在线播放三区四区| 日韩制服丝袜先锋影音| 日韩三级高清在线| 国产经典欧美精品| 中文字幕一区二区三区在线不卡| 在线观看av一区二区| 亚洲免费观看高清完整版在线观看| 色女孩综合影院| 日韩精品欧美精品| 久久午夜免费电影| 成人97人人超碰人人99| 亚洲精品国产成人久久av盗摄| 欧美色成人综合| 久久99精品国产麻豆婷婷洗澡| 国产日韩欧美不卡在线| 91一区二区三区在线观看| 亚洲h动漫在线| 久久久久国产精品人| 色综合天天性综合| 日本成人中文字幕| 国产日产欧美一区二区三区| 色欧美乱欧美15图片| 久久精品国产亚洲5555| 中文字幕一区二区三区在线不卡 | 久久久激情视频| 日本高清成人免费播放| 老司机精品视频在线|