text:
#ifndef __SOUND_HDA_CODEC_H
#define __SOUND_HDA_CODEC_H

#include <sound/info.h>
#include <sound/control.h>
#include <sound/pcm.h>
#include <sound/hwdep.h>

/*
 * nodes
 */
#define	AC_NODE_ROOT		0x00

/*
 * function group types
 */
enum {
	AC_GRP_AUDIO_FUNCTION = 0x01,
	AC_GRP_MODEM_FUNCTION = 0x02,
};

/*
 * widget types
 */
enum {
	AC_WID_AUD_OUT,		/* Audio Out */
	AC_WID_AUD_IN,		/* Audio In */
	AC_WID_AUD_MIX,		/* Audio Mixer */
	AC_WID_AUD_SEL,		/* Audio Selector */
	AC_WID_PIN,		/* Pin Complex */
	AC_WID_POWER,		/* Power */
	AC_WID_VOL_KNB,		/* Volume Knob */
	AC_WID_BEEP,		/* Beep Generator */
	AC_WID_VENDOR = 0x0f	/* Vendor specific */
};

/*
 * GET verbs
 */
#define AC_VERB_GET_STREAM_FORMAT		0x0a00
#define AC_VERB_GET_AMP_GAIN_MUTE		0x0b00
#define AC_VERB_GET_PROC_COEF			0x0c00
#define AC_VERB_GET_COEF_INDEX			0x0d00
#define AC_VERB_PARAMETERS			0x0f00
#define AC_VERB_GET_CONNECT_SEL			0x0f01
#define AC_VERB_GET_CONNECT_LIST		0x0f02
#define AC_VERB_GET_PROC_STATE			0x0f03
#define AC_VERB_GET_SDI_SELECT			0x0f04
#define AC_VERB_GET_POWER_STATE			0x0f05
#define AC_VERB_GET_CONV			0x0f06
#define AC_VERB_GET_PIN_WIDGET_CONTROL		0x0f07
#define AC_VERB_GET_UNSOLICITED_RESPONSE	0x0f08
#define AC_VERB_GET_PIN_SENSE			0x0f09
#define AC_VERB_GET_BEEP_CONTROL		0x0f0a
#define AC_VERB_GET_EAPD_BTLENABLE		0x0f0c
#define AC_VERB_GET_DIGI_CONVERT_1		0x0f0d
#define AC_VERB_GET_DIGI_CONVERT_2		0x0f0e /* unused */
#define AC_VERB_GET_VOLUME_KNOB_CONTROL		0x0f0f
/* f10-f1a: GPIO */
#define AC_VERB_GET_GPIO_DATA			0x0f15
#define AC_VERB_GET_GPIO_MASK			0x0f16
#define AC_VERB_GET_GPIO_DIRECTION		0x0f17
#define AC_VERB_GET_GPIO_WAKE_MASK		0x0f18
#define AC_VERB_GET_GPIO_UNSOLICITED_RSP_MASK	0x0f19
#define AC_VERB_GET_GPIO_STICKY_MASK		0x0f1a
#define AC_VERB_GET_CONFIG_DEFAULT		0x0f1c
/* f20: AFG/MFG */
#define AC_VERB_GET_SUBSYSTEM_ID		0x0f20
#define AC_VERB_GET_CVT_CHAN_COUNT		0x0f2d
#define AC_VERB_GET_HDMI_DIP_SIZE		0x0f2e
#define AC_VERB_GET_HDMI_ELDD			0x0f2f
#define AC_VERB_GET_HDMI_DIP_INDEX		0x0f30
#define AC_VERB_GET_HDMI_DIP_DATA		0x0f31
#define AC_VERB_GET_HDMI_DIP_XMIT		0x0f32
#define AC_VERB_GET_HDMI_CP_CTRL		0x0f33
#define AC_VERB_GET_HDMI_CHAN_SLOT		0x0f34

/*
 * SET verbs
 */
#define AC_VERB_SET_STREAM_FORMAT		0x200
#define AC_VERB_SET_AMP_GAIN_MUTE		0x300
#define AC_VERB_SET_PROC_COEF			0x400
#define AC_VERB_SET_COEF_INDEX			0x500
#define AC_VERB_SET_CONNECT_SEL			0x701
#define AC_VERB_SET_PROC_STATE			0x703
#define AC_VERB_SET_SDI_SELECT			0x704
#define AC_VERB_SET_POWER_STATE			0x705
#define AC_VERB_SET_CHANNEL_STREAMID		0x706
#define AC_VERB_SET_PIN_WIDGET_CONTROL		0x707
#define AC_VERB_SET_UNSOLICITED_ENABLE		0x708
#define AC_VERB_SET_PIN_SENSE			0x709
#define AC_VERB_SET_BEEP_CONTROL		0x70a
#define AC_VERB_SET_EAPD_BTLENABLE		0x70c
#define AC_VERB_SET_DIGI_CONVERT_1		0x70d
#define AC_VERB_SET_DIGI_CONVERT_2		0x70e
#define AC_VERB_SET_VOLUME_KNOB_CONTROL		0x70f
#define AC_VERB_SET_GPIO_DATA			0x715
#define AC_VERB_SET_GPIO_MASK			0x716
#define AC_VERB_SET_GPIO_DIRECTION		0x717
#define AC_VERB_SET_GPIO_WAKE_MASK		0x718
#define AC_VERB_SET_GPIO_UNSOLICITED_RSP_MASK	0x719
#define AC_VERB_SET_GPIO_STICKY_MASK		0x71a
#define AC_VERB_SET_CONFIG_DEFAULT_BYTES_0	0x71c
#define AC_VERB_SET_CONFIG_DEFAULT_BYTES_1	0x71d
#define AC_VERB_SET_CONFIG_DEFAULT_BYTES_2	0x71e
#define AC_VERB_SET_CONFIG_DEFAULT_BYTES_3	0x71f
#define AC_VERB_SET_EAPD				0x788
#define AC_VERB_SET_CODEC_RESET			0x7ff
#define AC_VERB_SET_CVT_CHAN_COUNT		0x72d
#define AC_VERB_SET_HDMI_DIP_INDEX		0x730
#define AC_VERB_SET_HDMI_DIP_DATA		0x731
#define AC_VERB_SET_HDMI_DIP_XMIT		0x732
#define AC_VERB_SET_HDMI_CP_CTRL		0x733
#define AC_VERB_SET_HDMI_CHAN_SLOT		0x734

/*
 * Parameter IDs
 */
#define AC_PAR_VENDOR_ID		0x00
#define AC_PAR_SUBSYSTEM_ID		0x01
#define AC_PAR_REV_ID			0x02
#define AC_PAR_NODE_COUNT		0x04
#define AC_PAR_FUNCTION_TYPE		0x05
#define AC_PAR_AUDIO_FG_CAP		0x08
#define AC_PAR_AUDIO_WIDGET_CAP		0x09
#define AC_PAR_PCM			0x0a
#define AC_PAR_STREAM			0x0b
#define AC_PAR_PIN_CAP			0x0c
#define AC_PAR_AMP_IN_CAP		0x0d
#define AC_PAR_CONNLIST_LEN		0x0e
#define AC_PAR_POWER_STATE		0x0f
#define AC_PAR_PROC_CAP			0x10
#define AC_PAR_GPIO_CAP			0x11
#define AC_PAR_AMP_OUT_CAP		0x12
#define AC_PAR_VOL_KNB_CAP		0x13
#define AC_PAR_HDMI_LPCM_CAP		0x20

/*
 * AC_VERB_PARAMETERS results (32bit)
 */

/* Function Group Type */
#define AC_FGT_TYPE			(0xff<<0)
#define AC_FGT_TYPE_SHIFT		0
#define AC_FGT_UNSOL_CAP		(1<<8)

/* Audio Function Group Capabilities */
#define AC_AFG_OUT_DELAY		(0xf<<0)
#define AC_AFG_IN_DELAY			(0xf<<8)
#define AC_AFG_BEEP_GEN			(1<<16)

/* Audio Widget Capabilities */
#define AC_WCAP_STEREO			(1<<0)	/* stereo I/O */
#define AC_WCAP_IN_AMP			(1<<1)	/* AMP-in present */
#define AC_WCAP_OUT_AMP			(1<<2)	/* AMP-out present */
#define AC_WCAP_AMP_OVRD		(1<<3)	/* AMP-parameter override */
#define AC_WCAP_FORMAT_OVRD		(1<<4)	/* format override */
#define AC_WCAP_STRIPE			(1<<5)	/* stripe */
#define AC_WCAP_PROC_WID		(1<<6)	/* Proc Widget */
#define AC_WCAP_UNSOL_CAP		(1<<7)	/* Unsol capable */
#define AC_WCAP_CONN_LIST		(1<<8)	/* connection list */
#define AC_WCAP_DIGITAL			(1<<9)	/* digital I/O */
#define AC_WCAP_POWER			(1<<10)	/* power control */
#define AC_WCAP_LR_SWAP			(1<<11)	/* L/R swap */
#define AC_WCAP_CP_CAPS			(1<<12) /* content protection */
#define AC_WCAP_CHAN_CNT_EXT		(7<<13)	/* channel count ext */
#define AC_WCAP_DELAY			(0xf<<16)
#define AC_WCAP_DELAY_SHIFT		16
#define AC_WCAP_TYPE			(0xf<<20)
#define AC_WCAP_TYPE_SHIFT		20

/* supported PCM rates and bits */
#define AC_SUPPCM_RATES			(0xfff << 0)
#define AC_SUPPCM_BITS_8		(1<<16)
#define AC_SUPPCM_BITS_16		(1<<17)
#define AC_SUPPCM_BITS_20		(1<<18)
#define AC_SUPPCM_BITS_24		(1<<19)
#define AC_SUPPCM_BITS_32		(1<<20)

/* supported PCM stream format */
#define AC_SUPFMT_PCM			(1<<0)
#define AC_SUPFMT_FLOAT32		(1<<1)
#define AC_SUPFMT_AC3			(1<<2)

/* GP I/O count */
#define AC_GPIO_IO_COUNT		(0xff<<0)
#define AC_GPIO_O_COUNT			(0xff<<8)
#define AC_GPIO_O_COUNT_SHIFT		8
#define AC_GPIO_I_COUNT			(0xff<<16)
#define AC_GPIO_I_COUNT_SHIFT		16
#define AC_GPIO_UNSOLICITED		(1<<30)
#define AC_GPIO_WAKE			(1<<31)

/* Converter stream, channel */
#define AC_CONV_CHANNEL			(0xf<<0)
#define AC_CONV_STREAM			(0xf<<4)
#define AC_CONV_STREAM_SHIFT		4

/* Input converter SDI select */
#define AC_SDI_SELECT			(0xf<<0)

/* stream format id */
#define AC_FMT_CHAN_SHIFT		0
#define AC_FMT_CHAN_MASK		(0x0f << 0)
#define AC_FMT_BITS_SHIFT		4
#define AC_FMT_BITS_MASK		(7 << 4)
#define AC_FMT_BITS_8			(0 << 4)
#define AC_FMT_BITS_16			(1 << 4)
#define AC_FMT_BITS_20			(2 << 4)
#define AC_FMT_BITS_24			(3 << 4)
#define AC_FMT_BITS_32			(4 << 4)
#define AC_FMT_DIV_SHIFT		8
#define AC_FMT_DIV_MASK			(7 << 8)
#define AC_FMT_MULT_SHIFT		11
#define AC_FMT_MULT_MASK		(7 << 11)
#define AC_FMT_BASE_SHIFT		14
#define AC_FMT_BASE_48K			(0 << 14)
#define AC_FMT_BASE_44K			(1 << 14)
#define AC_FMT_TYPE_SHIFT		15
#define AC_FMT_TYPE_PCM			(0 << 15)
#define AC_FMT_TYPE_NON_PCM		(1 << 15)

/* Unsolicited response control */
#define AC_UNSOL_TAG			(0x3f<<0)
#define AC_UNSOL_ENABLED		(1<<7)
#define AC_USRSP_EN			AC_UNSOL_ENABLED

/* Unsolicited responses */
#define AC_UNSOL_RES_TAG		(0x3f<<26)
#define AC_UNSOL_RES_TAG_SHIFT		26
#define AC_UNSOL_RES_SUBTAG		(0x1f<<21)
#define AC_UNSOL_RES_SUBTAG_SHIFT	21
#define AC_UNSOL_RES_ELDV		(1<<1)	/* ELD Data valid (for HDMI) */
#define AC_UNSOL_RES_PD			(1<<0)	/* pinsense detect */
#define AC_UNSOL_RES_CP_STATE		(1<<1)	/* content protection */
#define AC_UNSOL_RES_CP_READY		(1<<0)	/* content protection */

/* Pin widget capabilies */
#define AC_PINCAP_IMP_SENSE		(1<<0)	/* impedance sense capable */
#define AC_PINCAP_TRIG_REQ		(1<<1)	/* trigger required */
#define AC_PINCAP_PRES_DETECT		(1<<2)	/* presence detect capable */
#define AC_PINCAP_HP_DRV		(1<<3)	/* headphone drive capable */
#define AC_PINCAP_OUT			(1<<4)	/* output capable */
#define AC_PINCAP_IN			(1<<5)	/* input capable */
#define AC_PINCAP_BALANCE		(1<<6)	/* balanced I/O capable */
/* Note: This LR_SWAP pincap is defined in the Realtek ALC883 specification,
 *       but is marked reserved in the Intel HDA specification.
 */
#define AC_PINCAP_LR_SWAP		(1<<7)	/* L/R swap */
/* Note: The same bit as LR_SWAP is newly defined as HDMI capability
 *       in HD-audio specification
 */
#define AC_PINCAP_HDMI			(1<<7)	/* HDMI pin */
#define AC_PINCAP_DP			(1<<24)	/* DisplayPort pin, can
						 * coexist with AC_PINCAP_HDMI
						 */
#define AC_PINCAP_VREF			(0x37<<8)
#define AC_PINCAP_VREF_SHIFT		8
#define AC_PINCAP_EAPD			(1<<16)	/* EAPD capable */
#define AC_PINCAP_HBR			(1<<27)	/* High Bit Rate */
/* Vref status (used in pin cap) */
#define AC_PINCAP_VREF_HIZ		(1<<0)	/* Hi-Z */
#define AC_PINCAP_VREF_50		(1<<1)	/* 50% */
#define AC_PINCAP_VREF_GRD		(1<<2)	/* ground */
#define AC_PINCAP_VREF_80		(1<<4)	/* 80% */
#define AC_PINCAP_VREF_100		(1<<5)	/* 100% */

/* Amplifier capabilities */
#define AC_AMPCAP_OFFSET		(0x7f<<0)  /* 0dB offset */
#define AC_AMPCAP_OFFSET_SHIFT		0
#define AC_AMPCAP_NUM_STEPS		(0x7f<<8)  /* number of steps */
#define AC_AMPCAP_NUM_STEPS_SHIFT	8
#define AC_AMPCAP_STEP_SIZE		(0x7f<<16) /* step size 0-32dB
						    * in 0.25dB
						    */
#define AC_AMPCAP_STEP_SIZE_SHIFT	16
#define AC_AMPCAP_MUTE			(1<<31)    /* mute capable */
#define AC_AMPCAP_MUTE_SHIFT		31

/* driver-specific amp-caps: using bits 24-30 */
#define AC_AMPCAP_MIN_MUTE		(1 << 30) /* min-volume = mute */

/* Connection list */
#define AC_CLIST_LENGTH			(0x7f<<0)
#define AC_CLIST_LONG			(1<<7)

/* Supported power status */
#define AC_PWRST_D0SUP			(1<<0)
#define AC_PWRST_D1SUP			(1<<1)
#define AC_PWRST_D2SUP			(1<<2)
#define AC_PWRST_D3SUP			(1<<3)
#define AC_PWRST_D3COLDSUP		(1<<4)
#define AC_PWRST_S3D3COLDSUP		(1<<29)
#define AC_PWRST_CLKSTOP		(1<<30)
#define AC_PWRST_EPSS			(1U<<31)

/* Power state values */
#define AC_PWRST_SETTING		(0xf<<0)
#define AC_PWRST_ACTUAL			(0xf<<4)
#define AC_PWRST_ACTUAL_SHIFT		4
#define AC_PWRST_D0			0x00
#define AC_PWRST_D1			0x01
#define AC_PWRST_D2			0x02
#define AC_PWRST_D3			0x03
#define AC_PWRST_ERROR                  (1<<8)
#define AC_PWRST_CLK_STOP_OK            (1<<9)
#define AC_PWRST_SETTING_RESET          (1<<10)

/* Processing capabilies */
#define AC_PCAP_BENIGN			(1<<0)
#define AC_PCAP_NUM_COEF		(0xff<<8)
#define AC_PCAP_NUM_COEF_SHIFT		8

/* Volume knobs capabilities */
#define AC_KNBCAP_NUM_STEPS		(0x7f<<0)
#define AC_KNBCAP_DELTA			(1<<7)

/* HDMI LPCM capabilities */
#define AC_LPCMCAP_48K_CP_CHNS		(0x0f<<0) /* max channels w/ CP-on */
#define AC_LPCMCAP_48K_NO_CHNS		(0x0f<<4) /* max channels w/o CP-on */
#define AC_LPCMCAP_48K_20BIT		(1<<8)	/* 20b bitrate supported */
#define AC_LPCMCAP_48K_24BIT		(1<<9)	/* 24b bitrate supported */
#define AC_LPCMCAP_96K_CP_CHNS		(0x0f<<10) /* max channels w/ CP-on */
#define AC_LPCMCAP_96K_NO_CHNS		(0x0f<<14) /* max channels w/o CP-on */
#define AC_LPCMCAP_96K_20BIT		(1<<18)	/* 20b bitrate supported */
#define AC_LPCMCAP_96K_24BIT		(1<<19)	/* 24b bitrate supported */
#define AC_LPCMCAP_192K_CP_CHNS		(0x0f<<20) /* max channels w/ CP-on */
#define AC_LPCMCAP_192K_NO_CHNS		(0x0f<<24) /* max channels w/o CP-on */
#define AC_LPCMCAP_192K_20BIT		(1<<28)	/* 20b bitrate supported */
#define AC_LPCMCAP_192K_24BIT		(1<<29)	/* 24b bitrate supported */
#define AC_LPCMCAP_44K			(1<<30)	/* 44.1kHz support */
#define AC_LPCMCAP_44K_MS		(1<<31)	/* 44.1kHz-multiplies support */

/*
 * Control Parameters
 */

/* Amp gain/mute */
#define AC_AMP_MUTE			(1<<7)
#define AC_AMP_GAIN			(0x7f)
#define AC_AMP_GET_INDEX		(0xf<<0)

#define AC_AMP_GET_LEFT			(1<<13)
#define AC_AMP_GET_RIGHT		(0<<13)
#define AC_AMP_GET_OUTPUT		(1<<15)
#define AC_AMP_GET_INPUT		(0<<15)

#define AC_AMP_SET_INDEX		(0xf<<8)
#define AC_AMP_SET_INDEX_SHIFT		8
#define AC_AMP_SET_RIGHT		(1<<12)
#define AC_AMP_SET_LEFT			(1<<13)
#define AC_AMP_SET_INPUT		(1<<14)
#define AC_AMP_SET_OUTPUT		(1<<15)

/* DIGITAL1 bits */
#define AC_DIG1_ENABLE			(1<<0)
#define AC_DIG1_V			(1<<1)
#define AC_DIG1_VCFG			(1<<2)
#define AC_DIG1_EMPHASIS		(1<<3)
#define AC_DIG1_COPYRIGHT		(1<<4)
#define AC_DIG1_NONAUDIO		(1<<5)
#define AC_DIG1_PROFESSIONAL		(1<<6)
#define AC_DIG1_LEVEL			(1<<7)

/* DIGITAL2 bits */
#define AC_DIG2_CC			(0x7f<<0)

/* DIGITAL3 bits */
#define AC_DIG3_ICT			(0xf<<0)
#define AC_DIG3_KAE			(1<<7)

/* Pin widget control - 8bit */
#define AC_PINCTL_EPT			(0x3<<0)
#define AC_PINCTL_EPT_NATIVE		0
#define AC_PINCTL_EPT_HBR		3
#define AC_PINCTL_VREFEN		(0x7<<0)
#define AC_PINCTL_VREF_HIZ		0	/* Hi-Z */
#define AC_PINCTL_VREF_50		1	/* 50% */
#define AC_PINCTL_VREF_GRD		2	/* ground */
#define AC_PINCTL_VREF_80		4	/* 80% */
#define AC_PINCTL_VREF_100		5	/* 100% */
#define AC_PINCTL_IN_EN			(1<<5)
#define AC_PINCTL_OUT_EN		(1<<6)
#define AC_PINCTL_HP_EN			(1<<7)

/* Pin sense - 32bit */
#define AC_PINSENSE_IMPEDANCE_MASK	(0x7fffffff)
#define AC_PINSENSE_PRESENCE		(1<<31)
#define AC_PINSENSE_ELDV		(1<<30)	/* ELD valid (HDMI) */

/* EAPD/BTL enable - 32bit */
#define AC_EAPDBTL_BALANCED		(1<<0)
#define AC_EAPDBTL_EAPD			(1<<1)
#define AC_EAPDBTL_LR_SWAP		(1<<2)

/* HDMI ELD data */
#define AC_ELDD_ELD_VALID		(1<<31)
#define AC_ELDD_ELD_DATA		0xff

/* HDMI DIP size */
#define AC_DIPSIZE_ELD_BUF		(1<<3) /* ELD buf size of packet size */
#define AC_DIPSIZE_PACK_IDX		(0x07<<0) /* packet index */

/* HDMI DIP index */
#define AC_DIPIDX_PACK_IDX		(0x07<<5) /* packet idnex */
#define AC_DIPIDX_BYTE_IDX		(0x1f<<0) /* byte index */

/* HDMI DIP xmit (transmit) control */
#define AC_DIPXMIT_MASK			(0x3<<6)
#define AC_DIPXMIT_DISABLE		(0x0<<6) /* disable xmit */
#define AC_DIPXMIT_ONCE			(0x2<<6) /* xmit once then disable */
#define AC_DIPXMIT_BEST			(0x3<<6) /* best effort */

/* HDMI content protection (CP) control */
#define AC_CPCTRL_CES			(1<<9) /* current encryption state */
#define AC_CPCTRL_READY			(1<<8) /* ready bit */
#define AC_CPCTRL_SUBTAG		(0x1f<<3) /* subtag for unsol-resp */
#define AC_CPCTRL_STATE			(3<<0) /* current CP request state */

/* Converter channel <-> HDMI slot mapping */
#define AC_CVTMAP_HDMI_SLOT		(0xf<<0) /* HDMI slot number */
#define AC_CVTMAP_CHAN			(0xf<<4) /* converter channel number */

/* configuration default - 32bit */
#define AC_DEFCFG_SEQUENCE		(0xf<<0)
#define AC_DEFCFG_DEF_ASSOC		(0xf<<4)
#define AC_DEFCFG_ASSOC_SHIFT		4
#define AC_DEFCFG_MISC			(0xf<<8)
#define AC_DEFCFG_MISC_SHIFT		8
#define AC_DEFCFG_MISC_NO_PRESENCE	(1<<0)
#define AC_DEFCFG_COLOR			(0xf<<12)
#define AC_DEFCFG_COLOR_SHIFT		12
#define AC_DEFCFG_CONN_TYPE		(0xf<<16)
#define AC_DEFCFG_CONN_TYPE_SHIFT	16
#define AC_DEFCFG_DEVICE		(0xf<<20)
#define AC_DEFCFG_DEVICE_SHIFT		20
#define AC_DEFCFG_LOCATION		(0x3f<<24)
#define AC_DEFCFG_LOCATION_SHIFT	24
#define AC_DEFCFG_PORT_CONN		(0x3<<30)
#define AC_DEFCFG_PORT_CONN_SHIFT	30

/* device device types (0x0-0xf) */
enum {
	AC_JACK_LINE_OUT,
	AC_JACK_SPEAKER,
	AC_JACK_HP_OUT,
	AC_JACK_CD,
	AC_JACK_SPDIF_OUT,
	AC_JACK_DIG_OTHER_OUT,
	AC_JACK_MODEM_LINE_SIDE,
	AC_JACK_MODEM_HAND_SIDE,
	AC_JACK_LINE_IN,
	AC_JACK_AUX,
	AC_JACK_MIC_IN,
	AC_JACK_TELEPHONY,
	AC_JACK_SPDIF_IN,
	AC_JACK_DIG_OTHER_IN,
	AC_JACK_OTHER = 0xf,
};

/* jack connection types (0x0-0xf) */
enum {
	AC_JACK_CONN_UNKNOWN,
	AC_JACK_CONN_1_8,
	AC_JACK_CONN_1_4,
	AC_JACK_CONN_ATAPI,
	AC_JACK_CONN_RCA,
	AC_JACK_CONN_OPTICAL,
	AC_JACK_CONN_OTHER_DIGITAL,
	AC_JACK_CONN_OTHER_ANALOG,
	AC_JACK_CONN_DIN,
	AC_JACK_CONN_XLR,
	AC_JACK_CONN_RJ11,
	AC_JACK_CONN_COMB,
	AC_JACK_CONN_OTHER = 0xf,
};

/* jack colors (0x0-0xf) */
enum {
	AC_JACK_COLOR_UNKNOWN,
	AC_JACK_COLOR_BLACK,
	AC_JACK_COLOR_GREY,
	AC_JACK_COLOR_BLUE,
	AC_JACK_COLOR_GREEN,
	AC_JACK_COLOR_RED,
	AC_JACK_COLOR_ORANGE,
	AC_JACK_COLOR_YELLOW,
	AC_JACK_COLOR_PURPLE,
	AC_JACK_COLOR_PINK,
	AC_JACK_COLOR_WHITE = 0xe,
	AC_JACK_COLOR_OTHER,
};

/* Jack location (0x0-0x3f) */
/* common case */
enum {
	AC_JACK_LOC_NONE,
	AC_JACK_LOC_REAR,
	AC_JACK_LOC_FRONT,
	AC_JACK_LOC_LEFT,
	AC_JACK_LOC_RIGHT,
	AC_JACK_LOC_TOP,
	AC_JACK_LOC_BOTTOM,
};
/* bits 4-5 */
enum {
	AC_JACK_LOC_EXTERNAL = 0x00,
	AC_JACK_LOC_INTERNAL = 0x10,
	AC_JACK_LOC_SEPARATE = 0x20,
	AC_JACK_LOC_OTHER    = 0x30,
};
enum {
	/* external on primary chasis */
	AC_JACK_LOC_REAR_PANEL = 0x07,
	AC_JACK_LOC_DRIVE_BAY,
	/* internal */
	AC_JACK_LOC_RISER = 0x17,
	AC_JACK_LOC_HDMI,
	AC_JACK_LOC_ATAPI,
	/* others */
	AC_JACK_LOC_MOBILE_IN = 0x37,
	AC_JACK_LOC_MOBILE_OUT,
};

/* Port connectivity (0-3) */
enum {
	AC_JACK_PORT_COMPLEX,
	AC_JACK_PORT_NONE,
	AC_JACK_PORT_FIXED,
	AC_JACK_PORT_BOTH,
};

/* max. codec address */
#define HDA_MAX_CODEC_ADDRESS	0x0f

/*
 * generic arrays
 */
struct snd_array {
	unsigned int used;
	unsigned int alloced;
	unsigned int elem_size;
	unsigned int alloc_align;
	void *list;
};

void *snd_array_new(struct snd_array *array);
void snd_array_free(struct snd_array *array);
static inline void snd_array_init(struct snd_array *array, unsigned int size,
				  unsigned int align)
{
	array->elem_size = size;
	array->alloc_align = align;
}

static inline void *snd_array_elem(struct snd_array *array, unsigned int idx)
{
	return array->list + idx * array->elem_size;
}

static inline unsigned int snd_array_index(struct snd_array *array, void *ptr)
{
	return (unsigned long)(ptr - array->list) / array->elem_size;
}

/*
 * Structures
 */

struct hda_bus;
struct hda_beep;
struct hda_codec;
struct hda_pcm;
struct hda_pcm_stream;
struct hda_bus_unsolicited;

/* NID type */
typedef u16 hda_nid_t;

/* bus operators */
struct hda_bus_ops {
	/* send a single command */
	int (*command)(struct hda_bus *bus, unsigned int cmd);
	/* get a response from the last command */
	unsigned int (*get_response)(struct hda_bus *bus, unsigned int addr);
	/* free the private data */
	void (*private_free)(struct hda_bus *);
	/* attach a PCM stream */
	int (*attach_pcm)(struct hda_bus *bus, struct hda_codec *codec,
			  struct hda_pcm *pcm);
	/* reset bus for retry verb */
	void (*bus_reset)(struct hda_bus *bus);
#ifdef CONFIG_PM
	/* notify power-up/down from codec to controller */
	void (*pm_notify)(struct hda_bus *bus, bool power_up);
#endif
#ifdef CONFIG_SND_HDA_DSP_LOADER
	/* prepare DSP transfer */
	int (*load_dsp_prepare)(struct hda_bus *bus, unsigned int format,
				unsigned int byte_size,
				struct snd_dma_buffer *bufp);
	/* start/stop DSP transfer */
	void (*load_dsp_trigger)(struct hda_bus *bus, bool start);
	/* clean up DSP transfer */
	void (*load_dsp_cleanup)(struct hda_bus *bus,
				 struct snd_dma_buffer *dmab);
#endif
};

/* template to pass to the bus constructor */
struct hda_bus_template {
	void *private_data;
	struct pci_dev *pci;
	const char *modelname;
	int *power_save;
	struct hda_bus_ops ops;
};

/*
 * codec bus
 *
 * each controller needs to creata a hda_bus to assign the accessor.
 * A hda_bus contains several codecs in the list codec_list.
 */
struct hda_bus {
	struct snd_card *card;

	/* copied from template */
	void *private_data;
	struct pci_dev *pci;
	const char *modelname;
	int *power_save;
	struct hda_bus_ops ops;

	/* codec linked list */
	struct list_head codec_list;
	/* link caddr -> codec */
	struct hda_codec *caddr_tbl[HDA_MAX_CODEC_ADDRESS + 1];

	struct mutex cmd_mutex;
	struct mutex prepare_mutex;

	/* unsolicited event queue */
	struct hda_bus_unsolicited *unsol;
	char workq_name[16];
	struct workqueue_struct *workq;	/* common workqueue for codecs */

	/* assigned PCMs */
	DECLARE_BITMAP(pcm_dev_bits, SNDRV_PCM_DEVICES);

	/* misc op flags */
	unsigned int needs_damn_long_delay :1;
	unsigned int allow_bus_reset:1;	/* allow bus reset at fatal error */
	unsigned int sync_write:1;	/* sync after verb write */
	/* status for codec/controller */
	unsigned int shutdown :1;	/* being unloaded */
	unsigned int rirb_error:1;	/* error in codec communication */
	unsigned int response_reset:1;	/* controller was reset */
	unsigned int in_reset:1;	/* during reset operation */
	unsigned int power_keep_link_on:1; /* don't power off HDA link */

	int primary_dig_out_type;	/* primary digital out PCM type */
};

/*
 * codec preset
 *
 * Known codecs have the patch to build and set up the controls/PCMs
 * better than the generic parser.
 */
struct hda_codec_preset {
	unsigned int id;
	unsigned int mask;
	unsigned int subs;
	unsigned int subs_mask;
	unsigned int rev;
	hda_nid_t afg, mfg;
	const char *name;
	int (*patch)(struct hda_codec *codec);
};

struct hda_codec_preset_list {
	const struct hda_codec_preset *preset;
	struct module *owner;
	struct list_head list;
};

/* initial hook */
int snd_hda_add_codec_preset(struct hda_codec_preset_list *preset);
int snd_hda_delete_codec_preset(struct hda_codec_preset_list *preset);

/* ops set by the preset patch */
struct hda_codec_ops {
	int (*build_controls)(struct hda_codec *codec);
	int (*build_pcms)(struct hda_codec *codec);
	int (*init)(struct hda_codec *codec);
	void (*free)(struct hda_codec *codec);
	void (*unsol_event)(struct hda_codec *codec, unsigned int res);
	void (*set_power_state)(struct hda_codec *codec, hda_nid_t fg,
				unsigned int power_state);
#ifdef CONFIG_PM
	int (*suspend)(struct hda_codec *codec);
	int (*resume)(struct hda_codec *codec);
	int (*check_power_status)(struct hda_codec *codec, hda_nid_t nid);
#endif
	void (*reboot_notify)(struct hda_codec *codec);
};

/* record for amp information cache */
struct hda_cache_head {
	u32 key:31;		/* hash key */
	u32 dirty:1;
	u16 val;		/* assigned value */
	u16 next;
};

struct hda_amp_info {
	struct hda_cache_head head;
	u32 amp_caps;		/* amp capabilities */
	u16 vol[2];		/* current volume & mute */
};

struct hda_cache_rec {
	u16 hash[64];			/* hash table for index */
	struct snd_array buf;		/* record entries */
};

/* PCM callbacks */
struct hda_pcm_ops {
	int (*open)(struct hda_pcm_stream *info, struct hda_codec *codec,
		    struct snd_pcm_substream *substream);
	int (*close)(struct hda_pcm_stream *info, struct hda_codec *codec,
		     struct snd_pcm_substream *substream);
	int (*prepare)(struct hda_pcm_stream *info, struct hda_codec *codec,
		       unsigned int stream_tag, unsigned int format,
		       struct snd_pcm_substream *substream);
	int (*cleanup)(struct hda_pcm_stream *info, struct hda_codec *codec,
		       struct snd_pcm_substream *substream);
	unsigned int (*get_delay)(struct hda_pcm_stream *info,
				  struct hda_codec *codec,
				  struct snd_pcm_substream *substream);
};

/* PCM information for each substream */
struct hda_pcm_stream {
	unsigned int substreams;	/* number of substreams, 0 = not exist*/
	unsigned int channels_min;	/* min. number of channels */
	unsigned int channels_max;	/* max. number of channels */
	hda_nid_t nid;	/* default NID to query rates/formats/bps, or set up */
	u32 rates;	/* supported rates */
	u64 formats;	/* supported formats (SNDRV_PCM_FMTBIT_) */
	unsigned int maxbps;	/* supported max. bit per sample */
	const struct snd_pcm_chmap_elem *chmap; /* chmap to override */
	struct hda_pcm_ops ops;
};

/* PCM types */
enum {
	HDA_PCM_TYPE_AUDIO,
	HDA_PCM_TYPE_SPDIF,
	HDA_PCM_TYPE_HDMI,
	HDA_PCM_TYPE_MODEM,
	HDA_PCM_NTYPES
};

/* for PCM creation */
struct hda_pcm {
	char *name;
	struct hda_pcm_stream stream[2];
	unsigned int pcm_type;	/* HDA_PCM_TYPE_XXX */
	int device;		/* device number to assign */
	struct snd_pcm *pcm;	/* assigned PCM instance */
	bool own_chmap;		/* codec driver provides own channel maps */
};

/* codec information */
struct hda_codec {
	struct hda_bus *bus;
	unsigned int addr;	/* codec addr*/
	struct list_head list;	/* list point */

	hda_nid_t afg;	/* AFG node id */
	hda_nid_t mfg;	/* MFG node id */

	/* ids */
	u8 afg_function_id;
	u8 mfg_function_id;
	u8 afg_unsol;
	u8 mfg_unsol;
	u32 vendor_id;
	u32 subsystem_id;
	u32 revision_id;

	/* detected preset */
	const struct hda_codec_preset *preset;
	struct module *owner;
	const char *vendor_name;	/* codec vendor name */
	const char *chip_name;		/* codec chip name */
	const char *modelname;	/* model name for preset */

	/* set by patch */
	struct hda_codec_ops patch_ops;

	/* PCM to create, set by patch_ops.build_pcms callback */
	unsigned int num_pcms;
	struct hda_pcm *pcm_info;

	/* codec specific info */
	void *spec;

	/* beep device */
	struct hda_beep *beep;
	unsigned int beep_mode;

	/* widget capabilities cache */
	unsigned int num_nodes;
	hda_nid_t start_nid;
	u32 *wcaps;

	struct snd_array mixers;	/* list of assigned mixer elements */
	struct snd_array nids;		/* list of mapped mixer elements */

	struct hda_cache_rec amp_cache;	/* cache for amp access */
	struct hda_cache_rec cmd_cache;	/* cache for other commands */

	struct list_head conn_list;	/* linked-list of connection-list */

	struct mutex spdif_mutex;
	struct mutex control_mutex;
	struct mutex hash_mutex;
	struct snd_array spdif_out;
	unsigned int spdif_in_enable;	/* SPDIF input enable? */
	const hda_nid_t *slave_dig_outs; /* optional digital out slave widgets */
	struct snd_array init_pins;	/* initial (BIOS) pin configurations */
	struct snd_array driver_pins;	/* pin configs set by codec parser */
	struct snd_array cvt_setups;	/* audio convert setups */

#ifdef CONFIG_SND_HDA_HWDEP
	struct mutex user_mutex;
	struct snd_hwdep *hwdep;	/* assigned hwdep device */
	struct snd_array init_verbs;	/* additional init verbs */
	struct snd_array hints;		/* additional hints */
	struct snd_array user_pins;	/* default pin configs to override */
#endif

	/* misc flags */
	unsigned int spdif_status_reset :1; /* needs to toggle SPDIF for each
					     * status change
					     * (e.g. Realtek codecs)
					     */
	unsigned int pin_amp_workaround:1; /* pin out-amp takes index
					    * (e.g. Conexant codecs)
					    */
	unsigned int single_adc_amp:1; /* adc in-amp takes no index
					* (e.g. CX20549 codec)
					*/
	unsigned int no_sticky_stream:1; /* no sticky-PCM stream assignment */
	unsigned int pins_shutup:1;	/* pins are shut up */
	unsigned int no_trigger_sense:1; /* don't trigger at pin-sensing */
	unsigned int no_jack_detect:1;	/* Machine has no jack-detection */
	unsigned int inv_eapd:1; /* broken h/w: inverted EAPD control */
	unsigned int inv_jack_detect:1;	/* broken h/w: inverted detection bit */
	unsigned int pcm_format_first:1; /* PCM format must be set first */
	unsigned int epss:1;		/* supporting EPSS? */
	unsigned int cached_write:1;	/* write only to caches */
#ifdef CONFIG_PM
	unsigned int power_on :1;	/* current (global) power-state */
	unsigned int d3_stop_clk:1;	/* support D3 operation without BCLK */
	unsigned int pm_down_notified:1; /* PM notified to controller */
	unsigned int in_pm:1;		/* suspend/resume being performed */
	int power_transition;	/* power-state in transition */
	int power_count;	/* current (global) power refcount */
	struct delayed_work power_work; /* delayed task for powerdown */
	unsigned long power_on_acct;
	unsigned long power_off_acct;
	unsigned long power_jiffies;
	spinlock_t power_lock;
#endif

	/* filter the requested power state per nid */
	unsigned int (*power_filter)(struct hda_codec *codec, hda_nid_t nid,
				     unsigned int power_state);

	/* codec-specific additional proc output */
	void (*proc_widget_hook)(struct snd_info_buffer *buffer,
				 struct hda_codec *codec, hda_nid_t nid);

	/* jack detection */
	struct snd_array jacktbl;
	unsigned long jackpoll_interval; /* In jiffies. Zero means no poll, rely on unsol events */
	struct delayed_work jackpoll_work;

#ifdef CONFIG_SND_HDA_INPUT_JACK
	/* jack detection */
	struct snd_array jacks;
#endif

	/* fix-up list */
	int fixup_id;
	const struct hda_fixup *fixup_list;
	const char *fixup_name;

	/* additional init verbs */
	struct snd_array verbs;
};

/* direction */
enum {
	HDA_INPUT, HDA_OUTPUT
};

/*
 * constructors
 */
int snd_hda_bus_new(struct snd_card *card, const struct hda_bus_template *temp,
		    struct hda_bus **busp);
int snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr,
		      struct hda_codec **codecp);
int snd_hda_codec_configure(struct hda_codec *codec);
int snd_hda_codec_update_widgets(struct hda_codec *codec);

/*
 * low level functions
 */
unsigned int snd_hda_codec_read(struct hda_codec *codec, hda_nid_t nid,
				int direct,
				unsigned int verb, unsigned int parm);
int snd_hda_codec_write(struct hda_codec *codec, hda_nid_t nid, int direct,
			unsigned int verb, unsigned int parm);
#define snd_hda_param_read(codec, nid, param) \
	snd_hda_codec_read(codec, nid, 0, AC_VERB_PARAMETERS, param)
int snd_hda_get_sub_nodes(struct hda_codec *codec, hda_nid_t nid,
			  hda_nid_t *start_id);
int snd_hda_get_connections(struct hda_codec *codec, hda_nid_t nid,
			    hda_nid_t *conn_list, int max_conns);
static inline int
snd_hda_get_num_conns(struct hda_codec *codec, hda_nid_t nid)
{
	return snd_hda_get_connections(codec, nid, NULL, 0);
}
int snd_hda_get_num_raw_conns(struct hda_codec *codec, hda_nid_t nid);
int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid,
			    hda_nid_t *conn_list, int max_conns);
int snd_hda_get_conn_list(struct hda_codec *codec, hda_nid_t nid,
			  const hda_nid_t **listp);
int snd_hda_override_conn_list(struct hda_codec *codec, hda_nid_t nid, int nums,
			  const hda_nid_t *list);
int snd_hda_get_conn_index(struct hda_codec *codec, hda_nid_t mux,
			   hda_nid_t nid, int recursive);
int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid,
				u32 *ratesp, u64 *formatsp, unsigned int *bpsp);

struct hda_verb {
	hda_nid_t nid;
	u32 verb;
	u32 param;
};

void snd_hda_sequence_write(struct hda_codec *codec,
			    const struct hda_verb *seq);

/* unsolicited event */
int snd_hda_queue_unsol_event(struct hda_bus *bus, u32 res, u32 res_ex);

/* cached write */
int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
			      int direct, unsigned int verb, unsigned int parm);
void snd_hda_sequence_write_cache(struct hda_codec *codec,
				  const struct hda_verb *seq);
int snd_hda_codec_update_cache(struct hda_codec *codec, hda_nid_t nid,
			      int direct, unsigned int verb, unsigned int parm);
void snd_hda_codec_resume_cache(struct hda_codec *codec);
/* both for cmd & amp caches */
void snd_hda_codec_flush_cache(struct hda_codec *codec);

/* the struct for codec->pin_configs */
struct hda_pincfg {
	hda_nid_t nid;
	unsigned char ctrl;	/* original pin control value */
	unsigned char target;	/* target pin control value */
	unsigned int cfg;	/* default configuration */
};

unsigned int snd_hda_codec_get_pincfg(struct hda_codec *codec, hda_nid_t nid);
int snd_hda_codec_set_pincfg(struct hda_codec *codec, hda_nid_t nid,
			     unsigned int cfg);
int snd_hda_add_pincfg(struct hda_codec *codec, struct snd_array *list,
		       hda_nid_t nid, unsigned int cfg); /* for hwdep */
void snd_hda_shutup_pins(struct hda_codec *codec);

/* SPDIF controls */
struct hda_spdif_out {
	hda_nid_t nid;		/* Converter nid values relate to */
	unsigned int status;	/* IEC958 status bits */
	unsigned short ctls;	/* SPDIF control bits */
};
struct hda_spdif_out *snd_hda_spdif_out_of_nid(struct hda_codec *codec,
					       hda_nid_t nid);
void snd_hda_spdif_ctls_unassign(struct hda_codec *codec, int idx);
void snd_hda_spdif_ctls_assign(struct hda_codec *codec, int idx, hda_nid_t nid);

/*
 * Mixer
 */
int snd_hda_build_controls(struct hda_bus *bus);
int snd_hda_codec_build_controls(struct hda_codec *codec);

/*
 * PCM
 */
int snd_hda_build_pcms(struct hda_bus *bus);
int snd_hda_codec_build_pcms(struct hda_codec *codec);

int snd_hda_codec_prepare(struct hda_codec *codec,
			  struct hda_pcm_stream *hinfo,
			  unsigned int stream,
			  unsigned int format,
			  struct snd_pcm_substream *substream);
void snd_hda_codec_cleanup(struct hda_codec *codec,
			   struct hda_pcm_stream *hinfo,
			   struct snd_pcm_substream *substream);

void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid,
				u32 stream_tag,
				int channel_id, int format);
void __snd_hda_codec_cleanup_stream(struct hda_codec *codec, hda_nid_t nid,
				    int do_now);
#define snd_hda_codec_cleanup_stream(codec, nid) \
	__snd_hda_codec_cleanup_stream(codec, nid, 0)
unsigned int snd_hda_calc_stream_format(unsigned int rate,
					unsigned int channels,
					unsigned int format,
					unsigned int maxbps,
					unsigned short spdif_ctls);
int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid,
				unsigned int format);

extern const struct snd_pcm_chmap_elem snd_pcm_2_1_chmaps[];

/*
 * Misc
 */
void snd_hda_get_codec_name(struct hda_codec *codec, char *name, int namelen);
void snd_hda_bus_reboot_notify(struct hda_bus *bus);
void snd_hda_codec_set_power_to_all(struct hda_codec *codec, hda_nid_t fg,
				    unsigned int power_state);

int snd_hda_lock_devices(struct hda_bus *bus);
void snd_hda_unlock_devices(struct hda_bus *bus);

/*
 * power management
 */
#ifdef CONFIG_PM
int snd_hda_suspend(struct hda_bus *bus);
int snd_hda_resume(struct hda_bus *bus);
#endif

static inline
int hda_call_check_power_status(struct hda_codec *codec, hda_nid_t nid)
{
#ifdef CONFIG_PM
	if (codec->patch_ops.check_power_status)
		return codec->patch_ops.check_power_status(codec, nid);
#endif
	return 0;
}

/*
 * get widget information
 */
const char *snd_hda_get_jack_connectivity(u32 cfg);
const char *snd_hda_get_jack_type(u32 cfg);
const char *snd_hda_get_jack_location(u32 cfg);

/*
 * power saving
 */
#ifdef CONFIG_PM
void snd_hda_power_save(struct hda_codec *codec, int delta, bool d3wait);
void snd_hda_update_power_acct(struct hda_codec *codec);
#else
static inline void snd_hda_power_save(struct hda_codec *codec, int delta,
				      bool d3wait) {}
#endif

/**
 * snd_hda_power_up - Power-up the codec
 * @codec: HD-audio codec
 *
 * Increment the power-up counter and power up the hardware really when
 * not turned on yet.
 */
static inline void snd_hda_power_up(struct hda_codec *codec)
{
	snd_hda_power_save(codec, 1, false);
}

/**
 * snd_hda_power_up_d3wait - Power-up the codec after waiting for any pending
 *   D3 transition to complete.  This differs from snd_hda_power_up() when
 *   power_transition == -1.  snd_hda_power_up sees this case as a nop,
 *   snd_hda_power_up_d3wait waits for the D3 transition to complete then powers
 *   back up.
 * @codec: HD-audio codec
 *
 * Cancel any power down operation hapenning on the work queue, then power up.
 */
static inline void snd_hda_power_up_d3wait(struct hda_codec *codec)
{
	snd_hda_power_save(codec, 1, true);
}

/**
 * snd_hda_power_down - Power-down the codec
 * @codec: HD-audio codec
 *
 * Decrement the power-up counter and schedules the power-off work if
 * the counter rearches to zero.
 */
static inline void snd_hda_power_down(struct hda_codec *codec)
{
	snd_hda_power_save(codec, -1, false);
}

/**
 * snd_hda_power_sync - Synchronize the power-save status
 * @codec: HD-audio codec
 *
 * Synchronize the actual power state with the power account;
 * called when power_save parameter is changed
 */
static inline void snd_hda_power_sync(struct hda_codec *codec)
{
	snd_hda_power_save(codec, 0, false);
}

#ifdef CONFIG_SND_HDA_PATCH_LOADER
/*
 * patch firmware
 */
int snd_hda_load_patch(struct hda_bus *bus, size_t size, const void *buf);
#endif

#ifdef CONFIG_SND_HDA_DSP_LOADER
static inline int
snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,
				unsigned int size,
				struct snd_dma_buffer *bufp)
{
	return codec->bus->ops.load_dsp_prepare(codec->bus, format, size, bufp);
}
static inline void
snd_hda_codec_load_dsp_trigger(struct hda_codec *codec, bool start)
{
	return codec->bus->ops.load_dsp_trigger(codec->bus, start);
}
static inline void
snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
				struct snd_dma_buffer *dmab)
{
	return codec->bus->ops.load_dsp_cleanup(codec->bus, dmab);
}
#else
static inline int
snd_hda_codec_load_dsp_prepare(struct hda_codec *codec, unsigned int format,
				unsigned int size,
				struct snd_dma_buffer *bufp)
{
	return -ENOSYS;
}
static inline void
snd_hda_codec_load_dsp_trigger(struct hda_codec *codec, bool start) {}
static inline void
snd_hda_codec_load_dsp_cleanup(struct hda_codec *codec,
				struct snd_dma_buffer *dmab) {}
#endif

/*
 * Codec modularization
 */

/* Export symbols only for communication with codec drivers;
 * When built in kernel, all HD-audio drivers are supposed to be statically
 * linked to the kernel.  Thus, the symbols don't have to (or shouldn't) be
 * exported unless it's built as a module.
 */
#ifdef MODULE
#define EXPORT_SYMBOL_HDA(sym) EXPORT_SYMBOL_GPL(sym)
#else
#define EXPORT_SYMBOL_HDA(sym)
#endif

#endif /* __SOUND_HDA_CODEC_H */


text:
package chandu0101.scalajs.react.components.demo.components.reacttagsinput

import chandu0101.scalajs.react.components.demo.components.CodeExample
import chandu0101.scalajs.react.components.textfields.ReactTagsInput
import japgolly.scalajs.react._
import japgolly.scalajs.react.vdom.prefix_<^._

import scala.scalajs.js.{Array => JArray}

object ReactTagsInputDemo {

  val code =
    """
      | ReactTagsInput(ref = "uncontrolledtags")
      | ReactTagsInput(value = S.tags,onChange = B.onChange _)
      |
    """.stripMargin

  case class State(tags: JArray[String] = JArray("scala","scalajs"))

  class Backend(t: BackendScope[_, State]) {

    def onChange(tags : JArray[String] , tag : String) = {
      t.modState(_.copy(tags = tags))
      println(s" Final Tags : ${tags} , Added/Removed Tag : ${tag}")
    }

  }

  val component = ReactComponentB[Unit]("ReactTagsInputDemo")
    .initialState(State())
    .backend(new Backend(_))
    .render((P, S, B) => {
    <.div(
      CodeExample(code, "Demo")(
        <.div(
          <.h4("Uncontrolled : "),
          ReactTagsInput(ref = "uncontrolledtags")
        ),
        <.div(
          <.h4("Controlled : "),
          ReactTagsInput(value = S.tags,onChange = B.onChange _)
        )
      )
    )
  }).buildU

  def apply() = component()

}

redpajama_set_name: RedPajamaGithub


text:
package uk.skelty.ScalIRC

import java.net._
import java.io._
import scala.io._
import scala.util.control.Breaks._

class IRCClient () {
	def connect() {
		val socket  = new Socket("irc.kent.ac.uk", 6667);
		val writer  = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
		val reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

		val nick = "ScalIRC"
		val login = "ScalIRC"
		val channel = "#skytown"

		writer.write("NICK " + nick + "\r\n");
		writer.write("USER " + login + " 8 * :Skylar\'s Bot\r\n");
		writer.flush();

		var line = ""

		breakable {
		    while ({line = reader.readLine(); line != null}) {
		        if (line.indexOf("004") >= 0) {
		            println(" All ok, break now?")
		            break;
		        } else if (line.indexOf("433") >= 0) {
		            println("Nickname is already in use.");
		            break;
		        }
		    }
		}

		writer.write("JOIN " + channel + "\r\n");
		writer.flush();

		breakable {
			while ({line = reader.readLine(); line != null}) {
		        println(line);

			    if (line.toLowerCase().startsWith("ping ")) {
			        writer.write("PONG " + line.substring(5) + "\r\n")
			        writer.flush()
			    } else {
			    	// Split the line up.
			    	val parts = line.split(" ")

			    	// Do we know what to do with this?
			    	if (parts.length >= 3) {
				    	val ident = parts(0)
				    	// Does this look like an ident?
				    	if (ident.indexOf("!") >= 0 && ident.indexOf(":") >= 0 && ident.indexOf("@") >= 0) {
					    	val msgtype = parts(1)
					    	val channel = parts(2)

					    	// Parse the ident.
					    	val nick = ident.substring(1, ident.indexOf("!"))
					    	val isadmin = nick == "sky"

					    	// Create a message object.
					    	val message = new Message(writer, nick, channel, msgtype)

					    	// Process the message.
					    	if (parts.length > 3) {
					    		val msg = parts(3)
					    		if (isadmin && msg == ":shutdown") {
					    			break;
					    		}

					    		message.process(isadmin, msg)
					    	}
				    	}
			    	}
			    }
			}
		}

		writer.close()
		reader.close()
		socket.close()
	}
}


text:
@interface QCRegion : NSObject
{
	CGRect _bounds;	// 4 = 0x4
	void *_region;	// 20 = 0x14
	void *_unused[4];	// 24 = 0x18
}

+ (void)initialize;
+ (id)emptyRegion;
+ (id)infiniteRegion;
+ (id)regionWithCGRect:(CGRect)rect;
+ (id)regionWithCGSRegion:(void *)fp8;
+ (id)regionWithRect:(NSRect)fp8;
- (void)finalize;
- (void)dealloc;
- (id)initWithCGRect:(CGRect)fp8;
- (CGRect)CGRect;
- (id)initWithCGSRegion:(void *)fp8;
- (void *)CGSRegion;
- (id)initWithRect:(NSRect)fp8;
- (NSRect)bounds;
- (BOOL)isEmpty;
- (BOOL)isInfinite;
- (BOOL)isRectangular;
- (BOOL)containsPoint:(NSPoint)point;
- (BOOL)containsRect:(NSRect)rect;
- (BOOL)containsRegion:(id)fp8;
- (BOOL)intersectsRect:(NSRect)rect;
- (BOOL)intersectsRegion:(id)fp8;
- (id)listRects;
- (id)pixelBufferRepresentation;
- (void *)enumerateRects:(void *)fp8 outRect:(NSRect *)fp12;
- (id)transformWith:(CGAffineTransform *)tranform;
- (id)transformBy:(id)fp8;
- (id)offsetByX:(CGFloat)fp8 Y:(CGFloat)fp12;
- (id)scaleByX:(CGFloat)fp8 Y:(CGFloat)fp12;
- (id)rotateByDegrees:(CGFloat)fp8;
- (id)insetByX:(CGFloat)fp8 Y:(CGFloat)fp12;
- (id)unionWithRect:(NSRect)rect;
- (id)intersectWithRect:(NSRect)rect;
- (id)subtractRect:(NSRect)rect;
- (id)unionWithRegion:(id)fp8;
- (id)intersectWithRegion:(id)fp8;
- (id)subtractRegion:(id)fp8;
- (NSString*)description;
@end

@interface QCRegion (CIFilterShape)
+ (id)regionWithCIFilterShape:(id)fp8;
- (id)initWithCIFilterShape:(id)fp8;
- (id)CIFilterShape;
@end


text:
layout: post
title: "DNE 97 - Demissões"
home-title: "Demissões"
type: "Pauta"
cast: 314191792-devnaestrada-devnaestrada-97-demissoes.mp3
cast-length: "42182116"
cast-time: "00:29:15"
description: "Montanha e Ramon, trocam uma idéia de como foram algumas demissões que eles presenciaram e também algumas que eles mesmos passaram."
soundcloud-id: "314191792"
youtubeCode: "MsZQjkFT4hk"
soundcloud-post-image: "000214377288-d0xx5k"
lybsyn-id: "5634169"
sponsors: ["revelo", "alura"]
participants:
  -
    name: Fellipe Azambuja
    twitter: femontanha
  -
    name: Ramon Sanches
    twitter: raymonsanches
links:
  -
    name: "Murilo Gun - Escolas matam o aprendizado"
    urL: "https://youtu.be/WauIURFTpEc"
  -
    name: "Youtube DEVNAESTRADA"
    url: "https://www.youtube.com/c/devnaestrada"
---

Montanha e Ramon, trocam uma idéia de como foram algumas demissões que eles presenciaram e também algumas que eles mesmos passaram.

Passou por uma demissão recentemente? Compartilhe conosco

{% include modules/post-extras.html data=page %}


text:
#ifndef lib_virtio_internal_h
#define lib_virtio_internal_h

#include "types.h"
#include "library.h"
#include "arch_config.h"
#include "virtio_ring.h"
#include "expansionbase.h"

#define LIB_VIRTIO_VERSION  0
#define LIB_VIRTIO_REVISION 1

#define LIB_VIRTIO_LIBNAME "lib_virtio"
#define LIB_VIRTIO_LIBVER  " 0.1 __DATE__"

//vendor id for all virtio devices
#define VIRTIO_VENDOR_ID 0x1af4

//pci config offsets
#define VIRTIO_HOST_F_OFFSET			0x0000
#define VIRTIO_GUEST_F_OFFSET			0x0004
#define VIRTIO_QADDR_OFFSET				0x0008
#define VIRTIO_QSIZE_OFFSET				0x000C
#define VIRTIO_QSEL_OFFSET				0x000E
#define VIRTIO_QNOTFIY_OFFSET			0x0010
#define VIRTIO_DEV_STATUS_OFFSET		0x0012
#define VIRTIO_ISR_STATUS_OFFSET		0x0013
#define VIRTIO_DEV_SPECIFIC_OFFSET		0x0014

//device status
#define VIRTIO_STATUS_RESET			0x00
#define VIRTIO_STATUS_ACK			0x01
#define VIRTIO_STATUS_DRV			0x02
#define VIRTIO_STATUS_DRV_OK		0x04
#define VIRTIO_STATUS_FAIL			0x80

struct virtio_queue
{
	void* unaligned_addr;
	void* paddr;			/* physical addr of ring */
	UINT32 page;				/* physical guest page  = paddr/4096*/

	UINT16 num;				/* number of descriptors collected from device config offset*/
	UINT32 ring_size;			/* size of ring in bytes */
	struct vring vring;

	UINT16 free_num;				/* free descriptors */
	UINT16 free_head;			/* next free descriptor */
	UINT16 free_tail;			/* last free descriptor */
	UINT16 last_used;			/* we checked in used */

	void **data;				/* pointer to array of pointers */
};

// Feature description
typedef struct virtio_feature
{
	char *name;
	UINT8 bit;
	UINT8 host_support;
	UINT8 guest_support;
} virtio_feature;

typedef struct VirtioDevice
{
	PCIAddress		pciAddr;
	volatile UINT16			io_addr;

	UINT8 intLine;
	UINT8 intPin;

	int num_features;
	virtio_feature*   features;

	UINT16 num_queues;
	struct virtio_queue *queues;

} VirtioDevice;

typedef struct LibVirtioBase
{
	struct Library		Library;
	APTR				SysBase;

} LibVirtioBase;

extern char LibVirtioLibName[];
extern char LibVirtioLibVer[];

//functions
struct LibVirtioBase *lib_virtio_OpenLib(struct LibVirtioBase *LibVirtioBase);
APTR lib_virtio_CloseLib(struct LibVirtioBase *LibVirtioBase);
APTR lib_virtio_ExpungeLib(struct LibVirtioBase *LibVirtioBase);
APTR lib_virtio_ExtFuncLib(void);

void lib_virtio_Write8(struct LibVirtioBase *LibVirtioBase, UINT16 base, UINT16 offset, UINT8 val);
void lib_virtio_Write16(struct LibVirtioBase *LibVirtioBase, UINT16 base, UINT16 offset, UINT16 val);
void lib_virtio_Write32(struct LibVirtioBase *LibVirtioBase, UINT16 base, UINT16 offset, UINT32 val);
UINT8 lib_virtio_Read8(struct LibVirtioBase *LibVirtioBase, UINT16 base, UINT16 offset);
UINT16 lib_virtio_Read16(struct LibVirtioBase *LibVirtioBase, UINT16 base, UINT16 offset);
UINT32 lib_virtio_Read32(struct LibVirtioBase *LibVirtioBase, UINT16 base, UINT16 offset);

void lib_virtio_ExchangeFeatures(struct LibVirtioBase *LibVirtioBase, VirtioDevice *vd);
int lib_virtio_AllocateQueues(struct LibVirtioBase *LibVirtioBase, VirtioDevice *vd, INT32 num_queues);
int lib_virtio_InitQueues(struct LibVirtioBase *LibVirtioBase, VirtioDevice *vd);
void lib_virtio_FreeQueues(struct LibVirtioBase *LibVirtioBase, VirtioDevice *vd);
int lib_virtio_HostSupports(LibVirtioBase *LibVirtioBase, VirtioDevice *vd, int bit);
int lib_virtio_GuestSupports(LibVirtioBase *LibVirtioBase, VirtioDevice *vd, int bit);

//internals
int LibVirtio_supports(LibVirtioBase *LibVirtioBase, VirtioDevice *vd, int bit, int host);

int LibVirtio_alloc_phys_queue(LibVirtioBase *LibVirtioBase, struct virtio_queue *q);
void LibVirtio_init_phys_queue(LibVirtioBase *LibVirtioBase, struct virtio_queue *q);
void LibVirtio_free_phys_queue(LibVirtioBase *LibVirtioBase, struct virtio_queue *q);

//outer name (vectors) of our own library functions,
//we can use them inside our library too.
#define VirtioWrite8(a,b,c) (((void(*)(APTR, UINT16, UINT16, UINT8)) 	_GETVECADDR(LibVirtioBase, 5))(LibVirtioBase, a, b, c))
#define VirtioWrite16(a,b,c) (((void(*)(APTR, UINT16, UINT16, UINT16)) 	_GETVECADDR(LibVirtioBase, 6))(LibVirtioBase, a, b, c))
#define VirtioWrite32(a,b,c) (((void(*)(APTR, UINT16, UINT16, UINT32)) 	_GETVECADDR(LibVirtioBase, 7))(LibVirtioBase, a, b, c))
#define VirtioRead8(a,b) (((UINT8(*)(APTR, UINT16, UINT16)) 	_GETVECADDR(LibVirtioBase, 8))(LibVirtioBase, a, b))
#define VirtioRead16(a,b) (((UINT16(*)(APTR, UINT16, UINT16)) 	_GETVECADDR(LibVirtioBase, 9))(LibVirtioBase, a, b))
#define VirtioRead32(a,b) (((UINT32(*)(APTR, UINT16, UINT16)) 	_GETVECADDR(LibVirtioBase, 10))(LibVirtioBase, a, b))

#define VirtioExchangeFeatures(a) (((void(*)(APTR, VirtioDevice*)) 	_GETVECADDR(LibVirtioBase, 11))(LibVirtioBase, a))
#define VirtioAllocateQueues(a,b) (((int(*)(APTR, VirtioDevice*, INT32)) 	_GETVECADDR(LibVirtioBase, 12))(LibVirtioBase, a, b))
#define VirtioInitQueues(a) (((int(*)(APTR, VirtioDevice*)) 	_GETVECADDR(LibVirtioBase, 13))(LibVirtioBase, a))
#define VirtioFreeQueues(a) (((void(*)(APTR, VirtioDevice*)) 	_GETVECADDR(LibVirtioBase, 14))(LibVirtioBase, a))
#define VirtioHostSupports(a,b) (((int(*)(APTR, VirtioDevice*, int)) 	_GETVECADDR(LibVirtioBase, 15))(LibVirtioBase, a, b))
#define VirtioGuestSupports(a,b) (((int(*)(APTR, VirtioDevice*, int)) 	_GETVECADDR(LibVirtioBase, 16))(LibVirtioBase, a, b))

#endif //lib_virtio_internal_h


text:
define(["./ng-class"], function($__0) {
  "use strict";
  if (!$__0 || !$__0.__esModule)
    $__0 = {default: $__0};
  var NgClass = $__0.NgClass;
  var NgParam = (function($__super) {
    function NgParam(localName, string) {
      $traceurRuntime.superConstructor(NgParam).call(this, NgParam);
      this.className = 'NgParam';
      this.localName = localName;
      this.string = string;
    }
    return ($traceurRuntime.createClass)(NgParam, {}, {}, $__super);
  }(NgClass));
  return {
    get NgParam() {
      return NgParam;
    },
    __esModule: true
  };
});


text:
<package>
    <description brief="Python utilities used by the Personal Robotics Laboratory.">
        prpy is a Python library used by the Personal Robotics Laboratory at
        Carnegie Mellon University. This library includes robot-agnostic
        utilities that make it easier to use OpenRAVE in Python scripts. This
        includes a high-level planning pipeline, helper functions, and
        visualization tools.
    </description>
    <author>Michael Koval</author>
    <license>BSD</license>
    <review status="released" notes="approved on 3/13"/>
    <depend package="openrave"/>
    <depend package="manipulation2"/>
    <rosdep name="python-scipy"/>
    <export>
        <openrave optional="cbirrt2"/>
        <openrave optional="orcdchomp"/>
        <openrave optional="or_ompl"/>
        <openrave optional="or_sbpl"/>
    </export>
</package>


text:
Card List Component

	<button type="button" ng-click="$ctrl.changeName()">Change the Card Name!</button>

Name: {{card.name}}

Card Type: {{card.cardType}}


text:
/*******************************************************************************
 * NOTICE
 * The hal is not public api, don't use in application code.
 * See readme.md in component/hal/readme.md
 ******************************************************************************/

// The LL for temperature sensor

#pragma once

#include <stdbool.h>
#include <stdlib.h>
#include "hal/regi2c_ctrl.h"
#include "soc/regi2c_saradc.h"
#include "soc/apb_saradc_struct.h"
#include "soc/soc.h"
#include "soc/soc_caps.h"
#include "hal/temperature_sensor_types.h"
#include "hal/assert.h"

#ifdef __cplusplus
extern "C" {
#endif

#define TEMPERATURE_SENSOR_LL_ADC_FACTOR     (0.4386)
#define TEMPERATURE_SENSOR_LL_DAC_FACTOR     (27.88)
#define TEMPERATURE_SENSOR_LL_OFFSET_FACTOR  (20.52)

/**
 * @brief Enable the temperature sensor power.
 *
 * @param enable true: enable the power.
 */
static inline void temperature_sensor_ll_enable(bool enable)
{
    APB_SARADC.apb_tsens_ctrl.tsens_pu = enable;
}

/**
 * @brief Enable the clock
 */
static inline void temperature_sensor_ll_clk_enable(bool enable)
{
    // No need to enable the temperature clock on esp32c3
}

/**
 * @brief Select the clock source for temperature sensor. On ESP32-C3, temperautre sensor
 *        can use XTAL or FOSC. To make it convenience, suggest using XTAL all the time.
 *
 * @param clk_src refer to ``temperature_sensor_clk_src_t``
 */
static inline void temperature_sensor_ll_clk_sel(temperature_sensor_clk_src_t clk_src)
{
    uint8_t clk_sel = 0;
    switch (clk_src) {
        case TEMPERATURE_SENSOR_CLK_SRC_XTAL:
            clk_sel = 1;
            break;
        case TEMPERATURE_SENSOR_CLK_SRC_RC_FAST:
            clk_sel = 0;
            break;
        default:
            HAL_ASSERT(false);
            break;
    }
    APB_SARADC.apb_tsens_ctrl2.tsens_clk_sel = clk_sel;
}

/**
 * @brief Set the hardware range, you can refer to the table ``temperature_sensor_attributes``
 *
 * @param tsens_dac ``reg_val`` in table ``temperature_sensor_attributes``
 */
static inline void temperature_sensor_ll_set_range(uint32_t range)
{
    REGI2C_WRITE_MASK(I2C_SAR_ADC, I2C_SARADC_TSENS_DAC, range);
}

/**
 * @brief Get the raw value of temperature sensor.
 *
 * @return uint32_t raw_value
 */
static inline uint32_t temperature_sensor_ll_get_raw_value(void)
{
    return APB_SARADC.apb_tsens_ctrl.tsens_out;
}

/**
 * @brief Get the offset value of temperature sensor.
 *
 * @note This function is only used in legacy driver
 *
 * @return uint32_t offset value
 */
static inline uint32_t temperature_sensor_ll_get_offset(void)
{
    return REGI2C_READ_MASK(I2C_SAR_ADC, I2C_SARADC_TSENS_DAC);
}

/**
 * @brief Get the clock division factor value.
 *
 * @note This function is only used in legacy driver
 *
 * @return uint32_t clock division factor
 */
static inline uint32_t temperature_sensor_ll_get_clk_div(void)
{
    return APB_SARADC.apb_tsens_ctrl.tsens_clk_div;
}

/**
 * @brief Set the clock division factor value, actually this has no impact on temperature sensor.
 *        Suggest just keep it as default value 6.
 *
 * @note This function is only used in legacy driver
 *
 * @param clk_div clock division factor, range from 1-10
 */
static inline void temperature_sensor_ll_set_clk_div(uint8_t clk_div)
{
    APB_SARADC.apb_tsens_ctrl.tsens_clk_div = clk_div;
}

#ifdef __cplusplus
}
#endif


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<title>OpenCV: Member List</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>

<link href="../../search/search.css" rel="stylesheet" type="text/css"/>

<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>

OpenCV
    3.2.0

Open Source Computer Vision

tinyxml2

XMLPrinter

tinyxml2::XMLPrinter Member List

This is the complete list of members for tinyxml2::XMLPrinter, including all inherited members.

_elementJustOpened	tinyxml2::XMLPrinter	protected

_stack	tinyxml2::XMLPrinter	protected

ClearBuffer()	tinyxml2::XMLPrinter

CloseElement(bool compactMode=false)	tinyxml2::XMLPrinter	virtual

CompactMode(const XMLElement &)	tinyxml2::XMLPrinter	protectedvirtual

CStr() const	tinyxml2::XMLPrinter

CStrSize() const	tinyxml2::XMLPrinter

OpenElement(const char *name, bool compactMode=false)	tinyxml2::XMLPrinter

Print(const char *format,...)	tinyxml2::XMLPrinter	protected

PrintSpace(int depth)	tinyxml2::XMLPrinter	protectedvirtual

PushAttribute(const char *name, const char *value)	tinyxml2::XMLPrinter

PushAttribute(const char *name, int value)	tinyxml2::XMLPrinter

PushAttribute(const char *name, unsigned value)	tinyxml2::XMLPrinter

PushAttribute(const char *name, bool value)	tinyxml2::XMLPrinter

PushAttribute(const char *name, double value)	tinyxml2::XMLPrinter

PushComment(const char *comment)	tinyxml2::XMLPrinter

PushDeclaration(const char *value)	tinyxml2::XMLPrinter

PushHeader(bool writeBOM, bool writeDeclaration)	tinyxml2::XMLPrinter

PushText(const char *text, bool cdata=false)	tinyxml2::XMLPrinter

PushText(int value)	tinyxml2::XMLPrinter

PushText(unsigned value)	tinyxml2::XMLPrinter

PushText(bool value)	tinyxml2::XMLPrinter

PushText(float value)	tinyxml2::XMLPrinter

PushText(double value)	tinyxml2::XMLPrinter

PushUnknown(const char *value)	tinyxml2::XMLPrinter

SealElement()	tinyxml2::XMLPrinter	protected

Visit(const XMLText &text)	tinyxml2::XMLPrinter	virtual

Visit(const XMLComment &comment)	tinyxml2::XMLPrinter	virtual

Visit(const XMLDeclaration &declaration)	tinyxml2::XMLPrinter	virtual

Visit(const XMLUnknown &unknown)	tinyxml2::XMLPrinter	virtual

VisitEnter(const XMLDocument &)	tinyxml2::XMLPrinter	virtual

VisitEnter(const XMLElement &element, const XMLAttribute *attribute)	tinyxml2::XMLPrinter	virtual

VisitExit(const XMLDocument &)	tinyxml2::XMLPrinter	virtual

VisitExit(const XMLElement &element)	tinyxml2::XMLPrinter	virtual

XMLPrinter(FILE *file=0, bool compact=false, int depth=0)	tinyxml2::XMLPrinter

~XMLPrinter()	tinyxml2::XMLPrinter	virtual

~XMLVisitor()	tinyxml2::XMLVisitor	virtual

<address class="footer">
Generated on Fri Dec 23 2016 13:00:30 for OpenCV by

 1.8.12
</address>


text:
set -e

YUM_PACKAGE_NAME="python3.6 python3.6-devel python3.6-pip openssl-devel git"
DEB_PACKAGE_NAME="python3 python3-dev python3-pip libssl-dev git"

 if cat /etc/*release | grep ^NAME | grep CentOS; then
    echo "==============================================="
    echo "Installing packages $YUM_PACKAGE_NAME on CentOS"
    echo "==============================================="
    yum install -y $YUM_PACKAGE_NAME
 elif cat /etc/*release | grep ^NAME | grep Red; then
    echo "==============================================="
    echo "Installing packages $YUM_PACKAGE_NAME on RedHat"
    echo "==============================================="
    yum install -y $YUM_PACKAGE_NAME
 elif cat /etc/*release | grep ^NAME | grep Fedora; then
    echo "================================================"
    echo "Installing packages $YUM_PACKAGE_NAME on Fedora"
    echo "================================================"
    yum install -y $YUM_PACKAGE_NAME
 elif cat /etc/*release | grep ^NAME | grep Ubuntu; then
    echo "==============================================="
    echo "Installing packages $DEB_PACKAGE_NAME on Ubuntu"
    echo "==============================================="
    sudo apt-get update
    sudo apt-get install -y $DEB_PACKAGE_NAME
 elif cat /etc/*release | grep ^NAME | grep Debian ; then
    echo "==============================================="
    echo "Installing packages $DEB_PACKAGE_NAME on Debian"
    echo "==============================================="
    sudo apt-get update
    sudo apt-get install -y $DEB_PACKAGE_NAME
 elif cat /etc/*release | grep ^NAME | grep Mint ; then
    echo "============================================="
    echo "Installing packages $DEB_PACKAGE_NAME on Mint"
    echo "============================================="
    sudo apt-get update
    sudo apt-get install -y $DEB_PACKAGE_NAME
 elif cat /etc/*release | grep ^NAME | grep Knoppix ; then
    echo "================================================="
    echo "Installing packages $DEB_PACKAGE_NAME on Kanoppix"
    echo "================================================="
    apt-get update
    apt-get install -y $DEB_PACKAGE_NAME
 else
    echo "OS NOT DETECTED, couldn't install package $PACKAGE"
    exit 1;
 fi

exit 0


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<TITLE>
org.apache.derby.jdbc (Apache Derby 10.8 API Documentation)
</TITLE>

<META NAME="date" CONTENT="2012-11-02">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

org.apache.derby.jdbc

Classes

ClientBaseDataSource

ClientConnectionPoolDataSource40

ClientDataSource40

ClientDriver

ClientXADataSource40

EmbeddedConnectionPoolDataSource40

EmbeddedDataSource40

EmbeddedDriver

EmbeddedXADataSource40


text:
/*
  Test the checks that a specific implementation conforms to the Directed interfaces
*/

$(document).ready(function() {

   var implements_Directed = function(name, Constructor){

       module(name + " (Directed)");

       test("append",function() {
           var col = new Constructor([1,2,3]);
           ok( equalsArr(col.append(4).asArray() , [1,2,3,4]));
       });

       test("appendAll",function() {
           var col = new Constructor([1,2,3]);
           ok( equalsArr( col.appendAll([4,5]).asArray(), [1,2,3,4,5]));
       });

       test("prepend",function() {
           var col = new Constructor([1,2,3]);
           ok( equalsArr(col.prepend(4).asArray(), [4,1,2,3]));
       });

       test("prependAll",function() {
           var col = new Constructor([1,2,3]);
           ok( equalsArr(col.prependAll([4,5]).asArray(), [4,5,1,2,3]));
       });

       test("reverse",function() {
           var col = new Constructor([1,2,3]);
           ok( equalsArr( col.reverse().asArray(), [3,2,1] ));
       });
   };

   implements_Directed("List",  mugs.List);
   implements_Directed("Stack", mugs.Stack);
   implements_Directed("Queue", mugs.Queue);
});


text:
#import <DevToolsInterface/PBXCodeAssistantDataSource.h>

@interface PBXCodeAssistantWordBasedDataSource : PBXCodeAssistantDataSource
{
}

- (id)infoString;
- (id)initWithTextView:(id)arg1;

@end


text:
package test;

/**
 * The 'TestShoeMaker' class is a 'main' method test that reports back to the console
 * ============================================================================================
 * After creating an instance of the 'ShoeMaker' class and passing argument(s)...
 * To the constructor of the 'ShoeMaker' class...
 * The program returns back to this 'TestJoeShoeMaker' class to print to the console...
 * the item 'name' of the product being sold.
 * ============================================================================================
 * Next, the program creates an instance of the 'SellerImplements' class and...
 * Passes argument(s) to the 'SellerImplements' class constructor.
 * ============================================================================================
 * After printing out a confirmation of both the 'ShoeMaker' class 'name' AND the instance of the...
 * 'SellerImplements' class 'itemName'...
 * ============================================================================================
 * The program creates an instance of the 'Products' class and...
 * Passes argument(s) to the 'Products' class constructor.
 * ============================================================================================
 * Next, the program creates couple of new instances of the 'ProductImplements' and...
 * Passes argument(s) to the parameters of the new 'productimplements' object
 * ============================================================================================
 * The program then calculates the average product price for the category and prints to...
 * The console a summation of the item information being sold.
 * ============================================================================================
 * Exits the program via the 'return' statement after printing a summation statement.
 * ============================================================================================
 * @author rwebaz http://about.me/rwebaz */

import seller.SellerImplements;
import seller.ShoeMaker;
import product.Product;
import product.ProductImplements;

public class TestShoeMaker {

	static String name;

	public static void main(String[] args) {

	// Test program Introduction

		System.out
			.println("==================================================================================");
		System.out
			.println("The 'Test New Package' (TNP) Program: Testing methods, arguments, and interfaces");
		System.out
			.println("==================================================================================");
		System.out
			.println("Test Number Two (revised: 04-24-14 | 'Joe the Shoe Maker' Declares A Category of Merchandise to Sell");
		System.out
			.println("====================================================================================================");

		/* Create a new instance of the ShoeMaker class named 'joeshoemaker' and...
		pass argument(s) to the parameters of the new 'joeshoemaker' object */

		ShoeMaker joeshoemaker = new ShoeMaker("Shoes");

		System.out.println("Category Name | 'Joe the Shoe Maker' wants to sell '"
				+ joeshoemaker.getName() + "'!");
		System.out
			.println("===========================================================");

		/* Create a new instance of the 'Seller' class named 'seller' and...
		pass argument(s) to the parameters of the new 'seller' object */

		SellerImplements sellerimplements = new SellerImplements("Joe Shoe Maker", "10009", 250_000);

		/* Create a new instance of the 'Product' class named 'product' and...
		pass argument(s) to the parameters of the new 'product' object */

		Product product = new Product("Shoes", 164.99);

		/* Create a couple of new instances of the 'ProductImplements' class named 'productimplements' and...
		pass argument(s) to the parameters of the new 'productimplements' object */

		ProductImplements productimplements1 = new ProductImplements("Womens fancy shoes", "10008", 179.99);

		ProductImplements productimplements2 = new ProductImplements("Mens fancy shoes", "10009", 149.99);

		// Calculate the average product price for the category

		System.out.println("Average Unit Price | The average price of " + joeshoemaker.getName() + " at '" + sellerimplements.getSellerName() + "'s store is $" + (productimplements1.getProductPrice() + productimplements2.getProductPrice())/2 + ".");

		System.out
			.println("=====================================================================================");

		// Print to the console a summation of the item information being sold

		productimplements1.getProductInfo();

		productimplements2.getProductInfo();

		System.out
			.println("The product category has been '" + product.getCategoryName() + "' and the average price per pair at '" + sellerimplements.getSellerName() + "'s store is $" + product.getItemPrice() + ".");

		System.out
			.println("===========================================================================================================");

		System.out.println("@author rwebaz http://about.me/rwebaz");

		return;
	}
}


text:
***

[![Build Status](https://travis-ci.org/summernote/angular-summernote.png?branch=master)](https://travis-ci.org/summernote/angular-summernote)
[![Dependency Status](https://gemnasium.com/summernote/angular-summernote.png)](https://gemnasium.com/summernote/angular-summernote)
[![Coverage Status](https://coveralls.io/repos/summernote/angular-summernote/badge.png)](https://coveralls.io/r/summernote/angular-summernote)

angular-summernote is just a directive to bind summmernote's all features.
You can use summernote with angular way.

**Since v0.7.x, the version of angular-summernote follows the version of summernote.
So, angular-summernote v0.7.x are compatible with summernote v0.7.x and
and angular-summernote v0.8.x will be compatible with summernote v0.8.x.
Angular-summernote will match only `major.minor` with summernote.
Therefore, angular-summernote v0.7.0 will be compatible with summernote v0.7.0, v0.7.1 and
v0.7.2. Angular-summernote will release patch update, such as v0.7.1, if only angular-summernote has changed.**

## Table of Contents

- [Demo](#demo)
- [Installation](#Installation)
- [How To Use](#how-to-use)
    - [summernote directive](summernote-directive)
    - [Options](#options)
    - [ngModel](#ngmodel)
    - [Event Listeners](#event-listeners)
    - [i18n Support](#i18n-support)
- [FAQ](#faq)
- [Change Logs](#change-logs)

## Demo

See at [JSFiddle](http://jsfiddle.net/outsider/n8dt4/322/embedded/result%2Chtml%2Cjs%2Ccss/)
or run example in projects(need to run `bower install` before run)

## Installation

angular-summernote requires all include files of [Summernote](http://summernote.org/).
see [Summernote's installation](http://summernote.org/#/features#installation).

Project files are also available through your favourite package manager:

* Bower: `bower install angular-summernote`

## How To Use

When you are done downloading all the dependencies and project files the only remaining part is to add dependencies on the ui.bootstrap AngularJS module:

When you've inclued all js and css files you need to inject `a` into your angular application:

```javascript
angular.module('myApp', ['summernote']);
```

### `summernote` Directive

You can use `summernote` directive where you want to use summernote editor.
And when the scope is destroyed the directive will be destroyed.

#### As element:

```html
<summernote></summernote>
```
#### As attribute:

```html
<div summernote></div>
```

It will be initialized automatically.

If you put markups in the directive, the markups used as initial text.

```html
<summernote><span style="font-weight: bold;">This is initial text.</span></summernote>
```

### Options

summernote's options can be specified as attributes.

#### height

```html
<summernote height="300"></summernote>
```

#### focus

```html
<summernote focus></summernote>
```

#### airmode
```html
<summernote airMode></summernote>
```

If you use the `removeMedia` button in popover, like below:

```
<summernote airMode config="options" on-media-delete="mediaDelete(target)"></summernote>
```

```
function DemoController($scope) {
  $scope.options = {
    popover: {
      image: [['remove', ['removeMedia']] ],
      air: [['insert', ['picture']]]
    }
  };
  $scope.mediaDelete = function(target) {
    console.log('media is delted:', target);
  }
}
```

You can use the 'onMediaDelete` callback. The `target` object has information of the DOM that is removed like:

```
{
  tagName: "IMG",
  attrs: {
    data-filename: "image-name.jpg",
    src: "http://path/to/image",
    style: "width: 100px;"
  }
}
```

#### options object

You can specify all options using ngModel in `config` attribute.

```html
<summernote config="options"></summernote>
```

```javascript
function DemoController($scope) {
  $scope.options = {
    height: 300,
    focus: true,
    airMode: true,
    toolbar: [
            ['edit',['undo','redo']],
            ['headline', ['style']],
            ['style', ['bold', 'italic', 'underline', 'superscript', 'subscript', 'strikethrough', 'clear']],
            ['fontface', ['fontname']],
            ['textsize', ['fontsize']],
            ['fontclr', ['color']],
            ['alignment', ['ul', 'ol', 'paragraph', 'lineheight']],
            ['height', ['height']],
            ['table', ['table']],
            ['insert', ['link','picture','video','hr']],
            ['view', ['fullscreen', 'codeview']],
            ['help', ['help']]
        ]
  };
}
```

NOTE: `height` and `focus` attributes have high priority than options object.

NOTE: custom toolbar can be set by options object.

### ngModel

summernote's `code`, that is HTML string in summernote.
If you specify ngModel it will be 2-ways binding
to HTML string in summernote. Otherwise `angular-summernote` simply ignore it.

```html
<summernote ng-model="text"></summernote>
```

```javascript
function DemoController($scope) {
  $scope.text = "Hello World";
}
```

And you can use [ngModelOptions](https://docs.angularjs.org/api/ng/directive/ngModelOptions)
with Angular v1.3+. So, you can update ngModel when blur event emitted or with a debouncing delay
if you want.

### Event Listeners

event listeners can be registered as attribute as you want.

```javascript
function DemoController($scope) {
  $scope.init = function() { console.log('Summernote is launched'); }
  $scope.enter = function() { console.log('Enter/Return key pressed'); }
  $scope.focus = function(e) { console.log('Editable area is focused'); }
  $scope.blur = function(e) { console.log('Editable area loses focus'); }
  $scope.paste = function(e) { console.log('Called event paste'); }
  $scope.change = function(contents) {
    console.log('contents are changed:', contents, $scope.editable);
  };
  $scope.keyup = function(e) { console.log('Key is released:', e.keyCode); }
  $scope.keydown = function(e) { console.log('Key is pressed:', e.keyCode); }
  $scope.imageUpload = function(files) {
    console.log('image upload:', files);
    console.log('image upload\'s editable:', $scope.editable);
  }
}
```

```html
<summernote on-init="init()" on-enter="enter()" on-focus="focus(evt)"
            on-blur="blur(evt)" on-paste="paste()" on-keyup="keyup(evt)"
            on-keydown="keydown(evt)" on-change="change(contents)"
            on-image-upload="imageUpload(files)" editable="editable" editor="editor">
</summernote>
```

If you use `$editable` object in `onImageUpload` or `onChange`
(see [summernote's callback](http://summernote.org/#/features#callbacks)),
you should define `editable` attribute and use it in `$scope`.
(Because [AngularJS 1.3.x restricts access to DOM nodes from within expressions](https://docs.angularjs.org/error/$parse/isecdom))

Since summernote v0.6.4, APIs have been changed. So, If you use the verions,
`onImageUpload` is not return `editor` object anymore. If you want to user
`editor` object, you should define `editor` attribute and use it in `$scope`.
Futhermore, you can use summernote's APIs via the `editor` object.

### i18n Support

If you use i18n, you have to include language files.
See [summernote's document](http://summernote.org/#/features#i18n)
for more details.
And then you can specify language like:

```html
<summernote lang="ko-KR"></summernote>
```

## FAQ

- __How to solve compatibility problem with AngularUI Bootstrap?__

[AngularUI Bootstrap](http://angular-ui.github.io/bootstrap/) module is
written to replace the JavaScript file for bootstrap with its own
implementation (`ui-bootstrap-tpls.min.js`).

Summernote was intended to work with Bootstrap, so the coder implemented
features that rely on the `bootstrap.js` file being present.

* If you do not include `bootstrap.js`, summernote throws exceptions.
* If you do not include `ui-bootstrap-tpls.min.js`, your angular directives
  for bootstrap will not work.
* If you include both, then both JavaScript files try to listen on various
  events, and otherwise may have incompatibility issues.

If you have a drop down in the navbar, and use `data-dropdown` directive
as bootstrap says to, then two clicks are required to open
the drop down (menu) instead of the expected one click.

The solution is to not use `data-dropdown` directive. However, the
real solution is for summernote to be agnostic about which of
`bootstrap.js` or `ui-bootstrap-tpls.min.js` are loaded and make the right calls.
(see [#21](https://github.com/summernote/angular-summernote/issues/21))

## Change Logs

See [here](https://github.com/summernote/angular-summernote/blob/master/CHANGELOG.md).


text:
'use strict';

//Adapter browser
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
window.URL = window.URL || window.webkitURL || window.mozURL || window.msURL;
var RTCPeerConnection = RTCPeerConnection;
var RTCSessionDescription = RTCSessionDescription;
var RTCIceCandidate = RTCIceCandidate;

var name = trim(prompt('Enter name:')) || 'visitor ' + Math.floor(Math.random() * 10);
// var name = 'visitor ' + Math.floor(Math.random() * 10);
var started = false;
var requestSocketId;
var initiator = false;

var localStream;
var remoteStream;
var pc;
var pcConfig = {
    'iceServers': [{
        'url': 'stun:stun.l.google.com:19302'
    }]
};
var pcConstraints = {
    'optional': [{
        'DtlsSrtpKeyAgreement': true
    }]
};
var sdpConstraints = {};

var userListDiv = document.getElementById('div-users');
var localVideo = document.getElementById('localVideo');
var remoteVideo = document.getElementById('remoteVideo');

var socket = io.connect(location.origin);

if (!navigator.getUserMedia) {
    alert('Native device media streaming (getUserMedia) not supported in this browser.');
} else {
    console.log('Let\'s go to play webRTC~');
}

if(navigator.mozGetUserMedia){
    pcConfig = {
        'iceServers': [{
            'url': 'stun:23.21.150.121'
        }]
    };
    RTCPeerConnection = mozRTCPeerConnection;
    RTCSessionDescription = mozRTCSessionDescription;
    RTCIceCandidate = mozRTCIceCandidate;

}else if(navigator.webkitGetUserMedia){
    RTCPeerConnection = webkitRTCPeerConnection;
}

if(!name){
    alert('no name');
}

socket.emit('online', name);

socket.on('online', function(data){
    console.log('====   online: ', data);
    flushUserList(userListDiv, JSON.parse(data));
});
socket.on('offline', function(data){
    console.log('====   offline: ', data);
    flushUserList(userListDiv, JSON.parse(data));
});
socket.on('chat request', function(data) {
    console.log('====   chat request: ', data.id);
    var ok = confirm('Whether to accept ' + data.name + ' video chat request ?');
    if(ok){
        requestSocketId = data.id;
        getUserMedia();
    }
});
socket.on('stream ok', function(id){
    requestSocketId = id;
    if(initiator){
        getUserMedia();
    }else{
        createPeerConnection();
        pc.createOffer(
            function setLocalAndSendOffer(sessionDescription) {
                pc.setLocalDescription(sessionDescription);
                socket.emit('offer', requestSocketId, sessionDescription);
            },
            onError,
            sdpConstraints
        );
    }
});
socket.on('offer', function(id, data){
    requestSocketId = id;
    createPeerConnection();
    pc.setRemoteDescription(new RTCSessionDescription(data));
    pc.createAnswer(function setLocalAndSendAnswer(sessionDescription){
        pc.setLocalDescription(sessionDescription);
        socket.emit('answer', requestSocketId, sessionDescription);
    }, onError, sdpConstraints);
});
socket.on('answer', function(id, data){
    pc.setRemoteDescription(new RTCSessionDescription(data));
});
socket.on('candidate', function(data){
    var candidate = new RTCIceCandidate({
        sdpMLineIndex: data.label,
        candidate: data.candidate
    });
    pc.addIceCandidate(candidate);
});

function attachMediaStream(video, stream){
    if(video.mozSrcObject !== undefined){
        video.mozSrcObject = stream;
    }else{
        video.src = (window.URL && window.URL.createObjectURL(stream)) || stream;
    }
    video.play();
};

function trim(str){
    return str.replace(/^\s+|\s+$/g,'');
};

function flushUserList(elem, data){
    elem.innerHTML = '';
    for(var i=0;i<data.length;i++){
        var label = document.createElement('label');
        var text = document.createTextNode(data[i].name);
        label.appendChild(text);
        label.setAttribute('id', data[i].id);
        label.onclick = function(e){
            var socketId = e.target.getAttribute('id');
            // console.log(socket.socket.sessionid);
            // getUserMedia();
            initiator = true;
            socket.emit('chat request', {
                id: socketId,
                name: name
            });
        }
        elem.appendChild(label);
    }
};

#video scale  4:3
function getUserMedia() {
    started = true;
    navigator.getUserMedia({
        video: {
            mandatory: {
                minWidth: 480,
                minHeight: 360
            }
        },
        audio: false
    }, function successCallback(stream) {
        localStream = stream;
        attachMediaStream(localVideo, localStream);
        socket.emit('stream ok', requestSocketId);
    }, onError)
}

function createPeerConnection() {
    try {
        pc = new RTCPeerConnection(pcConfig, pcConstraints);

        pc.addStream(localStream);

        pc.onicecandidate = function handleIceCandidate(event) {
            // console.log('====   onicecandidate event: ', event);
            if (event.candidate) {
                socket.emit('candidate', requestSocketId, {
                    type: 'candidate',
                    label: event.candidate.sdpMLineIndex,
                    id: event.candidate.sdpMid,
                    candidate: event.candidate.candidate
                });
            } else {
                console.log('End of candidates.');
            }
        };
    } catch (e) {
        alert('==== createPeerConnection error:')
        console.log(e);
        return;
    }

    pc.onaddstream = function handleRemoteStreamAdded(event) {
        console.log('====   onaddstream event: ', event);
        attachMediaStream(remoteVideo, event.stream);
        remoteStream = event.stream;
    };

    pc.onremovestream = onError;
}

function onError(e) {
    console.log('onError : ', e);
}


text:
package org.kie.workbench.common.stunner.core.validation;

import org.kie.workbench.common.stunner.core.diagram.Diagram;

/**
 * Base validator type for Domain (BPMN, DMN, Case Management ...).
 */
public interface DomainValidator extends Validator<Diagram, DomainViolation> {

    String getDefinitionSetId();

}


text:
/*
 * ng_gif_demux.h
 */

/*-
 * Copyright 2001 The Aerospace Corporation.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions, and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions, and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. The name of The Aerospace Corporation may not be used to endorse or
 *    promote products derived from this software.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AEROSPACE CORPORATION ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AEROSPACE CORPORATION BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD: soc2013/dpl/head/sys/netgraph/ng_gif_demux.h 139866 2005-01-07 01:45:51Z imp $
 */

#ifndef _NETGRAPH_NG_GIF_DEMUX_H_
#define _NETGRAPH_NG_GIF_DEMUX_H_

/* Node type name and magic cookie */
#define NG_GIF_DEMUX_NODE_TYPE		"gif_demux"
#define NGM_GIF_DEMUX_COOKIE		995567329

/* Hook names */
#define NG_GIF_DEMUX_HOOK_GIF		"gif"
#define NG_GIF_DEMUX_HOOK_INET		"inet"
#define NG_GIF_DEMUX_HOOK_INET6		"inet6"
#define NG_GIF_DEMUX_HOOK_ATALK		"atalk"
#define NG_GIF_DEMUX_HOOK_IPX		"ipx"
#define NG_GIF_DEMUX_HOOK_ATM		"atm"
#define NG_GIF_DEMUX_HOOK_NATM		"natm"

#endif /* _NETGRAPH_NG_GIF_DEMUX_H_ */


text:
using System;
using Valle.GtkUtilidades;

namespace Valle.TpvFinal
{

	public enum AccionesDesglose { dividir, separar, llenar, informacion, salir }
    public delegate void OnAccionDesglose(AccionesDesglose accion);

	public partial class DesgloseTicket : FormularioBase
	{
		public DesgloseTicket ()
		{
			this.Init();
			this.LblTituloBase = this.lblTitulo;
			this.WindowPosition = Gtk.WindowPosition.CenterAlways;
			this.KeepAbove = true; this.Modal = true;
			this.Titulo = "Herramientas de tickets";
		}

		public AccionesDesglose accion;
        public event OnAccionDesglose EjAccion;
        public bool bloquear{
           set{
             this.btnSepararTicket.Sensitive = value;
             this.btnInfTicket.Sensitive = value;
             this.btnDividirTicket.Sensitive = value;
             }

        }

        private void btnDividir_Click(object sender, EventArgs e)
        {
            PulsadoRecientemente = true;
            accion = AccionesDesglose.dividir;
            if (SalirAlPulsar) { base.btnSalir_Click(sender, e); }
            if(EjAccion != null){EjAccion(accion);}
	    }

        private void btnSeparar_Click(object sender, EventArgs e)
        {
            PulsadoRecientemente = true;
            accion = AccionesDesglose.separar;
            if (SalirAlPulsar) { base.btnSalir_Click(sender, e); }
            if (EjAccion != null) { EjAccion(accion); }
        }

        private void btnLlenar_Click(object sender, EventArgs e)
        {
            PulsadoRecientemente = true;
            accion = AccionesDesglose.llenar;
            if (SalirAlPulsar) { base.btnSalir_Click(sender, e); }
            if (EjAccion != null) { EjAccion(accion); }

        }
        protected override void btnSalir_Click(object sender, EventArgs e)
        {
            PulsadoRecientemente = true;
            accion = AccionesDesglose.salir;
            base.btnSalir_Click(sender, e);
            if (EjAccion != null) { EjAccion(accion); }
        }

        void BtnEstadisticaClick(object sender, EventArgs e)
        {
        	PulsadoRecientemente = true;
            accion = AccionesDesglose.informacion;
            base.btnSalir_Click(sender, e);
            if (EjAccion != null) { EjAccion(accion); }
        }

	}
}


text:
package org.sgine.ui.internal

import org.powerscala.{MutableColor, Color}
import org.powerscala.property.{PropertyParent, NumericProperty, ObjectPropertyParent}
import org.sgine.ui.Component

/**
 * @author Matt Hicks <mhicks@sgine.org>
 */
class ComponentColor(val parent: Component) extends PropertyParent {
  val name = "color"

  val red = NumericProperty("red", 1.0)
  val green = NumericProperty("green", 1.0)
  val blue = NumericProperty("blue", 1.0)
  val alpha = NumericProperty("alpha", 1.0)

  def apply(color: Color, updateAlpha: Boolean = true) = {
    red := color.red
    green := color.green
    blue := color.blue
    if (updateAlpha) {
      alpha := color.alpha
    }
  }

  /**
   * Updates the supplied MutableColor to this color value.
   */
  def update(color: MutableColor) = {
    color.red = red()
    color.green = green()
    color.blue = blue()
    color.alpha = alpha()
  }

  /**
   * Creates an immutable Color from this color value.
   */
  def get() = Color.immutable(red(), green(), blue(), alpha())

  object actual extends ObjectPropertyParent(this) {
    val red = NumericProperty("red", 1.0)
    val green = NumericProperty("green", 1.0)
    val blue = NumericProperty("blue", 1.0)
    val alpha = NumericProperty("alpha", 1.0)
  }
}


text:
<?php

namespace App\Http\Controllers;

class ErrorCode extends Controller
{
    // error code list
    const UNKNOWN_ERROR = 500;
    const BAD_REQUEST = 401;
    const NOT_AUTHORIZED = 401;
    const FORBIDDEN = 403;
    const NOT_FOUND = 404;
}


text:
""" A set of tokens and convienence functions for input/output files.

author: Brian Schrader
since: 2015-12-28
"""

from __future__ import print_function
from collections import namedtuple
import glob, re

file_pattern = 'mp.{}.output{}'
alias_pattern = '{command}-{output_number}'

class PathToken(object):
    """ A model for a given path. """

    def __init__(self, alias, path):
        self.alias = alias
        self.path = path

    def __repr__(self):
        return '<Path {}: {}>'.format(self.alias, self.path)

    def __eq__(self, other):
        try:
            return (self.alias == other.alias or
                self.path == other.path)
        except AttributeError:
            return False

    def eval(self):
        return self.path

class CommentToken(object):

    def __init__(self, parts):
        self.parts = parts

    def __repr__(self):
        return '<Comment: {}>'.format(''.join(self.parts))

    def __eq__(self, other):
        return ''.join(self.parts) == ''.join(other.parts)

    def eval(self):
        return '{}\n'.format(''.join(self.parts))

class FileToken(object):
    """ An abc for input/output data classes. Provides various common
    methods.
    Warning: This class should not be used directly.
    """

    def __init__(self, alias, filename='', cwd=''):
        self.alias = alias
        self.filename = filename

        if len(cwd) > 0 and cwd[-1] != '/':
            cwd += '/'
        self.cwd = cwd

    def __eq__(self, other):
        try:
            return (self.alias == other.alias or
                self.filename == other.filename)
        except AttributeError:
            return False

    def __hash__(self):
        return hash(self.alias)

    @property
    def path(self):
        return '{}{}'.format(self.cwd, self.filename)

class Input(FileToken):
    """ A model of a single input to a given command. Input tokens can be
    evaluated to obtain their actual filename(s).
    """

    def __init__(self, alias, filename='', cwd='', and_or=''):
        super(Input, self).__init__(alias, filename, cwd)
        self.and_or = and_or

    def __repr__(self):
        try:
            eval = self.eval()
        except Exception:
            eval = '?'
        return '<Input: {}->[{}]{}>'.format(self.alias, eval,
            ' _{}_'.format(self.and_or) if self.and_or else '')

    def fuzzy_match(self, other):
        """ Given another token, see if either the major alias identifier
        matches the other alias, or if magic matches the alias.
        """
        magic, fuzzy = False, False
        try:
            magic = self.alias == other.magic
        except AttributeError:
            pass

        if '.' in self.alias:
            major = self.alias.split('.')[0]
            fuzzy = major == other.alias
        return magic or fuzzy

    def eval(self):
        """ Evaluates the given input and returns a string containing the
        actual filenames represented. If the input token represents multiple
        independent files, then eval will return a list of all the input files
        needed, otherwise it returns the filenames in a string.
        """
        if self.and_or == 'or':
            return [Input(self.alias, file, self.cwd, 'and')
                for file in self.files]
        return ' '.join(self.files)

    @property
    def command_alias(self):
        """ Returns the command alias for a given input. In most cases this
        is just the input's alias but if the input is one of many, then
        `command_alias` returns just the beginning of the alias cooresponding to
        the command's alias.
        """
        if '.' in self.alias:
            return self.alias.split('-')[0]
        return None

    @property
    def is_magic(self):
        try:
            return isinstance(self.eval(), list)
        except ValueError:
            return False

    @property
    def is_glob(self):
        return '*' in self.filename

    @property
    def magic_path(self):
        match = file_pattern.format(self.alias, '*')
        return '{}{}'.format(self.cwd, match)

    @property
    def files(self):
        """ Returns a list of all the files that match the given
        input token.
        """
        res = None
        if not res:
            res = glob.glob(self.path)
        if not res and self.is_glob:
            res = glob.glob(self.magic_path)
        if not res:
            res = glob.glob(self.alias)
        if not res:
            raise ValueError('No files match. %s' % self)
        return res

    @staticmethod
    def from_string(string, _or=''):
        """ Parse a given string and turn it into an input token. """
        if _or:
            and_or = 'or'
        else:
            and_or = ''
        return Input(string, and_or=and_or)

class Output(FileToken):
    """ A model of a single output to a given command. Output tokens can be
    evaluated to obtain their actual filename(s).
    """

    def __init__(self, alias, filename='', cwd='', magic=''):
        super(Output, self).__init__(alias, filename, cwd)
        self.ext = ''
        self.magic = ''
        self._clean(magic)

    def __repr__(self):
        return '<Output: {}->[{}]{} {}>'.format(self.alias, self.eval(),
            (' ' + self.magic) if self.magic else '', self.ext)

    def __eq__(self, other):
        """ Overrides the token eq to allow for magic : alias comparison for
        magic inputs. Defaults to the super() eq otherwise.
        """
        try:
            return (self.magic == other.alias or
                super(Output, self).__eq__(other))
        except AttributeError:
            return False

    def eval(self):
        """ Returns a filename to be used for script output. """
        if self.magic:
            return self.magic
        if not self.filename:
            return file_pattern.format(self.alias, self.ext)
        return self.path

    def as_input(self):
        """ Returns an input token for the given output. """
        return Input(self.alias, self.eval())

    def _clean(self, magic):
        """ Given a magic string, remove the output tag designator. """
        if magic.lower() == 'o':
            self.magic = ''
        elif magic[:2].lower() == 'o:':
            self.magic = magic[2:]
        elif magic[:2].lower() == 'o.':
            self.ext = magic[1:]

    @staticmethod
    def from_string(string):
        """ Parse a given string and turn it into an output token. """
        return Output('', magic=string)