Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: installer/src/installer-lib/database.h

Issue 29329159: Issue #1185 - Fix formatting in installer-lib and its tests (Closed)
Patch Set: Created Oct. 15, 2015, 7:03 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « installer/src/installer-lib/custom-i18n.h ('k') | installer/src/installer-lib/database.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /** 1 /**
2 * \file database.h MSI database 2 * \file database.h MSI database
3 */ 3 */
4 4
5 #ifndef DATABASE_H 5 #ifndef DATABASE_H
6 #define DATABASE_H 6 #define DATABASE_H
7 7
8 #include <string> 8 #include <string>
9 #include <memory> 9 #include <memory>
10 10
11 #include <Windows.h> 11 #include <Windows.h>
12 #include <Msi.h> 12 #include <Msi.h>
13 #include <MsiQuery.h> 13 #include <MsiQuery.h>
14 14
15 #include "installer-lib.h" 15 #include "installer-lib.h"
16 #include "handle.h" 16 #include "handle.h"
17 #include "session.h" 17 #include "session.h"
18 18
19 // Forward declarations 19 // Forward declarations
20 class View ; 20 class View;
21 21
22 //------------------------------------------------------- 22 //-------------------------------------------------------
23 // Database 23 // Database
24 //------------------------------------------------------- 24 //-------------------------------------------------------
25 /** 25 /**
26 * A Windows Installer database as contained in an MSI file. 26 * A Windows Installer database as contained in an MSI file.
27 * 27 *
28 * The API for MSI databases is shared between installation and non-installation contexts. 28 * The API for MSI databases is shared between installation and non-installation contexts.
29 * Roughly speaking, outside an installation the database supports both read and write, 29 * Roughly speaking, outside an installation the database supports both read and write,
30 * but inside an installation the database is read-only. 30 * but inside an installation the database is read-only.
31 * The life cycle functions are not shared, in addition. 31 * The life cycle functions are not shared, in addition.
32 * Outside of these restrictions, however, the API is mostly common. 32 * Outside of these restrictions, however, the API is mostly common.
33 * This class is the base class for the common API. 33 * This class is the base class for the common API.
34 * Subclasses provide public constructors and provide access to API calls not in common. 34 * Subclasses provide public constructors and provide access to API calls not in common.
35 */ 35 */
36 class Database 36 class Database
37 { 37 {
38 protected: 38 protected:
39 typedef Handle< MSIHANDLE, DisallowNull, GenericMsiDestruction > HandleType ; 39 typedef Handle<MSIHANDLE, DisallowNull, GenericMsiDestruction> HandleType;
40 40
41 /** 41 /**
42 * Protected constructor. 42 * Protected constructor.
43 * 43 *
44 * An MSI database handle is an overloaded type, used both for installation dat abases and one opened outside an installation. 44 * An MSI database handle is an overloaded type, used both for installation dat abases and one opened outside an installation.
45 * These database handles, while both databases, have different capabilities an d are thus defined in subclasses. 45 * These database handles, while both databases, have different capabilities an d are thus defined in subclasses.
46 * Each subclass has the responsibility for obtaining a database handle appropr iate to its circumstance. 46 * Each subclass has the responsibility for obtaining a database handle appropr iate to its circumstance.
47 * 47 *
48 * \sa MSDN "Obtaining a Database Handle" 48 * \sa MSDN "Obtaining a Database Handle"
49 * http://msdn.microsoft.com/en-us/library/windows/desktop/aa370541(v=vs.85) .aspx 49 * http://msdn.microsoft.com/en-us/library/windows/desktop/aa370541(v=vs.85) .aspx
50 */ 50 */
51 Database( MSIHANDLE handle ) 51 Database(MSIHANDLE handle)
52 : handle( handle ) 52 : handle(handle)
53 {} 53 {}
54 54
55 /** 55 /**
56 */ 56 */
57 HandleType handle ; 57 HandleType handle;
58 58
59 private: 59 private:
60 /** 60 /**
61 * Private copy constructor is declared but not defined. 61 * Private copy constructor is declared but not defined.
62 */ 62 */
63 Database( const Database & ) ; 63 Database(const Database&);
64 64
65 /** 65 /**
66 * Private assignment operator is declared but not defined. 66 * Private assignment operator is declared but not defined.
67 */ 67 */
68 Database & operator=( const Database & ) ; 68 Database& operator=(const Database&);
69 69
70 /** 70 /**
71 * Open a new view for this database. 71 * Open a new view for this database.
72 * 72 *
73 * \param query 73 * \param query
74 * An SQL query using the restricted MSI syntax 74 * An SQL query using the restricted MSI syntax
75 * 75 *
76 * \sa 76 * \sa
77 * - MSDN [MsiDatabaseOpenView function](http://msdn.microsoft.com/en-us/libr ary/aa370082%28v=vs.85%29.aspx) 77 * - MSDN [MsiDatabaseOpenView function](http://msdn.microsoft.com/en-us/libr ary/aa370082%28v=vs.85%29.aspx)
78 */ 78 */
79 MsiHandle OpenView( const wchar_t * query ) ; 79 MsiHandle OpenView(const wchar_t* query);
80 80
81 friend class View ; 81 friend class View;
82 } ; 82 };
83 83
84 /** 84 /**
85 * A Windows Installer database in an installation context. 85 * A Windows Installer database in an installation context.
86 */ 86 */
87 class InstallationDatabase : public Database 87 class InstallationDatabase : public Database
88 { 88 {
89 public: 89 public:
90 /** 90 /**
91 * The constructor of a database in an installation context has no arguments be cause the database is a part of that context. 91 * The constructor of a database in an installation context has no arguments be cause the database is a part of that context.
92 */ 92 */
93 InstallationDatabase( ImmediateSession & session ) ; 93 InstallationDatabase(ImmediateSession& session);
94 } ; 94 };
95 95
96 //------------------------------------------------------- 96 //-------------------------------------------------------
97 // 97 //
98 //------------------------------------------------------- 98 //-------------------------------------------------------
99 /** 99 /**
100 * A Windows Installer database outside of an installation context, opened as a f ile from the file system. 100 * A Windows Installer database outside of an installation context, opened as a f ile from the file system.
101 * 101 *
102 * This is a read-only version of a file-system database. 102 * This is a read-only version of a file-system database.
103 * Refactor the class to obtain other open-modes. 103 * Refactor the class to obtain other open-modes.
104 * 104 *
105 */ 105 */
106 class FileSystemDatabase : public Database 106 class FileSystemDatabase : public Database
107 { 107 {
108 /** 108 /**
109 * Open function is separate to enable initializing base class before construct or body. 109 * Open function is separate to enable initializing base class before construct or body.
110 * 110 *
111 * \sa 111 * \sa
112 * - MSDN [MsiOpenDatabase function](http://msdn.microsoft.com/en-us/library/ aa370338%28v=vs.85%29.aspx) 112 * - MSDN [MsiOpenDatabase function](http://msdn.microsoft.com/en-us/library/ aa370338%28v=vs.85%29.aspx)
113 */ 113 */
114 MsiHandle HandleFromPathname( const wchar_t * pathname ) 114 MsiHandle HandleFromPathname(const wchar_t* pathname)
115 { 115 {
116 MSIHANDLE handle ; 116 MSIHANDLE handle;
117 UINT x = MsiOpenDatabaseW( pathname, MSIDBOPEN_READONLY, & handle ) ; 117 UINT x = MsiOpenDatabaseW(pathname, MSIDBOPEN_READONLY, & handle);
118 if ( x != ERROR_SUCCESS ) 118 if (x != ERROR_SUCCESS)
119 { 119 {
120 throw WindowsApiError( "MsiOpenDatabaseW", x, "MSI database on file system " ) ; 120 throw WindowsApiError("MsiOpenDatabaseW", x, "MSI database on file system" );
121 } 121 }
122 return MsiHandle( handle ) ; 122 return MsiHandle(handle);
123 } 123 }
124 124
125 public: 125 public:
126 FileSystemDatabase( const wchar_t * pathname ) 126 FileSystemDatabase(const wchar_t* pathname)
127 : Database( HandleFromPathname( pathname ) ) 127 : Database(HandleFromPathname(pathname))
128 {} 128 {}
129 } ; 129 };
130 130
131 //------------------------------------------------------- 131 //-------------------------------------------------------
132 // View 132 // View
133 //------------------------------------------------------- 133 //-------------------------------------------------------
134 /* 134 /*
135 * The MSI database is accessible through a cut-down version of SQL. 135 * The MSI database is accessible through a cut-down version of SQL.
136 * There's no distinction between view and query in this dialect. 136 * There's no distinction between view and query in this dialect.
137 * 137 *
138 * \sa 138 * \sa
139 * - MSDN [Working with Queries](http://msdn.microsoft.com/en-us/library/aa3728 79%28v=vs.85%29.aspx) 139 * - MSDN [Working with Queries](http://msdn.microsoft.com/en-us/library/aa3728 79%28v=vs.85%29.aspx)
140 */ 140 */
141 class View 141 class View
142 { 142 {
143 typedef Handle< MSIHANDLE, DisallowNull, GenericMsiDestruction > HandleType ; 143 typedef Handle<MSIHANDLE, DisallowNull, GenericMsiDestruction> HandleType;
144 144
145 /** 145 /**
146 * Handle for the MSI view object 146 * Handle for the MSI view object
147 */ 147 */
148 HandleType handle; 148 HandleType handle;
149 149
150 public: 150 public:
151 /** 151 /**
152 * Ordinary constructor 152 * Ordinary constructor
153 */ 153 */
154 View( Database & db, wchar_t * query ) 154 View(Database& db, wchar_t* query)
155 : handle( db.OpenView( query ) ) 155 : handle(db.OpenView(query))
156 {} 156 {}
157 157
158 /** 158 /**
159 * Execute the query and return the first record in its results. 159 * Execute the query and return the first record in its results.
160 * 160 *
161 * \param arguments 161 * \param arguments
162 * List of parameters to supply as the query arguments (question marks). 162 * List of parameters to supply as the query arguments (question marks).
163 */ 163 */
164 Record First( Record & arguments ) ; 164 Record First(Record& arguments);
165 165
166 /** 166 /**
167 * Execute the query and return the first record in its results. 167 * Execute the query and return the first record in its results.
168 * 168 *
169 * With no arguments, this version of the function may only be used with a quer y that takes no arguments. 169 * With no arguments, this version of the function may only be used with a quer y that takes no arguments.
170 */ 170 */
171 Record First() ; 171 Record First();
172 172
173 /** 173 /**
174 * Retrieve the next record. 174 * Retrieve the next record.
175 */ 175 */
176 Record Next() ; 176 Record Next();
177 177
178 /** 178 /**
179 * End marker 179 * End marker
180 */ 180 */
181 inline Record End() 181 inline Record End()
182 { 182 {
183 return Record( Record::NullType() ) ; 183 return Record(Record::NullType());
184 } 184 }
185 } ; 185 };
186 186
187 187
188 #endif 188 #endif
OLDNEW
« no previous file with comments | « installer/src/installer-lib/custom-i18n.h ('k') | installer/src/installer-lib/database.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld