#ifndef _KEXTFIND_QUERY_H_
#define _KEXTFIND_QUERY_H_
#include "QEQuery.h"
#include "kextfind_tables.h"
#define kPredNameProperty "-property"
#define kPredNamePropertyExists "-property-exists"
#define kPredNameMatchProperty "-match-property"
#define kPredNameMatchPropertyExists "-match-property-exists"
#define kPredNameFlag "__flag__"
#define kPredNameLoaded "-loaded"
#define kPredNameValid "-valid"
#define kPredNameAuthentic "-authentic"
#define kPredNameDependenciesMet "-dependencies-met"
#define kPredNameLoadable "-loadable"
#define kPredNameWarnings "-warnings"
#define kPredNameIsLibrary "-library"
#define kPredNameHasPlugins "-has-plugins"
#define kPredNameIsPlugin "-plugin"
#define kPredNameHasDebugProperties "-debug"
#define kPredNameIsKernelResource "-kernel-resource"
#define kPredNameDuplicate "-duplicate-id"
#define kPredNameInvalid "-invalid"
#define kPredNameInauthentic "-inauthentic"
#define kPredNameDependenciesMissing "-dependencies-missing"
#define kPredNameNonloadable "-nonloadable"
#define kPredNameVersion "-version"
#define kPredNameCompatibleWithVersion "-compatible-with-version"
#define kPredNameIntegrity "-integrity"
#define kPredNameArch "-arch"
#define kPredNameArchExact "-arch-exact"
#define kPredNameExecutable "-executable"
#define kPredNameNoExecutable "-no-executable"
#define kPredNameDefinesSymbol "-defines-symbol"
#define kPredNameReferencesSymbol "-references-symbol"
#define kPredNameBundleID "-bundle-id"
#define kPredNameBundleName "-bundle-name"
#define kPredNameRoot "-root"
#define kPredNameConsole "-console"
#define kPredNameLocalRoot "-local-root"
#define kPredNameNetworkRoot "-network-root"
#define kPredNameSafeBoot "-safe-boot"
#define kPredNameCommand "__command__"
#define kPredPrefixPrint "-print"
#define kPredNameEcho "-echo"
#define kPredNameExec "-exec"
#define kPredNamePrint "-print"
#define kPredNamePrint0 "-print0"
#define kPredNamePrintDiagnostics "-print-diagnostics"
#define kPredNamePrintProperty "-print-property"
#define kPredNamePrintMatchProperty "-print-match-property"
#define kPredNamePrintArches "-print-arches"
#define kPredNamePrintDependencies "-print-dependencies"
#define kPredNamePrintDependents "-print-dependents"
#define kPredNamePrintIntegrity "-print-integrity"
#define kPredNamePrintPlugins "-print-plugins"
#define kPredNamePrintInfoDictionary "-print-info-dictionary"
#define kPredNamePrintExecutable "-print-executable"
#define kExecInfoDictionaryReplace "{info-dictionary}"
#define kExecExecutableReplace "{executable}"
#define kExecBundlePathReplace "{}"
#define kExecTerminator ";"
#define kPredCharProperty "-p"
#define kPredCharPropertyExists "-pe"
#define kPredCharMatchProperty "-m"
#define kPredCharMatchPropertyExists "-me"
#define kPredCharValid "-v"
#define kPredCharAuthentic "-a"
#define kPredCharDependenciesMet "-d"
#define kPredCharLoadable "-l"
#define kPredCharDuplicate "-dup"
#define kPredCharInvalid "-nv"
#define kPredCharInauthentic "-na"
#define kPredCharDependenciesMissing "-nd"
#define kPredCharNonloadable "-nl"
#define kPredCharWarnings "-w"
#define kPredCharVersion "-V"
#define kPredCharIsLibrary "-lib"
#define kPredCharArchExact "-ax"
#define kPredCharExecutable "-x"
#define kPredCharNoExecutable "-nx"
#define kPredCharDefinesSymbol "-dsym"
#define kPredCharReferencesSymbol "-rsym"
#define kPredCharBundleID "-b"
#define kPredCharBundleName "-B"
#define kPredCharRoot "-R"
#define kPredCharConsole "-C"
#define kPredCharLocalRoot "-L"
#define kPredCharNetworkRoot "-N"
#define kPredCharSafeBoot "-S"
#define kPredCharPrintDiagnostics "-pdiag"
#define kPredCharPrintProperty "-pp"
#define kPredCharPrintMatchProperty "-pm"
#define kPredCharPrintArches "-pa"
#define kPredCharPrintInfoDictionary "-pid"
#define kPredCharPrintExecutable "-px"
#define kPredOptNameNoNewline "no-newline"
#define kPredOptNoNewline 'n'
#define kPredOptNameCaseInsensitive kOptNameCaseInsensitive
#define kPredOptCaseInsensitive kOptCaseInsensitive
#define kPredOptNameSubstring "substring"
#define kPredOptSubstring 's'
#define kSearchStyleExact "exact"
#define kSearchStyleCaseInsensitive "case-insensitive"
#define kSearchStyleSubstring "substring"
#define kSearchStyleKeyExists "exists"
#define kOSBundleRequired "OSBundleRequired"
#define kOSBundleRequiredRoot "Root"
#define kOSBundleRequiredConsole "Console"
#define kOSBundleRequiredLocalRoot "Local-Root"
#define kOSBundleRequiredNetworkRoot "Network-Root"
#define kOSBundleRequiredSafeBoot "Safe Boot"
#define kIntegrityCorrect "correct"
#define kIntegrityUnknown "unknown"
#define kIntegrityNotApple "not-apple"
#define kIntegrityNoReceipt "no-receipt"
#define kIntegrityModified "modified"
#define kIntegrityNotApplicable "n/a"
#define kKeywordFlag "flag"
#define kKeywordCommand "command"
#define kWordTrue "true"
#define kWordYes "yes"
#define kWord1 "1"
#define kWordFalse "false"
#define kWordNo "no"
#define kWord0 "0"
Boolean parseArgument(
CFMutableDictionaryRef element,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean parseBundleName(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalBundleName(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseProperty(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean parseShorthand(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalProperty(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseMatchProperty(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalMatchProperty(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseIntegrity(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalIntegrity(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseFlag(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalFlag(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseVersion(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalVersion(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseCompatibleWithVersion(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalCompatibleWithVersion(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseArch(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalArch(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean evalArchExact(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseCommand(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean parseDefinesOrReferencesSymbol(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalDefinesOrReferencesSymbol(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean evalCommand(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
Boolean parseExec(
CFMutableDictionaryRef element,
int argc,
char * const argv[],
uint32_t * num_used,
void * user_data,
QEQueryError * error);
Boolean evalExec(
CFDictionaryRef queryElement,
void * object,
void * user_data,
QEQueryError * error);
#endif