1/*
2 * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23#ifndef _KEXTFIND_REPORT_H_
24#define _KEXTFIND_REPORT_H_
25
26#include "QEQuery.h"
27#include "kextfind_tables.h"
28#include "kextfind_query.h"
29
30/* These arenn't processed by getopt or QEQuery, we just look for them.
31 */
32#define kKeywordReport   "-report"
33#define kNoReportHeader  "-no-header"
34
35#define kPredNameSymbol  "-symbol"
36#define kPredCharSymbol  "-sym"
37
38/*******************************************************************************
39* Query Engine Callbacks
40*
41* The Query Engine invokes these as it finds keywords from the above list
42* in the command line or the query being reportEvaluated.
43*******************************************************************************/
44Boolean reportParseProperty(
45    CFMutableDictionaryRef element,
46    int argc,
47    char * const argv[],
48    uint32_t * num_used,
49    void * user_data,
50    QEQueryError * error);
51
52Boolean reportParseShorthand(
53    CFMutableDictionaryRef element,
54    int argc,
55    char * const argv[],
56    uint32_t * num_used,
57    void * user_data,
58    QEQueryError * error);
59
60Boolean reportEvalProperty(
61    CFDictionaryRef element,
62    void * object,
63    void * user_data,
64    QEQueryError * error);
65
66Boolean reportEvalMatchProperty(
67    CFDictionaryRef element,
68    void * object,
69    void * user_data,
70    QEQueryError * error);
71
72Boolean reportParseFlag(
73    CFMutableDictionaryRef element,
74    int argc,
75    char * const argv[],
76    uint32_t * num_used,
77    void * user_data,
78    QEQueryError * error);
79
80Boolean reportEvalFlag(
81    CFDictionaryRef element,
82    void * object,
83    void * user_data,
84    QEQueryError * error);
85
86Boolean reportParseArch(
87    CFMutableDictionaryRef element,
88    int argc,
89    char * const argv[],
90    uint32_t * num_used,
91    void * user_data,
92    QEQueryError * error);
93
94Boolean reportEvalArch(
95    CFDictionaryRef element,
96    void * object,
97    void * user_data,
98    QEQueryError * error);
99
100Boolean reportEvalArchExact(
101    CFDictionaryRef element,
102    void * object,
103    void * user_data,
104    QEQueryError * error);
105
106Boolean reportParseCommand(
107    CFMutableDictionaryRef element,
108    int argc,
109    char * const argv[],
110    uint32_t * num_used,
111    void * user_data,
112    QEQueryError * error);
113
114Boolean reportParseDefinesOrReferencesSymbol(
115    CFMutableDictionaryRef element,
116    int argc,
117    char * const argv[],
118    uint32_t * num_used,
119    void * user_data,
120    QEQueryError * error);
121
122Boolean reportEvalDefinesOrReferencesSymbol(
123    CFDictionaryRef element,
124    void * object,
125    void * user_data,
126    QEQueryError * error);
127
128Boolean reportEvalCommand(
129    CFDictionaryRef element,
130    void * object,
131    void * user_data,
132    QEQueryError * error);
133
134#endif /* _KEXTFIND_REPORT_H_ */
135