Created
February 8, 2016 10:00
-
-
Save yannick/2ac635497d57f67ec198 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| module devicedetect; | |
| extern (C): | |
| alias e_fiftyoneDegrees_MatchMethod fiftyoneDegreesMatchMethod; | |
| alias e_fiftyoneDegrees_Resultset_CacheState fiftyoneDegreesResultsetCacheState; | |
| alias e_fiftyoneDegrees_DataSetInitStatus fiftyoneDegreesDataSetInitStatus; | |
| alias fiftyoneDegreesRange_t fiftyoneDegreesRange; | |
| alias fiftyoneDegrees_ascii_string_t fiftyoneDegreesAsciiString; | |
| alias fiftyoneDegrees_component_t fiftyoneDegreesComponent; | |
| alias fiftyoneDegrees_map_t fiftyoneDegreesMap; | |
| alias fiftyoneDegrees_node_numeric_index_t fiftyoneDegreesNodeNumericIndex; | |
| alias fiftyoneDegrees_node_index_value_t fiftyoneDegreesNodeIndexValue; | |
| alias fiftyoneDegrees_node_index_t fiftyoneDegreesNodeIndex; | |
| alias fiftyoneDegrees_string_t fiftyoneDegreesString; | |
| alias fiftyoneDegrees_strings_t fiftyoneDegreesStrings; | |
| alias fiftyoneDegrees_node_t fiftyoneDegreesNode; | |
| alias fiftyoneDegrees_profile_offset_t fiftyoneDegreesProfileOffset; | |
| alias property_t fiftyoneDegreesProperty; | |
| alias fiftyoneDegrees_value_t fiftyoneDegreesValue; | |
| alias fiftyoneDegrees_profile_t fiftyoneDegreesProfile; | |
| alias fiftyoneDegrees_date_t fiftyoneDegreesDate; | |
| alias fiftyoneDegrees_entity_header_t fiftyoneDegreesEntityHeader; | |
| alias fiftyoneDegrees_numeric_node_state fiftyoneDegreesNumericNodeState; | |
| alias fiftyoneDegrees_dataset_header_t fiftyoneDegreesDataSetHeader; | |
| alias fiftyoneDegrees_signature_t fiftyoneDegreesSignature; | |
| alias fiftyoneDegrees_http_header_t fiftyoneDegreesHttpHeader; | |
| alias fiftyoneDegrees_dataset_t fiftyoneDegreesDataSet; | |
| alias fiftyoneDegrees_linked_signature_list_item_t fiftyoneDegreesLinkedSignatureListItem; | |
| alias fiftyoneDegrees_linked_signature_list_t fiftyoneDegreesLinkedSignatureList; | |
| alias fiftyoneDegrees_resultset_t fiftyoneDegreesResultset; | |
| alias fiftyoneDegrees_resultset_cache_t fiftyoneDegreesResultsetCache; | |
| alias fiftyoneDegrees_resultset_cache_list_t fiftyoneDegreesResultsetCacheList; | |
| alias fiftyoneDegrees_resultset_cache_link_list_t fiftyoneDegreesResultsetCacheLinkedList; | |
| alias fiftyoneDegrees_http_header_workset_t fiftyoneDegreesHttpHeaderWorkset; | |
| alias fiftyoneDegrees_workset_t fiftyoneDegreesWorkset; | |
| alias fiftyoneDegrees_workset_pool_t fiftyoneDegreesWorksetPool; | |
| enum e_fiftyoneDegrees_MatchMethod | |
| { | |
| NONE = 0, | |
| EXACT = 1, | |
| NUMERIC = 2, | |
| NEAREST = 3, | |
| CLOSEST = 4 | |
| } | |
| enum e_fiftyoneDegrees_Resultset_CacheState | |
| { | |
| ACTIVE_CACHE_LIST_ONLY = 0, | |
| BOTH_CACHE_LISTS = 1 | |
| } | |
| enum e_fiftyoneDegrees_DataSetInitStatus | |
| { | |
| DATA_SET_INIT_STATUS_SUCCESS = 0, | |
| DATA_SET_INIT_STATUS_INSUFFICIENT_MEMORY = 1, | |
| DATA_SET_INIT_STATUS_CORRUPT_DATA = 2, | |
| DATA_SET_INIT_STATUS_INCORRECT_VERSION = 3, | |
| DATA_SET_INIT_STATUS_FILE_NOT_FOUND = 4, | |
| DATA_SET_INIT_STATUS_NOT_SET = 5 | |
| } | |
| struct fiftyoneDegreesRange_t | |
| { | |
| const short lower; | |
| const short upper; | |
| } | |
| align(1) struct fiftyoneDegrees_ascii_string_t | |
| { | |
| const short length; | |
| const char firstByte; | |
| } | |
| align(1) struct fiftyoneDegrees_component_t | |
| { | |
| const byte componentId; | |
| const int nameOffset; | |
| const int defaultProfileOffset; | |
| const ushort httpHeaderCount; | |
| } | |
| align(4) struct fiftyoneDegrees_map_t | |
| { | |
| const int nameOffset; | |
| } | |
| align(2) struct fiftyoneDegrees_node_numeric_index_t | |
| { | |
| const short value; | |
| const int relatedNodeOffset; | |
| } | |
| align(1) struct fiftyoneDegrees_node_index_t | |
| { | |
| const int relatedNodeOffset; | |
| union | |
| { | |
| const byte[4] characters; | |
| const int integer; | |
| } | |
| } | |
| align(2) struct fiftyoneDegrees_string_t | |
| { | |
| byte* value; | |
| short length; | |
| } | |
| struct fiftyoneDegrees_strings_t | |
| { | |
| const(fiftyoneDegreesString)* firstString; | |
| const int count; | |
| } | |
| align(2) struct fiftyoneDegrees_node_t | |
| { | |
| const short position; | |
| const short nextCharacterPosition; | |
| const int parentOffset; | |
| const int characterStringOffset; | |
| const short childrenCount; | |
| const short numericChildrenCount; | |
| const ushort signatureCount; | |
| } | |
| align(4) struct fiftyoneDegrees_profile_offset_t | |
| { | |
| const int profileId; | |
| const int offset; | |
| } | |
| align(1) struct property_t | |
| { | |
| const byte componentIndex; | |
| const byte displayOrder; | |
| const byte isMandatory; | |
| const byte isList; | |
| const byte showValues; | |
| const byte isObsolete; | |
| const byte show; | |
| const byte valueType; | |
| const int defaultValueIndex; | |
| const int nameOffset; | |
| const int descriptionOffset; | |
| const int categoryOffset; | |
| const int urlOffset; | |
| const int firstValueIndex; | |
| const int lastValueIndex; | |
| const int mapCount; | |
| const int firstMapIndex; | |
| } | |
| align(2) struct fiftyoneDegrees_value_t | |
| { | |
| const short propertyIndex; | |
| const int nameOffset; | |
| const int descriptionOffset; | |
| const int urlOffset; | |
| } | |
| align(1) struct fiftyoneDegrees_profile_t | |
| { | |
| const byte componentIndex; | |
| const int profileId; | |
| const int valueCount; | |
| const int signatureCount; | |
| } | |
| align(2) struct fiftyoneDegrees_date_t | |
| { | |
| const short year; | |
| const byte month; | |
| const byte day; | |
| } | |
| align(4) struct fiftyoneDegrees_entity_header_t | |
| { | |
| const int startPosition; | |
| const int length; | |
| const int count; | |
| } | |
| align(2) struct fiftyoneDegrees_numeric_node_state | |
| { | |
| int target; | |
| const(fiftyoneDegreesNode)* node; | |
| const(fiftyoneDegreesNodeNumericIndex)* firstNodeNumericIndex; | |
| const(fiftyoneDegreesRange)* range; | |
| int startIndex; | |
| int lowIndex; | |
| int highIndex; | |
| byte lowInRange; | |
| byte highInRange; | |
| } | |
| align(1) struct fiftyoneDegrees_dataset_header_t | |
| { | |
| const int versionMajor; | |
| const int versionMinor; | |
| const int versionBuild; | |
| const int versionRevision; | |
| const byte[16] tag; | |
| const byte[16] exportTag; | |
| const int copyrightOffset; | |
| const short age; | |
| const int minUserAgentCount; | |
| const int nameOffset; | |
| const int formatOffset; | |
| const fiftyoneDegreesDate published; | |
| const fiftyoneDegreesDate nextUpdate; | |
| const int deviceCombinations; | |
| const short maxUserAgentLength; | |
| const short minUserAgentLength; | |
| const char lowestCharacter; | |
| const char highestCharacter; | |
| const int maxSignatures; | |
| const int signatureProfilesCount; | |
| const int signatureNodesCount; | |
| const short maxValues; | |
| const int csvBufferLength; | |
| const int jsonBufferLength; | |
| const int xmlBufferLength; | |
| const int maxSignaturesClosest; | |
| const int maxRank; | |
| const fiftyoneDegreesEntityHeader strings; | |
| const fiftyoneDegreesEntityHeader components; | |
| const fiftyoneDegreesEntityHeader maps; | |
| const fiftyoneDegreesEntityHeader properties; | |
| const fiftyoneDegreesEntityHeader values; | |
| const fiftyoneDegreesEntityHeader profiles; | |
| const fiftyoneDegreesEntityHeader signatures; | |
| const fiftyoneDegreesEntityHeader signatureNodeOffsets; | |
| const fiftyoneDegreesEntityHeader nodeRankedSignatureIndexes; | |
| const fiftyoneDegreesEntityHeader rankedSignatureIndexes; | |
| const fiftyoneDegreesEntityHeader nodes; | |
| const fiftyoneDegreesEntityHeader rootNodes; | |
| const fiftyoneDegreesEntityHeader profileOffsets; | |
| } | |
| align(1) struct fiftyoneDegrees_signature_t | |
| { | |
| const byte nodeCount; | |
| const int firstNodeOffsetIndex; | |
| const int rank; | |
| const byte flags; | |
| } | |
| align(4) struct fiftyoneDegrees_http_header_t | |
| { | |
| int headerNameOffset; | |
| const(char)* headerName; | |
| } | |
| align(1) struct fiftyoneDegrees_dataset_t | |
| { | |
| const fiftyoneDegreesDataSetHeader header; | |
| int sizeOfSignature; | |
| int signatureStartOfStruct; | |
| const(fiftyoneDegreesProperty*)* requiredProperties; | |
| int requiredPropertyCount; | |
| const(byte)* strings; | |
| const(byte)* componentsData; | |
| const(fiftyoneDegreesComponent*)* components; | |
| const(fiftyoneDegreesMap)* maps; | |
| const(fiftyoneDegreesProperty)* properties; | |
| const(fiftyoneDegreesValue)* values; | |
| const(byte)* profiles; | |
| const(byte)* signatures; | |
| const(int)* signatureNodeOffsets; | |
| const(int)* nodeRankedSignatureIndexes; | |
| const(int)* rankedSignatureIndexes; | |
| const(byte)* nodes; | |
| const(fiftyoneDegreesNode*)* rootNodes; | |
| const(fiftyoneDegreesProfileOffset)* profileOffsets; | |
| int httpHeadersCount; | |
| fiftyoneDegreesHttpHeader* httpHeaders; | |
| const(char*)* prefixedUpperHttpHeaders; | |
| } | |
| struct fiftyoneDegrees_linked_signature_list_item_t | |
| { | |
| fiftyoneDegrees_linked_signature_list_item_t* next; | |
| fiftyoneDegrees_linked_signature_list_item_t* previous; | |
| int rankedSignatureIndex; | |
| int frequency; | |
| } | |
| struct fiftyoneDegrees_linked_signature_list_t | |
| { | |
| const(fiftyoneDegreesLinkedSignatureListItem)* items; | |
| fiftyoneDegreesLinkedSignatureListItem* first; | |
| fiftyoneDegreesLinkedSignatureListItem* last; | |
| int count; | |
| fiftyoneDegreesLinkedSignatureListItem* current; | |
| } | |
| align(1) struct fiftyoneDegrees_resultset_t | |
| { | |
| const(fiftyoneDegreesDataSet)* dataSet; | |
| byte* targetUserAgentArray; | |
| ushort targetUserAgentArrayLength; | |
| ulong targetUserAgentHashCode; | |
| byte hashCodeSet; | |
| fiftyoneDegreesMatchMethod method; | |
| int difference; | |
| int rootNodesEvaluated; | |
| int stringsRead; | |
| int nodesEvaluated; | |
| int signaturesCompared; | |
| int signaturesRead; | |
| int closestSignatures; | |
| const(fiftyoneDegreesProfile)* profiles; | |
| int profileCount; | |
| byte* signature; | |
| fiftyoneDegrees_resultset_t* previous; | |
| fiftyoneDegrees_resultset_t* next; | |
| fiftyoneDegreesResultsetCacheState state; | |
| } | |
| align(4) struct fiftyoneDegrees_resultset_cache_list_t | |
| { | |
| fiftyoneDegrees_resultset_cache_t* cache; | |
| fiftyoneDegreesResultset** resultSets; | |
| int allocated; | |
| } | |
| align(4) struct fiftyoneDegrees_resultset_cache_link_list_t | |
| { | |
| fiftyoneDegreesResultset* first; | |
| fiftyoneDegreesResultset* last; | |
| int count; | |
| } | |
| align(4) struct fiftyoneDegrees_resultset_cache_t | |
| { | |
| const(fiftyoneDegreesDataSet)* dataSet; | |
| const(fiftyoneDegreesResultset)* resultSets; | |
| int sizeOfResultset; | |
| int total; | |
| fiftyoneDegreesResultsetCacheLinkedList free; | |
| fiftyoneDegreesResultsetCacheLinkedList allocated; | |
| fiftyoneDegreesResultsetCacheList* active; | |
| fiftyoneDegreesResultsetCacheList* background; | |
| int switchLimit; | |
| int hits; | |
| int misses; | |
| int switches; | |
| // fiftyoneDegreesMutex activeLock; | |
| // fiftyoneDegreesMutex backgroundLock; | |
| } | |
| align(4) struct fiftyoneDegrees_http_header_workset_t | |
| { | |
| fiftyoneDegreesHttpHeader* header; | |
| const(char)* headerValue; | |
| int headerValueLength; | |
| } | |
| align(1) struct fiftyoneDegrees_workset_t | |
| { | |
| const(fiftyoneDegreesDataSet)* dataSet; | |
| char* targetUserAgentArray; | |
| ushort targetUserAgentArrayLength; | |
| ulong targetUserAgentHashCode; | |
| byte hashCodeSet; | |
| fiftyoneDegreesMatchMethod method; | |
| int difference; | |
| int rootNodesEvaluated; | |
| int stringsRead; | |
| int nodesEvaluated; | |
| int signaturesCompared; | |
| int signaturesRead; | |
| int closestSignatures; | |
| const(fiftyoneDegreesProfile*)* profiles; | |
| int profileCount; | |
| byte* signature; | |
| const(fiftyoneDegreesValue*)* values; | |
| int valuesCount; | |
| char* input; | |
| char* targetUserAgent; | |
| char* relevantNodes; | |
| char* closestNodes; | |
| char* signatureAsString; | |
| char* tempheaderlowercase; | |
| const(fiftyoneDegreesNode*)* nodes; | |
| const(fiftyoneDegreesNode*)* orderedNodes; | |
| int nodeCount; | |
| int closestNodeRankedSignatureIndex; | |
| fiftyoneDegreesLinkedSignatureList linkedSignatureList; | |
| short nextCharacterPositionIndex; | |
| byte startWithInitialScore; | |
| int function (fiftyoneDegrees_workset_t*, const(fiftyoneDegreesNode)*) functionPtrGetScore; | |
| const(byte)* function (fiftyoneDegrees_workset_t*) functionPtrNextClosestSignature; | |
| const(fiftyoneDegreesResultsetCache)* cache; | |
| const(fiftyoneDegreesProfile*)* tempProfiles; | |
| int importantHeadersCount; | |
| fiftyoneDegreesHttpHeaderWorkset* importantHeaders; | |
| } | |
| struct fiftyoneDegrees_workset_pool_t | |
| { | |
| fiftyoneDegreesDataSet* dataSet; | |
| fiftyoneDegreesResultsetCache* cache; | |
| int size; | |
| fiftyoneDegreesWorkset** worksets; | |
| int available; | |
| int created; | |
| // fiftyoneDegreesMutex lock; | |
| // fiftyoneDegreesSignal signal; | |
| } | |
| union fiftyoneDegrees_node_index_value_t | |
| { | |
| const byte[4] characters; | |
| const int integer; | |
| } | |
| fiftyoneDegreesDataSetInitStatus fiftyoneDegreesInitWithPropertyArray (const(char)* fileName, fiftyoneDegreesDataSet* dataSet, const(char*)* properties, int count); | |
| fiftyoneDegreesDataSetInitStatus fiftyoneDegreesInitWithPropertyString (const(char)* fileName, fiftyoneDegreesDataSet* dataSet, const(char)* properties); | |
| void fiftyoneDegreesDataSetFree (const(fiftyoneDegreesDataSet)* dataSet); | |
| fiftyoneDegreesResultsetCache* fiftyoneDegreesResultsetCacheCreate (const(fiftyoneDegreesDataSet)* dataSet, int size); | |
| void fiftyoneDegreesResultsetCacheFree (const(fiftyoneDegreesResultsetCache)* rsc); | |
| fiftyoneDegreesWorksetPool* fiftyoneDegreesWorksetPoolCreate (fiftyoneDegreesDataSet* dataSet, fiftyoneDegreesResultsetCache* cache, int size); | |
| void fiftyoneDegreesWorksetPoolFree (fiftyoneDegreesWorksetPool* pool); | |
| fiftyoneDegreesWorkset* fiftyoneDegreesWorksetPoolGet (fiftyoneDegreesWorksetPool* pool); | |
| void fiftyoneDegreesWorksetPoolRelease (fiftyoneDegreesWorksetPool* pool, fiftyoneDegreesWorkset* ws); | |
| fiftyoneDegreesWorkset* fiftyoneDegreesWorksetCreate (const(fiftyoneDegreesDataSet)* dataSet, const(fiftyoneDegreesResultsetCache)* cache); | |
| void fiftyoneDegreesWorksetFree (const(fiftyoneDegreesWorkset)* ws); | |
| char* fiftyoneDegreesJSONCreate (fiftyoneDegreesWorkset* ws); | |
| void fiftyoneDegreesJSONFree (void* json); | |
| char* fiftyoneDegreesCSVCreate (fiftyoneDegreesWorkset* ws); | |
| void fiftyoneDegreesCSVFree (void* csv); | |
| void fiftyoneDegreesMatch (fiftyoneDegreesWorkset* ws, const(char)* userAgent); | |
| void fiftyoneDegreesMatchWithHeadersArray (fiftyoneDegreesWorkset* ws, const(char*)* httpHeaderNames, const(char*)* httpHeaderValues, int httpHeaderCount); | |
| void fiftyoneDegreesMatchWithHeadersString (fiftyoneDegreesWorkset* ws, const(char)* httpHeaders, size_t length); | |
| int fiftyoneDegreesSetHttpHeaders (fiftyoneDegreesWorkset* ws, const(char)* httpHeaders, size_t length); | |
| void fiftyoneDegreesMatchForHttpHeaders (fiftyoneDegreesWorkset* ws); | |
| int fiftyoneDegreesSetValues (fiftyoneDegreesWorkset* ws, int requiredPropertyIndex); | |
| const(fiftyoneDegreesAsciiString)* fiftyoneDegreesGetString (const(fiftyoneDegreesDataSet)* dataSet, int offset); | |
| int fiftyoneDegreesGetValues (fiftyoneDegreesWorkset* ws, int requiredPropertyIndex, char* values, int size); | |
| const(char)* fiftyoneDegreesGetValueName (const(fiftyoneDegreesDataSet)* dataSet, const(fiftyoneDegreesValue)* value); | |
| const(char)* fiftyoneDegreesGetPropertyName (const(fiftyoneDegreesDataSet)* dataSet, const(fiftyoneDegreesProperty)* property); | |
| int fiftyoneDegreesGetRequiredPropertyName (const(fiftyoneDegreesDataSet)* dataSet, int requiredPropertyIndex, char* propertyName, int size); | |
| int fiftyoneDegreesGetHttpHeaderName (const(fiftyoneDegreesDataSet)* dataSet, int httpHeaderIndex, char* httpHeader, int size); | |
| const(char)* fiftyoneDegreesGetPrefixedUpperHttpHeaderName (const(fiftyoneDegreesDataSet)* dataSet, int httpHeaderIndex); | |
| int fiftyoneDegreesGetRequiredPropertyIndex (const(fiftyoneDegreesDataSet)* dataSet, const(char)* propertyName); | |
| int fiftyoneDegreesProcessDeviceCSV (fiftyoneDegreesWorkset* ws, char* csv); | |
| int fiftyoneDegreesProcessDeviceJSON (fiftyoneDegreesWorkset* ws, char* json); | |
| int fiftyoneDegreesGetSignatureRank (fiftyoneDegreesWorkset* ws); | |
| int fiftyoneDegreesGetSignatureAsString (fiftyoneDegreesWorkset* ws, char* signatureAsString, int size); | |
| int fiftyoneDegreesGetDeviceId (fiftyoneDegreesWorkset* ws, char* deviceId, int size); | |
| void fiftyoneDegreesMatchForDeviceId (fiftyoneDegreesWorkset* ws, const(char)* deviceId); | |
| fiftyoneDegreesWorkset* fiftyoneDegreesCreateWorkset (const(fiftyoneDegreesDataSet)* dataSet); | |
| void fiftyoneDegreesFreeWorkset (const(fiftyoneDegreesWorkset)* ws); | |
| void fiftyoneDegreesDestroy (const(fiftyoneDegreesDataSet)* dataSet); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment