diff options
Diffstat (limited to 'Src/nde/osx/nde_c.cpp')
-rw-r--r-- | Src/nde/osx/nde_c.cpp | 640 |
1 files changed, 640 insertions, 0 deletions
diff --git a/Src/nde/osx/nde_c.cpp b/Src/nde/osx/nde_c.cpp new file mode 100644 index 00000000..56791bd8 --- /dev/null +++ b/Src/nde/osx/nde_c.cpp @@ -0,0 +1,640 @@ +#include "nde_c.h" +#include "nde.h" +#ifdef _WIN32 +#include "../nu/AutoCharFn.h" +#include "../nu/AutoWide.h" +#endif + +/* Database */ +#ifdef _WIN32 +nde_database_t NDE_CreateDatabase(HINSTANCE hInstance) +{ + return (nde_database_t)new Database(hInstance); +} +#else +nde_database_t NDE_CreateDatabase() +{ + return (nde_database_t)new Database(); +} +#endif + +void NDE_DestroyDatabase(nde_database_t db) +{ + delete (Database *)db; +} + +#ifdef _WIN32 +nde_table_t NDE_Database_OpenTable(nde_database_t db, const wchar_t *filename, const wchar_t *indexname, int create, int cache) +{ + Database *database = (Database *)db; + if (database && filename) + return (nde_table_t)database->OpenTable(filename, indexname, (BOOL)create, (BOOL)cache); + else + return 0; +} +#else +nde_table_t NDE_Database_OpenTable(nde_database_t db, const char *filename, const char *indexname, int create, int cache) +{ + Database *database = (Database *)db; + if (database && filename) + return (nde_table_t)database->OpenTable(filename, indexname, (BOOL)create, (BOOL)cache); + else + return 0; +} +#endif + +void NDE_Database_CloseTable(nde_database_t db, nde_table_t t) +{ + Database *database = (Database *)db; + Table *table = (Table *)t; + if (database && table) + { + database->CloseTable(table); + } +} +/* Table */ + +#ifdef _WIN32 +nde_field_t NDE_Table_NewColumn(nde_table_t t, unsigned char id, const char *name, unsigned char type) +{ + Table *table = (Table *)t; + if (table) + return (nde_field_t)table->NewColumn(id, AutoWide(name), type, FALSE); + else + return 0; +} +#else +nde_field_t NDE_Table_NewColumn(nde_table_t t, unsigned char id, CFStringRef name, unsigned char type) +{ + Table *table = (Table *)t; + if (table) + return (nde_field_t)table->NewColumn(id, name, type, FALSE); + else + return 0; +} +#endif + +void NDE_Table_PostColumns(nde_table_t t) +{ + Table *table = (Table *)t; + if (table) + table->PostColumns(); +} + +#ifdef _WIN32 +void NDE_Table_AddIndexByID(nde_table_t t, unsigned char id, const char *name) +{ + Table *table = (Table *)t; + if (table) + table->AddIndexById(id, AutoWide(name)); +} +#else +void NDE_Table_AddIndexByID(nde_table_t t, unsigned char id, CFStringRef name) +{ + Table *table = (Table *)t; + if (table) + table->AddIndexById(id, name); +} +#endif + +nde_scanner_t NDE_Table_CreateScanner(nde_table_t t) +{ + Table *table = (Table *)t; + if (table) + return (nde_scanner_t)table->NewScanner(); + else + return 0; +} + +void NDE_Table_DestroyScanner(nde_table_t t, nde_scanner_t s) +{ + Table *table = (Table *)t; + Scanner *scanner = (Scanner *)s; + if (table && scanner) + table->DeleteScanner(scanner); +} + +void NDE_Table_Sync(nde_table_t t) +{ + Table *table = (Table *)t; + if (table) + table->Sync(); +} + +#ifdef _WIN32 +void NDE_Table_Compact(nde_table_t t, int *progress) +{ + Table *table = (Table *)t; + if (table) + table->Compact(progress); +} +#endif + +int NDE_Table_GetRecordsCount(nde_table_t t) +{ + Table *table = (Table *)t; + if (table) + return table->GetRecordsCount(); + else + return 0; +} + +nde_field_t NDE_Table_GetColumnByID(nde_table_t t, unsigned char id) +{ + Table *table = (Table *)t; + if (table) + return (nde_field_t)table->GetColumnById(id); + else + return 0; +} + +#ifdef _WIN32 +nde_field_t NDE_Table_GetColumnByName(nde_table_t t, const char *name) +{ + Table *table = (Table *)t; + if (table && name) + return (nde_field_t)table->GetColumnByName(AutoWide(name)); + else + return 0; +} +#else +nde_field_t NDE_Table_GetColumnByName(nde_table_t t, CFStringRef name) +{ + Table *table = (Table *)t; + if (table && name) + return (nde_field_t)table->GetColumnByName(name); + else + return 0; +} +#endif + +void NDE_Table_SetColumnSearchableByID(nde_table_t t, unsigned char id, int searchable) +{ + Table *table = (Table *)t; + if (table) + table->SetFieldSearchableById(id, !!searchable); +} +/* Scanner */ +#ifdef _WIN32 +int NDE_Scanner_Query(nde_scanner_t s, const wchar_t *query) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->Query(query); + else + return 0; +} + +void NDE_Scanner_Search(nde_scanner_t s, const wchar_t *search_term) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + scanner->Search(search_term); +} + +const wchar_t *NDE_Scanner_GetLastQuery(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->GetLastQuery(); + else + return 0; +} +#elif defined(__APPLE__) +int NDE_Scanner_Query(nde_scanner_t s, const char *query) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->Query(query); + else + return 0; +} + +CFStringRef NDE_Scanner_GetLastQuery(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->GetLastQuery(); + else + return 0; +} +#endif + +int NDE_Scanner_GetRecordsCount(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->GetRecordsCount(); + else + return 0; +} + +void NDE_Scanner_New(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + scanner->New(); +} + +void NDE_Scanner_Post(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + scanner->Post(); +} + +void NDE_Scanner_First(nde_scanner_t s, int *killswitch) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + scanner->First(killswitch); +} + +void NDE_Scanner_Delete(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + scanner->Delete(); +} + +void NDE_Scanner_Edit(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + scanner->Edit(); +} + +int NDE_Scanner_EOF(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->Eof(); + else + return 1; +} + +int NDE_Scanner_BOF(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->Bof(); + else + return 1; +} + +nde_field_t NDE_Scanner_NewFieldByID(nde_scanner_t s, unsigned char id) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return (nde_field_t)scanner->NewFieldById(id, PERM_READWRITE); + else + return 0; +} + +#ifdef _WIN32 +nde_field_t NDE_Scanner_NewFieldByName(nde_scanner_t s, const char *name) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return (nde_field_t)scanner->NewFieldByName(AutoWide(name), PERM_READWRITE); + else + return 0; +} +#else +nde_field_t NDE_Scanner_NewFieldByName(nde_scanner_t s, CFStringRef name) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return (nde_field_t)scanner->NewFieldByName(name, PERM_READWRITE); + else + return 0; +} +#endif + +nde_field_t NDE_Scanner_GetFieldByID(nde_scanner_t s, unsigned char id) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return (nde_field_t)scanner->GetFieldById(id); + else + return 0; +} + +#ifdef _WIN32 +nde_field_t NDE_Scanner_GetFieldByName(nde_scanner_t s, const char *name) +{ + Scanner *scanner = (Scanner *)s; + if (scanner && name) + return (nde_field_t)scanner->GetFieldByName(AutoWide(name)); + else + return 0; +} +#else +nde_field_t NDE_Scanner_GetFieldByName(nde_scanner_t s, CFStringRef name) +{ + Scanner *scanner = (Scanner *)s; + if (scanner && name) + return (nde_field_t)scanner->GetFieldByName(name); + else + return 0; +} +#endif + +void NDE_Scanner_AddFilterByID(nde_scanner_t s, unsigned char id, nde_field_t f, unsigned char filter_operation) +{ + Scanner *scanner = (Scanner *)s; + Field *field = (Field *)f; + if (scanner && field) + scanner->AddFilterById(id, field, filter_operation); +} + +int NDE_Scanner_LocateInteger(nde_scanner_t s, unsigned char id, int from, int value, int *nskip, int compare_mode) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + { + IntegerField field(value); + return scanner->LocateByIdEx(id, from, &field, nskip, compare_mode); + } + else + return 0; +} + +#ifdef _WIN32 +int NDE_Scanner_LocateString(nde_scanner_t s, unsigned char id, int from, const wchar_t *value, int *nskip, int compare_mode) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + { + StringField field(value); + return scanner->LocateByIdEx(id, from, &field, nskip, compare_mode); + } + else + return 0; +} + + +int NDE_Scanner_LocateNDEString(nde_scanner_t s, unsigned char id, int from, wchar_t *value, int *nskip, int compare_mode) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + { + StringField field(value, STRING_IS_NDESTRING); + return scanner->LocateByIdEx(id, from, &field, nskip, compare_mode); + } + else + return 0; +} +#endif + +#ifdef _WIN32 +int NDE_Scanner_LocateFilename(nde_scanner_t s, unsigned char id, int from, const wchar_t *value, int *nskip, int compare_mode) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + { + FilenameField field(value); + return scanner->LocateByIdEx(id, from, &field, nskip, compare_mode); + } + else + return 0; +} + +int NDE_Scanner_LocateNDEFilename(nde_scanner_t s, unsigned char id, int from, wchar_t *value, int *nskip, int compare_mode) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + { + FilenameField field(value, STRING_IS_NDESTRING); + return scanner->LocateByIdEx(id, from, &field, nskip, compare_mode); + } + else + return 0; +} +#endif + +int NDE_Scanner_LocateField(nde_scanner_t s, unsigned char id, int from, nde_field_t f, int *nskip, int compare_mode) +{ + Scanner *scanner = (Scanner *)s; + Field *field = (Field *)f; + if (scanner && field) + { + return scanner->LocateByIdEx(id, from, field, nskip, compare_mode); + } + else + return 0; +} + +void NDE_Scanner_DeleteField(nde_scanner_t s, nde_field_t f) +{ + Scanner *scanner = (Scanner *)s; + Field *field = (Field *)f; + if (scanner && field) + { + scanner->DeleteField(field); + } +} + +void NDE_Scanner_RemoveFilters(nde_scanner_t s) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + scanner->RemoveFilters(); +} + +int NDE_Scanner_Next(nde_scanner_t s, int *killswitch) +{ + Scanner *scanner = (Scanner *)s; + if (scanner) + return scanner->Next(killswitch); + else + return 0; +} +/* Filter functions */ +unsigned char NDE_Filter_GetID(nde_filter_t f) +{ + Filter *filter = (Filter *)f; + if (filter) + return filter->GetId(); + else + return FILTERS_INVALID; // right value but I'm not sure if it's the best constant name to use +} + +NDE_API unsigned char NDE_Filter_GetOp(nde_filter_t f) +{ + Filter *filter = (Filter *)f; + if (filter) + return filter->GetOp(); + else + return FILTERS_INVALID; // right value but I'm not sure if it's the best constant name to use +} + +NDE_API nde_field_t NDE_Filter_GetData(nde_filter_t f) +{ + Filter *filter = (Filter *)f; + if (filter) + return (nde_field_t)filter->Data(); + else + return 0; +} + +/* Field functions */ +unsigned char NDE_Field_GetType(nde_field_t f) +{ + Field *field = (Field *)f; + if (field) + return field->GetType(); + else + return FIELD_UNKNOWN; +} + +unsigned char NDE_Field_GetID(nde_field_t f) +{ + Field *field = (Field *)f; + if (field) + return field->GetFieldId(); + else + return FIELD_UNKNOWN; +} + +/* StringField functions */ +#ifdef _WIN32 +void NDE_StringField_SetNDEString(nde_field_t f, wchar_t *nde_string) +{ + StringField *field = (StringField *)(Field *)f; + if (field) + field->SetNDEString(nde_string); +} + +wchar_t *NDE_StringField_GetString(nde_field_t f) +{ + StringField *field = (StringField *)(Field *)f; + if (field) + return field->GetStringW(); + else + return 0; +} + +#ifdef _WIN32 +void NDE_StringField_SetString(nde_field_t f, const wchar_t *str) +{ + StringField *field = (StringField *)(Field *)f; + if (field) + field->SetStringW(str); +} +#endif + +#elif defined(__APPLE__) +void NDE_StringField_SetString(nde_field_t f, CFStringRef nde_string) +{ + StringField *field = (StringField *)(Field *)f; + if (field) + field->SetNDEString(nde_string); +} + +CFStringRef NDE_StringField_GetString(nde_field_t f) +{ + StringField *field = (StringField *)(Field *)f; + if (field) + return field->GetString(); + else + return 0; +} +#endif + + +/* IntegerField functions */ +void NDE_IntegerField_SetValue(nde_field_t f, int value) +{ + IntegerField *field = (IntegerField *)(Field *)f; + if (field) + field->SetValue(value); +} + +int NDE_IntegerField_GetValue(nde_field_t f) +{ + IntegerField *field = (IntegerField *)(Field *)f; + if (field) + return field->GetValue(); + else + return 0; +} + +nde_field_t NDE_IntegerField_Create(int value) +{ + return (nde_field_t)new IntegerField(value); +} + +/* BinaryField */ +void *NDE_BinaryField_GetData(nde_field_t f, size_t *length) +{ + BinaryField *field = (BinaryField *)(Field *)f; + if (field) + return (void *)field->GetData(length); + else + return 0; +} +#ifdef __APPLE__ +CFDataRef NDE_BinaryField_GetCFData(nde_field_t f) +{ + BinaryField *field = (BinaryField *)(Field *)f; + if (field) + return field->GetCFData(); + else + return 0; +} +#endif + +void NDE_BinaryField_SetData(nde_field_t f, const void *data, size_t length) +{ + BinaryField *field = (BinaryField *)(Field *)f; + if (field) + field->SetData((const uint8_t *)data, length); +} + +/* Int128Field */ +void NDE_Int128Field_SetValue(nde_field_t f, const void *value) +{ + Int128Field *field = (Int128Field *)(Field *)f; + if (field && value) + field->SetValue(value); +} + +/* ColumnField */ +#ifdef _WIN32 +const wchar_t *NDE_ColumnField_GetFieldName(nde_field_t f) +{ + ColumnField *field = (ColumnField *)(Field *)f; + if (field) + return field->GetFieldName(); + else + return 0; +} +#else +CFStringRef NDE_ColumnField_GetFieldName(nde_field_t f) +{ + ColumnField *field = (ColumnField *)(Field *)f; + if (field) + return field->GetFieldName(); + else + return 0; +} +#endif + +unsigned char NDE_ColumnField_GetDataType(nde_field_t f) +{ + ColumnField *field = (ColumnField *)(Field *)f; + if (field) + return field->GetDataType(); + else + return FIELD_UNKNOWN; +} + +#ifdef _WIN32 +__time64_t NDE_Time_ApplyConversion(__time64_t value, const wchar_t *str, class TimeParse *tp) +{ + IntegerField f(value); + f.ApplyConversion(str, tp); + return f.GetValue(); +} +#endif
\ No newline at end of file |