1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef __INC_LOCATIONAPI__
7#define __INC_LOCATIONAPI__
8
9#include <objbase.h>
10#include <propkeydef.h>
11
12#if (_WIN32_WINNT >= 0x0601)
13
14typedef GUID SENSOR_ID;
15DEFINE_GUID(IID_ILocationReport,0xC8B7F7EE,0x75D0,0x4DB9,0xB6,0x2D,0x7A,0x0F,0x36,0x9C,0xA4,0x56);
16DEFINE_GUID(IID_ICivicAddressReport,0xC0B19F70,0x4ADF,0x445D,0x87,0xF2,0xCA,0xD8,0xFD,0x71,0x17,0x92);
17DEFINE_GUID(IID_IDefaultLocation,0xA65AF77E,0x969A,0x4A2E,0x8A,0xCA,0x33,0xBB,0x7C,0xBB,0x12,0x35);
18
19typedef enum _LOCATION_DESIRED_ACCURACY {
20  LOCATION_DESIRED_ACCURACY_DEFAULT   = 0,
21  LOCATION_DESIRED_ACCURACY_HIGH      = 1
22} LOCATION_DESIRED_ACCURACY;
23
24#ifndef __ILocationReport_FWD_DEFINED__
25#define __ILocationReport_FWD_DEFINED__
26typedef struct ILocationReport ILocationReport;
27#endif
28
29#ifndef __ICivicAddressReport_FWD_DEFINED__
30#define __ICivicAddressReport_FWD_DEFINED__
31typedef struct ICivicAddressReport ICivicAddressReport;
32#endif
33
34#ifndef __IDefaultLocation_FWD_DEFINED__
35#define __IDefaultLocation_FWD_DEFINED__
36typedef struct IDefaultLocation IDefaultLocation;
37#endif
38
39#undef  INTERFACE
40#define INTERFACE ILocationReport
41DECLARE_INTERFACE_(ILocationReport,IUnknown)
42{
43    BEGIN_INTERFACE
44
45    /* IUnknown methods */
46    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
47    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
48    STDMETHOD_(ULONG, Release)(THIS) PURE;
49
50    /* ILocationReport methods */
51    STDMETHOD_(HRESULT,GetSensorID)(THIS_ SENSOR_ID *pSensorID) PURE;
52    STDMETHOD_(HRESULT,GetTimestamp)(THIS_ SYSTEMTIME *pCreationTime) PURE;
53    STDMETHOD_(HRESULT,GetValue)(THIS_ REFPROPERTYKEY pKey,PROPVARIANT *pValue) PURE;
54
55    END_INTERFACE
56};
57#ifdef COBJMACROS
58#define ILocationReport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
59#define ILocationReport_AddRef(This) (This)->lpVtbl->AddRef(This)
60#define ILocationReport_Release(This) (This)->lpVtbl->Release(This)
61#define ILocationReport_GetSensorID(This,pSensorID) (This)->lpVtbl->GetSensorID(This,pSensorID)
62#define ILocationReport_GetTimestamp(This,pCreationTime) (This)->lpVtbl->GetTimestamp(This,pCreationTime)
63#define ILocationReport_GetValue(This,pKey,pValue) (This)->lpVtbl->GetValue(This,pKey,pValue)
64#endif /*COBJMACROS*/
65
66#undef  INTERFACE
67#define INTERFACE ICivicAddressReport
68DECLARE_INTERFACE_(ICivicAddressReport,ILocationReport)
69{
70    BEGIN_INTERFACE
71
72    /* IUnknown methods */
73    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
74    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
75    STDMETHOD_(ULONG, Release)(THIS) PURE;
76
77    /* ILocationReport methods */
78    STDMETHOD_(HRESULT,GetSensorID)(THIS_ SENSOR_ID *pSensorID) PURE;
79    STDMETHOD_(HRESULT,GetTimestamp)(THIS_ SYSTEMTIME *pCreationTime) PURE;
80    STDMETHOD_(HRESULT,GetValue)(THIS_ REFPROPERTYKEY pKey,PROPVARIANT *pValue) PURE;
81
82    /* ICivicAddressReport methods */
83    STDMETHOD_(HRESULT,GetAddressLine1)(THIS_ BSTR *pbstrAddress1) PURE;
84    STDMETHOD_(HRESULT,GetAddressLine2)(THIS_ BSTR *pbstrAddress2) PURE;
85    STDMETHOD_(HRESULT,GetCity)(THIS_ BSTR *pbstrCity) PURE;
86    STDMETHOD_(HRESULT,GetStateProvince)(THIS_ BSTR *pbstrStateProvince) PURE;
87    STDMETHOD_(HRESULT,GetPostalCode)(THIS_ BSTR *pbstrPostalCode) PURE;
88    STDMETHOD_(HRESULT,GetCountryRegion)(THIS_ BSTR *pbstrCountryRegion) PURE;
89    STDMETHOD_(HRESULT,GetDetailLevel)(THIS_ DWORD *pDetailLevel) PURE;
90
91    END_INTERFACE
92};
93#ifdef COBJMACROS
94#define ICivicAddressReport_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
95#define ICivicAddressReport_AddRef(This) (This)->lpVtbl->AddRef(This)
96#define ICivicAddressReport_Release(This) (This)->lpVtbl->Release(This)
97#define ICivicAddressReport_GetSensorID(This,pSensorID) (This)->lpVtbl->GetSensorID(This,pSensorID)
98#define ICivicAddressReport_GetTimestamp(This,pCreationTime) (This)->lpVtbl->GetTimestamp(This,pCreationTime)
99#define ICivicAddressReport_GetValue(This,pKey,pValue) (This)->lpVtbl->GetValue(This,pKey,pValue)
100#define ICivicAddressReport_GetAddressLine1(This,pbstrAddress1) (This)->lpVtbl->GetAddressLine1(This,pbstrAddress1)
101#define ICivicAddressReport_GetAddressLine2(This,pbstrAddress2) (This)->lpVtbl->GetAddressLine2(This,pbstrAddress2)
102#define ICivicAddressReport_GetCity(This,pbstrCity) (This)->lpVtbl->GetCity(This,pbstrCity)
103#define ICivicAddressReport_GetCountryRegion(This,pbstrCountryRegion) (This)->lpVtbl->GetCountryRegion(This,pbstrCountryRegion)
104#define ICivicAddressReport_GetDetailLevel(This,pDetailLevel) (This)->lpVtbl->GetDetailLevel(This,pDetailLevel)
105#define ICivicAddressReport_GetPostalCode(This,pbstrPostalCode) (This)->lpVtbl->GetPostalCode(This,pbstrPostalCode)
106#define ICivicAddressReport_GetStateProvince(This,pbstrStateProvince) (This)->lpVtbl->GetStateProvince(This,pbstrStateProvince)
107#endif /*COBJMACROS*/
108
109#undef  INTERFACE
110#define INTERFACE IDefaultLocation
111DECLARE_INTERFACE_(IDefaultLocation,IUnknown)
112{
113    BEGIN_INTERFACE
114
115    /* IUnknown methods */
116    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
117    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
118    STDMETHOD_(ULONG, Release)(THIS) PURE;
119
120    /* IDefaultLocation methods */
121    STDMETHOD_(HRESULT,SetReport)(THIS_ REFIID reportType,ILocationReport *pLocationReport) PURE;
122    STDMETHOD_(HRESULT,GetReport)(THIS_ REFIID reportType,ILocationReport **ppLocationReport) PURE;
123
124    END_INTERFACE
125};
126#ifdef COBJMACROS
127#define IDefaultLocation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
128#define IDefaultLocation_AddRef(This) (This)->lpVtbl->AddRef(This)
129#define IDefaultLocation_Release(This) (This)->lpVtbl->Release(This)
130#define IDefaultLocation_GetReport(This,reportType,ppLocationReport) (This)->lpVtbl->GetReport(This,reportType,ppLocationReport)
131#define IDefaultLocation_SetReport(This,reportType,pLocationReport) (This)->lpVtbl->SetReport(This,reportType,pLocationReport)
132#endif /*COBJMACROS*/
133
134#endif /*(_WIN32_WINNT >= 0x0601)*/
135#endif /*__INC_LOCATIONAPI__*/
136