# -*- coding: utf-8 -*-

PROPERTY = 'property'
METHOD = 'method'


patterns_plain_description = {
"AnnotationPattern"         : [
    (PROPERTY, 'CurrentAnnotationTypeId',
              ( 'out', 'c_int', 'retVal' )),
    (PROPERTY, 'CurrentAnnotationTypeName',
              ( 'out', 'BSTR', 'retVal' )),
    (PROPERTY, 'CurrentAuthor',
              ( 'out', 'BSTR', 'retVal' )),
    (PROPERTY, 'CurrentDateTime',
              ( 'out', 'BSTR', 'retVal' )),
    (PROPERTY, 'CurrentTarget',
              ( 'out', 'POINTER(IUIAutomationElement)', 'retVal' )),
    # (PROPERTY, 'CachedAnnotationTypeId',
              # ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedAnnotationTypeName',
              # ( 'out', 'BSTR', 'retVal' )),
    # (PROPERTY, 'CachedAuthor',
              # ( 'out', 'BSTR', 'retVal' )),
    # (PROPERTY, 'CachedDateTime',
              # ( 'out', 'BSTR', 'retVal' )),
    # (PROPERTY, 'CachedTarget',
              # ( 'out', 'POINTER(IUIAutomationElement)', 'retVal' )),
],
"DockPattern"               : [
    (METHOD, 'SetDockPosition',
              ( 'in', 'DockPosition', 'dockPos' )),
    (PROPERTY, 'CurrentDockPosition',
              ( 'out', 'DockPosition', 'retVal' )),
    # (PROPERTY, 'CachedDockPosition',
              # ( 'out', 'DockPosition', 'retVal' )),
],
"DragPattern"               : [
    (PROPERTY, 'CurrentIsGrabbed',
              ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedIsGrabbed',
              # ( 'out', 'c_int', 'retVal' )),
    (PROPERTY, 'CurrentDropEffect',
              ( 'out', 'BSTR', 'retVal' )),
    # (PROPERTY, 'CachedDropEffect',
              # ( 'out', 'BSTR', 'retVal' )),
    (PROPERTY, 'CurrentDropEffects',
              ( 'out', '_midlSAFEARRAY(BSTR)', 'retVal' )),
    # (PROPERTY, 'CachedDropEffects',
              # ( 'out', '_midlSAFEARRAY(BSTR)', 'retVal' )),
    (METHOD, 'GetCurrentGrabbedItems',
              ( 'out', 'POINTER(IUIAutomationElementArray)', 'retVal' )),
    # (METHOD, 'GetCachedGrabbedItems',
              # ( 'out', 'POINTER(IUIAutomationElementArray)', 'retVal' )),
],
"DropTargetPattern"         : [
    (PROPERTY, 'CurrentDropTargetEffect',
              ( 'out', 'BSTR', 'retVal' )),
    # (PROPERTY, 'CachedDropTargetEffect',
              # ( 'out', 'BSTR', 'retVal' )),
    (PROPERTY, 'CurrentDropTargetEffects',
              ( 'out', '_midlSAFEARRAY(BSTR)', 'retVal' )),
    # (PROPERTY, 'CachedDropTargetEffects',
              # ( 'out', '_midlSAFEARRAY(BSTR)', 'retVal' )),
],
"ExpandCollapsePattern"     : [
    (METHOD, 'Expand'),
    (METHOD, 'Collapse'),
    (PROPERTY, 'CurrentExpandCollapseState',
              ( 'out', 'POINTER(ExpandCollapseState)', 'retVal' )),
    # (PROPERTY, 'CachedExpandCollapseState',
              # ( 'out', 'POINTER(ExpandCollapseState)', 'retVal' )),
],
"GridItemPattern"           : [
    (PROPERTY, 'CurrentContainingGrid',
              ( 'out', 'POINTER(IUIAutomationElement)', 'retVal' )),
    (PROPERTY, 'CurrentRow',
              ( 'out', 'c_int', 'retVal' )),
    (PROPERTY, 'CurrentColumn',
              ( 'out', 'c_int', 'retVal' )),
    (PROPERTY, 'CurrentRowSpan',
              ( 'out', 'c_int', 'retVal' )),
    (PROPERTY, 'CurrentColumnSpan',
              ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedContainingGrid',
              # ( 'out', 'POINTER(IUIAutomationElement)', 'retVal' )),
    # (PROPERTY, 'CachedRow',
              # ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedColumn',
              # ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedRowSpan',
              # ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedColumnSpan',
              # ( 'out', 'c_int', 'retVal' )),
],
"GridPattern"               : [
    (METHOD, 'GetItem',
              ( 'in', 'c_int', 'row' ),
              ( 'in', 'c_int', 'column' ),
              ( 'out', 'POINTER(IUIAutomationElement)', 'element' )),
    (PROPERTY, 'CurrentRowCount',
              ( 'out', 'c_int', 'retVal' )),
    (PROPERTY, 'CurrentColumnCount',
              ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedRowCount',
              # ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedColumnCount',
              # ( 'out', 'c_int', 'retVal' )),
],
"InvokePattern"             : [
    (METHOD, 'Invoke'),
],
"ItemContainerPattern"      : [
    (METHOD, 'FindItemByProperty',
              ( 'in', 'POINTER(IUIAutomationElement)', 'pStartAfter' ),
              ( 'in', 'c_int', 'propertyId' ),
              ( 'in', 'VARIANT', 'value' ),
              ( 'out', 'POINTER(IUIAutomationElement)', 'pFound' )),
],
"LegacyIAccessiblePattern"  : [
    (METHOD, 'Select',
              ( 'in', 'c_int', 'flagsSelect' )),
    (METHOD, 'DoDefaultAction'),
    (METHOD, 'SetValue',
              ( 'in', 'WSTRING', 'szValue' )),
    (PROPERTY, 'CurrentChildId',
              ( 'out', 'c_int', 'pRetVal' )),
    (PROPERTY, 'CurrentName',
              ( 'out', 'BSTR', 'pszName' )),
    (PROPERTY, 'CurrentValue',
              ( 'out', 'BSTR', 'pszValue' )),
    (PROPERTY, 'CurrentDescription',
              ( 'out', 'BSTR', 'pszDescription' )),
    (PROPERTY, 'CurrentRole',
              ( 'out', 'c_ulong', 'pdwRole' )),
    (PROPERTY, 'CurrentState',
              ( 'out', 'c_ulong', 'pdwState' )),
    (PROPERTY, 'CurrentHelp',
              ( 'out', 'BSTR', 'pszHelp' )),
    (PROPERTY, 'CurrentKeyboardShortcut',
              ( 'out', 'BSTR', 'pszKeyboardShortcut' )),
    (METHOD, 'GetCurrentSelection',
              ( 'out', 'POINTER(IUIAutomationElementArray)', 'pvarSelectedChildren' )),
    (PROPERTY, 'CurrentDefaultAction',
              ( 'out', 'BSTR', 'pszDefaultAction' )),
    # (PROPERTY, 'CachedChildId',
              # ( 'out', 'c_int', 'pRetVal' )),
    # (PROPERTY, 'CachedName',
              # ( 'out', 'BSTR', 'pszName' )),
    # (PROPERTY, 'CachedValue',
              # ( 'out', 'BSTR', 'pszValue' )),
    # (PROPERTY, 'CachedDescription',
              # ( 'out', 'BSTR', 'pszDescription' )),
    # (PROPERTY, 'CachedRole',
              # ( 'out', 'c_ulong', 'pdwRole' )),
    # (PROPERTY, 'CachedState',
              # ( 'out', 'c_ulong', 'pdwState' )),
    # (PROPERTY, 'CachedHelp',
              # ( 'out', 'BSTR', 'pszHelp' )),
    # (PROPERTY, 'CachedKeyboardShortcut',
              # ( 'out', 'BSTR', 'pszKeyboardShortcut' )),
    # (METHOD, 'GetCachedSelection',
              # ( 'out', 'POINTER(IUIAutomationElementArray)', 'pvarSelectedChildren' )),
    # (PROPERTY, 'CachedDefaultAction',
              # ( 'out', 'BSTR', 'pszDefaultAction' )),
    # (METHOD, 'GetIAccessible',
              # ( 'out', 'POINTER(IAccessible)', 'ppAccessible' )),
],
"MultipleViewPattern"       : [
    (METHOD, 'GetViewName',
              ( 'in', 'c_int', 'view' ),
              ( 'out', 'BSTR', 'name' )),
    (METHOD, 'SetCurrentView',
              ( 'in', 'c_int', 'view' )),
    (PROPERTY, 'CurrentCurrentView',
              ( 'out', 'c_int', 'retVal' )),
    (METHOD, 'GetCurrentSupportedViews',
              ( 'out', '_midlSAFEARRAY(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedCurrentView',
              # ( 'out', 'c_int', 'retVal' )),
    # (METHOD, 'GetCachedSupportedViews',
              # ( 'out', '_midlSAFEARRAY(c_int)', 'retVal' )),
],
"ObjectModelPattern"        : [
    (METHOD, 'GetUnderlyingObjectModel',
              ( 'out', 'POINTER(IUnknown)', 'retVal' )),
],
"RangeValuePattern"         : [
    (METHOD, 'SetValue',
              ( 'in', 'c_double', 'val' )),
    (PROPERTY, 'CurrentValue',
              ( 'out', 'c_double', 'retVal' )),
    (PROPERTY, 'CurrentIsReadOnly',
              ( 'out', 'c_int', 'retVal' )),
    (PROPERTY, 'CurrentMaximum',
              ( 'out', 'c_double', 'retVal' )),
    (PROPERTY, 'CurrentMinimum',
              ( 'out', 'c_double', 'retVal' )),
    (PROPERTY, 'CurrentLargeChange',
              ( 'out', 'c_double', 'retVal' )),
    (PROPERTY, 'CurrentSmallChange',
              ( 'out', 'c_double', 'retVal' )),
    # (PROPERTY, 'CachedValue',
              # ( 'out', 'c_double', 'retVal' )),
    # (PROPERTY, 'CachedIsReadOnly',
              # ( 'out', 'c_int', 'retVal' )),
    # (PROPERTY, 'CachedMaximum',
              # ( 'out', 'c_double', 'retVal' )),
    # (PROPERTY, 'CachedMinimum',
              # ( 'out', 'c_double', 'retVal' )),
    # (PROPERTY, 'CachedLargeChange',
              # ( 'out', 'c_double', 'retVal' )),
    # (PROPERTY, 'CachedSmallChange',
              # ( 'out', 'c_double', 'retVal' )),
],
"ScrollItemPattern"         : [
    (METHOD, 'ScrollIntoView'),
],
"ScrollPattern"             : [
    (METHOD, 'Scroll',
              ( 'in', 'ScrollAmount', 'horizontalAmount' ),
              ( 'in', 'ScrollAmount', 'verticalAmount' )),
    (METHOD, 'SetScrollPercent',
              ( 'in', 'c_double', 'horizontalPercent' ),
              ( 'in', 'c_double', 'verticalPercent' )),
    (PROPERTY, 'CurrentHorizontalScrollPercent',
              ( 'out', 'c_double', 'retVal' )),
    (PROPERTY, 'CurrentVerticalScrollPercent',
              ( 'out', 'c_double', 'retVal' )),
    (PROPERTY, 'CurrentHorizontalViewSize',
              ( 'out', 'POINTER(c_double)', 'retVal' )),
    (PROPERTY, 'CurrentVerticalViewSize',
              ( 'out', 'POINTER(c_double)', 'retVal' )),
    (PROPERTY, 'CurrentHorizontallyScrollable',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentVerticallyScrollable',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedHorizontalScrollPercent',
              # ( 'out', 'POINTER(c_double)', 'retVal' )),
    # (PROPERTY, 'CachedVerticalScrollPercent',
              # ( 'out', 'POINTER(c_double)', 'retVal' )),
    # (PROPERTY, 'CachedHorizontalViewSize',
              # ( 'out', 'POINTER(c_double)', 'retVal' )),
    # (PROPERTY, 'CachedVerticalViewSize',
              # ( 'out', 'POINTER(c_double)', 'retVal' )),
    # (PROPERTY, 'CachedHorizontallyScrollable',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedVerticallyScrollable',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
],
"SelectionItemPattern"      : [
    (METHOD, 'Select'),
    (METHOD, 'AddToSelection'),
    (METHOD, 'RemoveFromSelection'),
    (PROPERTY, 'CurrentIsSelected',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentSelectionContainer',
              ( 'out', 'POINTER(POINTER(IUIAutomationElement))', 'retVal' )),
    # (PROPERTY, 'CachedIsSelected',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedSelectionContainer',
              # ( 'out', 'POINTER(POINTER(IUIAutomationElement))', 'retVal' )),
],
"SelectionPattern"          : [
    (METHOD, 'GetCurrentSelection',
              ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    (PROPERTY, 'CurrentCanSelectMultiple',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentIsSelectionRequired',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (METHOD, 'GetCachedSelection',
              # ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    # (PROPERTY, 'CachedCanSelectMultiple',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedIsSelectionRequired',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
],
"SpreadsheetPattern"        : [
    (METHOD, 'GetItemByName',
              ( 'in', 'BSTR', 'name' ),
              ( 'out', 'POINTER(POINTER(IUIAutomationElement))', 'element' )),
],
"SpreadsheetItemPattern"    : [
    (PROPERTY, 'CurrentFormula',
              ( 'out', 'POINTER(BSTR)', 'retVal' )),
    (METHOD, 'GetCurrentAnnotationObjects',
              ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    (METHOD, 'GetCurrentAnnotationTypes',
              ( 'out', 'POINTER(_midlSAFEARRAY(c_int))', 'retVal' )),
    # (PROPERTY, 'CachedFormula',
              # ( 'out', 'POINTER(BSTR)', 'retVal' )),
    # (METHOD, 'GetCachedAnnotationObjects',
              # ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    # (METHOD, 'GetCachedAnnotationTypes',
              # ( 'out', 'POINTER(_midlSAFEARRAY(c_int))', 'retVal' )),
],
"StylesPattern"             : [
    (PROPERTY, 'CurrentStyleId',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentStyleName',
              ( 'out', 'POINTER(BSTR)', 'retVal' )),
    (PROPERTY, 'CurrentFillColor',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentFillPatternStyle',
              ( 'out', 'POINTER(BSTR)', 'retVal' )),
    (PROPERTY, 'CurrentShape',
              ( 'out', 'POINTER(BSTR)', 'retVal' )),
    (PROPERTY, 'CurrentFillPatternColor',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentExtendedProperties',
              ( 'out', 'POINTER(BSTR)', 'retVal' )),
    (METHOD, 'GetCurrentExtendedPropertiesAsArray',
              ( 'out', 'POINTER(POINTER(ExtendedProperty))', 'propertyArray' ),
              ( 'out', 'POINTER(c_int)', 'propertyCount' )),
    # (PROPERTY, 'CachedStyleId',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedStyleName',
              # ( 'out', 'POINTER(BSTR)', 'retVal' )),
    # (PROPERTY, 'CachedFillColor',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedFillPatternStyle',
              # ( 'out', 'POINTER(BSTR)', 'retVal' )),
    # (PROPERTY, 'CachedShape',
              # ( 'out', 'POINTER(BSTR)', 'retVal' )),
    # (PROPERTY, 'CachedFillPatternColor',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedExtendedProperties',
              # ( 'out', 'POINTER(BSTR)', 'retVal' )),
    # (METHOD, 'GetCachedExtendedPropertiesAsArray',
              # ( 'out', 'POINTER(POINTER(ExtendedProperty))', 'propertyArray' ),
              # ( 'out', 'POINTER(c_int)', 'propertyCount' )),
],
"SynchronizedInputPattern"  : [
    (METHOD, 'StartListening',
              ( 'in', 'SynchronizedInputType', 'inputType' )),
    (METHOD, 'Cancel'),
],
"TableItemPattern"          : [
    (METHOD, 'GetCurrentRowHeaderItems',
              ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    (METHOD, 'GetCurrentColumnHeaderItems',
              ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    # (METHOD, 'GetCachedRowHeaderItems',
              # ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    # (METHOD, 'GetCachedColumnHeaderItems',
              # ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
],
"TablePattern"              : [
    (METHOD, 'GetCurrentRowHeaders',
              ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    (METHOD, 'GetCurrentColumnHeaders',
              ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    (PROPERTY, 'CurrentRowOrColumnMajor',
              ( 'out', 'POINTER(RowOrColumnMajor)', 'retVal' )),
    # (METHOD, 'GetCachedRowHeaders',
              # ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    # (METHOD, 'GetCachedColumnHeaders',
              # ( 'out', 'POINTER(POINTER(IUIAutomationElementArray))', 'retVal' )),
    # (PROPERTY, 'CachedRowOrColumnMajor',
              # ( 'out', 'POINTER(RowOrColumnMajor)', 'retVal' )),
],
"TextChildPattern"          : [
    (PROPERTY, 'TextContainer',
              ( 'out', 'POINTER(POINTER(IUIAutomationElement))', 'container' )),
    (PROPERTY, 'TextRange',
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRange))', 'range' )),
],
"TextEditPattern"           : None,
"TextPattern"               : [
    (METHOD, 'RangeFromPoint',
              ( 'in', 'tagPOINT', 'pt' ),
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRange))', 'range' )),
    (METHOD, 'RangeFromChild',
              ( 'in', 'POINTER(IUIAutomationElement)', 'child' ),
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRange))', 'range' )),
    (METHOD, 'GetSelection',
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRangeArray))', 'ranges' )),
    (METHOD, 'GetVisibleRanges',
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRangeArray))', 'ranges' )),
    (PROPERTY, 'DocumentRange',
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRange))', 'range' )),
    (PROPERTY, 'SupportedTextSelection',
              ( 'out', 'POINTER(SupportedTextSelection)', 'SupportedTextSelection' )),
],
"TextPattern2"              : [
    (METHOD, 'RangeFromAnnotation',
              ( 'in', 'POINTER(IUIAutomationElement)', 'annotation' ),
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRange))', 'range' )),
    (METHOD, 'GetCaretRange',
              ( 'out', 'POINTER(c_int)', 'isActive' ),
              ( 'out', 'POINTER(POINTER(IUIAutomationTextRange))', 'range' )),
],
"TogglePattern"             : [
    (METHOD, 'Toggle'),
    (PROPERTY, 'CurrentToggleState',
              ( 'out', 'POINTER(ToggleState)', 'retVal' )),
    # (PROPERTY, 'CachedToggleState',
              # ( 'out', 'POINTER(ToggleState)', 'retVal' )),
],
"TransformPattern"          : [
    (METHOD, 'Move',
              ( 'in', 'c_double', 'x' ),
              ( 'in', 'c_double', 'y' )),
    (METHOD, 'Resize',
              ( 'in', 'c_double', 'width' ),
              ( 'in', 'c_double', 'height' )),
    (METHOD, 'Rotate',
              ( 'in', 'c_double', 'degrees' )),
    (PROPERTY, 'CurrentCanMove',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentCanResize',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentCanRotate',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedCanMove',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedCanResize',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedCanRotate',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
],
"TransformPattern2"         : [
    (METHOD, 'Zoom',
              ( 'in', 'c_double', 'Zoom' )),
    (METHOD, 'ZoomByUnit',
              ( 'in', 'ZoomUnit', 'ZoomUnit' )),
    (PROPERTY, 'CurrentCanZoom',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedCanZoom',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentZoomLevel',
              ( 'out', 'POINTER(c_double)', 'retVal' )),
    # (PROPERTY, 'CachedZoomLevel',
              # ( 'out', 'POINTER(c_double)', 'retVal' )),
    (PROPERTY, 'CurrentZoomMinimum',
              ( 'out', 'POINTER(c_double)', 'retVal' )),
    # (PROPERTY, 'CachedZoomMinimum',
              # ( 'out', 'POINTER(c_double)', 'retVal' )),
    (PROPERTY, 'CurrentZoomMaximum',
              ( 'out', 'POINTER(c_double)', 'retVal' )),
    # (PROPERTY, 'CachedZoomMaximum',
              # ( 'out', 'POINTER(c_double)', 'retVal' )),
],
"ValuePattern"              : [
    (METHOD, 'SetValue',
              ( 'in', 'POINTER(BSTR)', 'val' )),
    (PROPERTY, 'CurrentValue',
              ( 'out', 'POINTER(BSTR)', 'retVal' )),
    (PROPERTY, 'CurrentIsReadOnly',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
],
"VirtualizedItemPattern"    : [
    (METHOD, 'Realize'),
],
"WindowPattern"             : [
    (METHOD, 'Close'),
    (METHOD, 'WaitForInputIdle',
              ( 'in', 'c_int', 'milliseconds' ),
              ( 'out', 'POINTER(c_int)', 'success' )),
    (METHOD, 'SetWindowVisualState',
              ( 'in', 'WindowVisualState', 'state' )),
    (PROPERTY, 'CurrentCanMaximize',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentCanMinimize',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentIsModal',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentIsTopmost',
              ( 'out', 'POINTER(c_int)', 'retVal' )),
    (PROPERTY, 'CurrentWindowVisualState',
              ( 'out', 'POINTER(WindowVisualState)', 'retVal' )),
    (PROPERTY, 'CurrentWindowInteractionState',
              ( 'out', 'POINTER(WindowInteractionState)', 'retVal' )),
    # (PROPERTY, 'CachedCanMaximize',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedCanMinimize',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedIsModal',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedIsTopmost',
              # ( 'out', 'POINTER(c_int)', 'retVal' )),
    # (PROPERTY, 'CachedWindowVisualState',
              # ( 'out', 'POINTER(WindowVisualState)', 'retVal' )),
    # (PROPERTY, 'CachedWindowInteractionState',
              # ( 'out', 'POINTER(WindowInteractionState)', 'retVal' )),
],
}
