#ifndef _KEXTFIND_TABLES_H_
#define _KEXTFIND_TABLES_H_
#include <CoreFoundation/CoreFoundation.h>
#include <getopt.h>
#include "QEQuery.h"
#include "kext_tools_util.h"
struct querySetup {
CFStringRef longName;
CFStringRef shortName;
QEQueryParseCallback parseCallback;
QEQueryEvaluationCallback evalCallback;
};
#define kOptNameHelp "help"
#define kOptNameCaseInsensitive "case-insensitive"
#define kOptNameNulTerminate "nul"
#define kOptNameSearchItem "search-item"
#define kOptNameSubstring "substring"
#define kOptNameDefaultArch "set-arch"
#ifdef EXTRA_INFO
#define kOptNameExtraInfo "extra-info"
#endif
#define kOptNameRelativePaths "relative-paths"
#define kOptNameNoPaths "no-paths"
#define kOptNameMeek "meek"
#define kOptNamePicky "picky"
#define kOPT_CHARS "0ef:his"
enum {
kOptSystemExtensions = 'e',
kOptCaseInsensitive = 'i',
kOptNulTerminate = '0',
kOptSearchItem = 'f',
kOptSubstring = 's',
};
enum {
kLongOptQueryPredicate = -2,
#ifdef EXTRA_INFO
kLongOptExtraInfo = -3,
#endif
kLongOptRelativePaths = -4,
kLongOptNoPaths = -5,
kLongOptMeek = -6,
kLongOptPicky = -7,
kLongOptReport = -8,
kLongOptDefaultArch = -9,
};
extern struct option opt_info[];
extern int longopt;
extern struct querySetup queryCallbackList[];
extern struct querySetup reportCallbackList[];
#define QUERY_PREDICATES \
{ &kPredNameProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePropertyExists[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameMatchProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameMatchPropertyExists[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameLoaded[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameValid[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameAuthentic[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameDependenciesMet[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameLoadable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameWarnings[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameIsLibrary[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kQEQueryTokenAnd[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kQEQueryTokenOr[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kQEQueryTokenNot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameVersion[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameCompatibleWithVersion[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameIntegrity[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameHasPlugins[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameIsPlugin[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameHasDebugProperties[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameArch[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameArchExact[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameExecutable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameNoExecutable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameDefinesSymbol[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameReferencesSymbol[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameInvalid[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameInauthentic[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameDependenciesMissing[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameNonloadable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameBundleID[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameBundleName[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameRoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameConsole[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameLocalRoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameNetworkRoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNameSafeBoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharPropertyExists[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharMatchProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharMatchPropertyExists[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharValid[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharAuthentic[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharDependenciesMet[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharLoadable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharWarnings[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kQEQueryTokenAnd[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kQEQueryTokenOr[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kQEQueryTokenNot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharVersion[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharArchExact[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharExecutable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharNoExecutable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharDefinesSymbol[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharReferencesSymbol[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharInvalid[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharInauthentic[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharDependenciesMissing[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharNonloadable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharBundleID[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredCharRoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharConsole[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharLocalRoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharNetworkRoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharSafeBoot[1], no_argument, &longopt, kLongOptQueryPredicate }, \
#define QUERY_COMMANDS \
{ &kPredNameEcho[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrint[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintDiagnostics[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintMatchProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintArches[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintDependencies[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintDependents[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintIntegrity[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintPlugins[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintInfoDictionary[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredNamePrintExecutable[1], no_argument, &longopt, kLongOptQueryPredicate }, \
\
{ &kPredNameExec[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharPrintDiagnostics[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharPrintProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharPrintMatchProperty[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharPrintArches[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharPrintInfoDictionary[1], no_argument, &longopt, kLongOptQueryPredicate }, \
{ &kPredCharPrintExecutable[1], no_argument, &longopt, kLongOptQueryPredicate },
#endif