From eb59fe88595685f56db50540ec5626c7c24c454a Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Mon, 22 Oct 2012 10:18:57 +0200 Subject: initial commit --- libmsi/query.h | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 libmsi/query.h (limited to 'libmsi/query.h') diff --git a/libmsi/query.h b/libmsi/query.h new file mode 100644 index 0000000..ca34b4c --- /dev/null +++ b/libmsi/query.h @@ -0,0 +1,141 @@ +/* + * Implementation of the Microsoft Installer (msi.dll) + * + * Copyright 2002 Mike McCormack for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_MSI_QUERY_H +#define __WINE_MSI_QUERY_H + +#include + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "objidl.h" +#include "msi.h" +#include "msiquery.h" +#include "msipriv.h" +#include "wine/list.h" + + +#define OP_EQ 1 +#define OP_AND 2 +#define OP_OR 3 +#define OP_GT 4 +#define OP_LT 5 +#define OP_LE 6 +#define OP_GE 7 +#define OP_NE 8 +#define OP_ISNULL 9 +#define OP_NOTNULL 10 + +#define EXPR_COMPLEX 1 +#define EXPR_COLUMN 2 +#define EXPR_COL_NUMBER 3 +#define EXPR_IVAL 4 +#define EXPR_SVAL 5 +#define EXPR_UVAL 6 +#define EXPR_STRCMP 7 +#define EXPR_WILDCARD 9 +#define EXPR_COL_NUMBER_STRING 10 +#define EXPR_COL_NUMBER32 11 +#define EXPR_UNARY 12 + +struct sql_str { + LPCWSTR data; + INT len; +}; + +struct complex_expr +{ + UINT op; + struct expr *left; + struct expr *right; +}; + +struct tagJOINTABLE; +union ext_column +{ + struct + { + LPCWSTR column; + LPCWSTR table; + } unparsed; + struct + { + UINT column; + struct tagJOINTABLE *table; + } parsed; +}; + +struct expr +{ + int type; + union + { + struct complex_expr expr; + INT ival; + UINT uval; + LPCWSTR sval; + union ext_column column; + } u; +}; + +UINT MSI_ParseSQL( MSIDATABASE *db, LPCWSTR command, MSIVIEW **phview, + struct list *mem ) DECLSPEC_HIDDEN; + +UINT TABLE_CreateView( MSIDATABASE *db, LPCWSTR name, MSIVIEW **view ) DECLSPEC_HIDDEN; + +UINT SELECT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table, + const column_info *columns ) DECLSPEC_HIDDEN; + +UINT DISTINCT_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table ) DECLSPEC_HIDDEN; + +UINT ORDER_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table, + column_info *columns ) DECLSPEC_HIDDEN; + +UINT WHERE_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR tables, + struct expr *cond ) DECLSPEC_HIDDEN; + +UINT CREATE_CreateView( MSIDATABASE *db, MSIVIEW **view, LPCWSTR table, + column_info *col_info, BOOL hold ) DECLSPEC_HIDDEN; + +UINT INSERT_CreateView( MSIDATABASE *db, MSIVIEW **view, LPCWSTR table, + column_info *columns, column_info *values, BOOL temp ) DECLSPEC_HIDDEN; + +UINT UPDATE_CreateView( MSIDATABASE *db, MSIVIEW **view, LPWSTR table, + column_info *list, struct expr *expr ) DECLSPEC_HIDDEN; + +UINT DELETE_CreateView( MSIDATABASE *db, MSIVIEW **view, MSIVIEW *table ) DECLSPEC_HIDDEN; + +UINT ALTER_CreateView( MSIDATABASE *db, MSIVIEW **view, LPCWSTR name, column_info *colinfo, int hold ) DECLSPEC_HIDDEN; + +UINT STREAMS_CreateView( MSIDATABASE *db, MSIVIEW **view ) DECLSPEC_HIDDEN; + +UINT STORAGES_CreateView( MSIDATABASE *db, MSIVIEW **view ) DECLSPEC_HIDDEN; + +UINT DROP_CreateView( MSIDATABASE *db, MSIVIEW **view, LPCWSTR name ) DECLSPEC_HIDDEN; + +int sqliteGetToken(const WCHAR *z, int *tokenType, int *skip) DECLSPEC_HIDDEN; + +MSIRECORD *msi_query_merge_record( UINT fields, const column_info *vl, MSIRECORD *rec ) DECLSPEC_HIDDEN; + +UINT msi_create_table( MSIDATABASE *db, LPCWSTR name, column_info *col_info, + MSICONDITION persistent ) DECLSPEC_HIDDEN; + +#endif /* __WINE_MSI_QUERY_H */ -- cgit