Changeset 250146 in webkit


Ignore:
Timestamp:
Sep 20, 2019, 1:29:24 PM (6 years ago)
Author:
achristensen@apple.com
Message:

Deprecate unused C API aliases for WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=202029

Reviewed by Chris Dumez.

This is a piece of r249768.

  • UIProcess/API/C/WKApplicationCacheManager.cpp:

(WKApplicationCacheManagerGetTypeID):
(WKApplicationCacheManagerGetApplicationCacheOrigins):
(WKApplicationCacheManagerDeleteEntriesForOrigin):
(WKApplicationCacheManagerDeleteAllEntries):

  • UIProcess/API/C/WKApplicationCacheManager.h:
  • UIProcess/API/C/WKKeyValueStorageManager.cpp:

(WKKeyValueStorageManagerGetTypeID):
(WKKeyValueStorageManagerGetOriginKey):
(WKKeyValueStorageManagerGetCreationTimeKey):
(WKKeyValueStorageManagerGetModificationTimeKey):
(WKKeyValueStorageManagerGetKeyValueStorageOrigins):
(WKKeyValueStorageManagerGetStorageDetailsByOrigin):
(WKKeyValueStorageManagerDeleteEntriesForOrigin):
(WKKeyValueStorageManagerDeleteAllEntries):

  • UIProcess/API/C/WKKeyValueStorageManager.h:
  • UIProcess/API/C/WKResourceCacheManager.cpp:

(WKResourceCacheManagerGetTypeID):
(WKResourceCacheManagerGetCacheOrigins):
(WKResourceCacheManagerClearCacheForOrigin):
(WKResourceCacheManagerClearCacheForAllOrigins):
(toWebsiteDataTypes): Deleted.

  • UIProcess/API/C/WKResourceCacheManager.h:
Location:
trunk/Source/WebKit
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r250144 r250146  
     12019-09-20  Alex Christensen  <achristensen@webkit.org>
     2
     3        Deprecate unused C API aliases for WebsiteDataStore
     4        https://bugs.webkit.org/show_bug.cgi?id=202029
     5
     6        Reviewed by Chris Dumez.
     7
     8        This is a piece of r249768.
     9
     10        * UIProcess/API/C/WKApplicationCacheManager.cpp:
     11        (WKApplicationCacheManagerGetTypeID):
     12        (WKApplicationCacheManagerGetApplicationCacheOrigins):
     13        (WKApplicationCacheManagerDeleteEntriesForOrigin):
     14        (WKApplicationCacheManagerDeleteAllEntries):
     15        * UIProcess/API/C/WKApplicationCacheManager.h:
     16        * UIProcess/API/C/WKKeyValueStorageManager.cpp:
     17        (WKKeyValueStorageManagerGetTypeID):
     18        (WKKeyValueStorageManagerGetOriginKey):
     19        (WKKeyValueStorageManagerGetCreationTimeKey):
     20        (WKKeyValueStorageManagerGetModificationTimeKey):
     21        (WKKeyValueStorageManagerGetKeyValueStorageOrigins):
     22        (WKKeyValueStorageManagerGetStorageDetailsByOrigin):
     23        (WKKeyValueStorageManagerDeleteEntriesForOrigin):
     24        (WKKeyValueStorageManagerDeleteAllEntries):
     25        * UIProcess/API/C/WKKeyValueStorageManager.h:
     26        * UIProcess/API/C/WKResourceCacheManager.cpp:
     27        (WKResourceCacheManagerGetTypeID):
     28        (WKResourceCacheManagerGetCacheOrigins):
     29        (WKResourceCacheManagerClearCacheForOrigin):
     30        (WKResourceCacheManagerClearCacheForAllOrigins):
     31        (toWebsiteDataTypes): Deleted.
     32        * UIProcess/API/C/WKResourceCacheManager.h:
     33
    1342019-09-20  Alex Christensen  <achristensen@webkit.org>
    235
  • trunk/Source/WebKit/UIProcess/API/C/WKApplicationCacheManager.cpp

    r249778 r250146  
    2727#include "WKApplicationCacheManager.h"
    2828
    29 #include "APIArray.h"
    30 #include "APIWebsiteDataStore.h"
    31 #include "WKAPICast.h"
    32 #include "WebsiteDataRecord.h"
    33 
    3429WKTypeID WKApplicationCacheManagerGetTypeID()
    3530{
    36     return WebKit::toAPI(API::WebsiteDataStore::APIType);
     31    return 0;
    3732}
    3833
    39 void WKApplicationCacheManagerGetApplicationCacheOrigins(WKApplicationCacheManagerRef applicationCacheManager, void* context, WKApplicationCacheManagerGetApplicationCacheOriginsFunction callback)
     34void WKApplicationCacheManagerGetApplicationCacheOrigins(WKApplicationCacheManagerRef, void*, WKApplicationCacheManagerGetApplicationCacheOriginsFunction)
    4035{
    41     auto& websiteDataStore = WebKit::toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(applicationCacheManager))->websiteDataStore();
    42     websiteDataStore.fetchData(WebKit::WebsiteDataType::OfflineWebApplicationCache, { }, [context, callback](auto dataRecords) {
    43         Vector<RefPtr<API::Object>> securityOrigins;
    44         for (const auto& dataRecord : dataRecords) {
    45             for (const auto& origin : dataRecord.origins)
    46                 securityOrigins.append(API::SecurityOrigin::create(origin.securityOrigin()));
    47         }
    48 
    49         callback(WebKit::toAPI(API::Array::create(WTFMove(securityOrigins)).ptr()), nullptr, context);
    50     });
    5136}
    5237
    53 void WKApplicationCacheManagerDeleteEntriesForOrigin(WKApplicationCacheManagerRef applicationCacheManager, WKSecurityOriginRef origin)
     38void WKApplicationCacheManagerDeleteEntriesForOrigin(WKApplicationCacheManagerRef, WKSecurityOriginRef)
    5439{
    55     auto& websiteDataStore = WebKit::toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(applicationCacheManager))->websiteDataStore();
    56 
    57     WebKit::WebsiteDataRecord dataRecord;
    58     dataRecord.add(WebKit::WebsiteDataType::OfflineWebApplicationCache, WebKit::toImpl(origin)->securityOrigin().data());
    59 
    60     websiteDataStore.removeData(WebKit::WebsiteDataType::OfflineWebApplicationCache, { dataRecord }, [] { });
    6140}
    6241
    63 void WKApplicationCacheManagerDeleteAllEntries(WKApplicationCacheManagerRef applicationCacheManager)
     42void WKApplicationCacheManagerDeleteAllEntries(WKApplicationCacheManagerRef)
    6443{
    65     auto& websiteDataStore = WebKit::toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(applicationCacheManager))->websiteDataStore();
    66     websiteDataStore.removeData(WebKit::WebsiteDataType::OfflineWebApplicationCache, -WallTime::infinity(), [] { });
    6744}
  • trunk/Source/WebKit/UIProcess/API/C/WKApplicationCacheManager.h

    r249778 r250146  
    2828
    2929#include <WebKit/WKBase.h>
     30#include <WebKit/WKDeprecated.h>
    3031
    3132#ifdef __cplusplus
     
    3334#endif
    3435
    35 WK_EXPORT WKTypeID WKApplicationCacheManagerGetTypeID();
     36WK_EXPORT WKTypeID WKApplicationCacheManagerGetTypeID() WK_C_API_DEPRECATED;
    3637
    3738typedef void (*WKApplicationCacheManagerGetApplicationCacheOriginsFunction)(WKArrayRef, WKErrorRef, void*);
    38 WK_EXPORT void WKApplicationCacheManagerGetApplicationCacheOrigins(WKApplicationCacheManagerRef applicationCacheManager, void* context, WKApplicationCacheManagerGetApplicationCacheOriginsFunction function);
     39WK_EXPORT void WKApplicationCacheManagerGetApplicationCacheOrigins(WKApplicationCacheManagerRef applicationCacheManager, void* context, WKApplicationCacheManagerGetApplicationCacheOriginsFunction function) WK_C_API_DEPRECATED;
    3940
    40 WK_EXPORT void WKApplicationCacheManagerDeleteEntriesForOrigin(WKApplicationCacheManagerRef applicationCacheManager, WKSecurityOriginRef origin);
    41 WK_EXPORT void WKApplicationCacheManagerDeleteAllEntries(WKApplicationCacheManagerRef applicationCacheManager);
     41WK_EXPORT void WKApplicationCacheManagerDeleteEntriesForOrigin(WKApplicationCacheManagerRef applicationCacheManager, WKSecurityOriginRef origin) WK_C_API_DEPRECATED;
     42WK_EXPORT void WKApplicationCacheManagerDeleteAllEntries(WKApplicationCacheManagerRef applicationCacheManager) WK_C_API_DEPRECATED;
    4243
    4344#ifdef __cplusplus
  • trunk/Source/WebKit/UIProcess/API/C/WKKeyValueStorageManager.cpp

    r249778 r250146  
    2727#include "WKKeyValueStorageManager.h"
    2828
    29 #include "APIArray.h"
    30 #include "APIDictionary.h"
    31 #include "APIWebsiteDataStore.h"
    32 #include "StorageManager.h"
    33 #include "WKAPICast.h"
    34 #include "WebsiteDataRecord.h"
    35 #include "WebsiteDataStore.h"
    36 #include <wtf/RunLoop.h>
    37 
    38 using namespace WebKit;
    39 
    4029WKTypeID WKKeyValueStorageManagerGetTypeID()
    4130{
    42     return toAPI(API::WebsiteDataStore::APIType);
     31    return 0;
    4332}
    4433
    4534WKStringRef WKKeyValueStorageManagerGetOriginKey()
    4635{
    47     static API::String& key = API::String::create("WebKeyValueStorageManagerStorageDetailsOriginKey").leakRef();
    48     return toAPI(&key);
     36    return nullptr;
    4937}
    5038
    5139WKStringRef WKKeyValueStorageManagerGetCreationTimeKey()
    5240{
    53     static API::String& key = API::String::create("WebKeyValueStorageManagerStorageDetailsCreationTimeKey").leakRef();
    54     return toAPI(&key);
     41    return nullptr;
    5542}
    5643
    5744WKStringRef WKKeyValueStorageManagerGetModificationTimeKey()
    5845{
    59     static API::String& key = API::String::create("WebKeyValueStorageManagerStorageDetailsModificationTimeKey").leakRef();
    60     return toAPI(&key);
     46    return nullptr;
    6147}
    6248
    63 void WKKeyValueStorageManagerGetKeyValueStorageOrigins(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction callback)
    64 
     49void WKKeyValueStorageManagerGetKeyValueStorageOrigins(WKKeyValueStorageManagerRef, void*, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction)
    6550{
    66     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(keyValueStorageManager))->websiteDataStore();
    67     websiteDataStore.fetchData({ WebsiteDataType::LocalStorage, WebsiteDataType::SessionStorage }, { }, [context, callback](auto dataRecords) {
    68         Vector<RefPtr<API::Object>> securityOrigins;
    69         for (const auto& dataRecord : dataRecords) {
    70             for (const auto& origin : dataRecord.origins)
    71                 securityOrigins.append(API::SecurityOrigin::create(origin.securityOrigin()));
    72         }
    73 
    74         callback(toAPI(API::Array::create(WTFMove(securityOrigins)).ptr()), nullptr, context);
    75     });
    7651}
    7752
    78 void WKKeyValueStorageManagerGetStorageDetailsByOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetStorageDetailsByOriginFunction callback)
     53void WKKeyValueStorageManagerGetStorageDetailsByOrigin(WKKeyValueStorageManagerRef, void*, WKKeyValueStorageManagerGetStorageDetailsByOriginFunction)
    7954{
    80     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(keyValueStorageManager))->websiteDataStore();
    81     websiteDataStore.getLocalStorageDetails([context, callback](auto&& details) {
    82         Vector<RefPtr<API::Object>> result;
    83         result.reserveInitialCapacity(details.size());
    84 
    85         for (const auto& detail : details) {
    86             HashMap<String, RefPtr<API::Object>> detailMap;
    87             RefPtr<API::Object> origin = API::SecurityOrigin::create(WebCore::SecurityOriginData::fromDatabaseIdentifier(detail.originIdentifier)->securityOrigin());
    88 
    89             detailMap.set(toImpl(WKKeyValueStorageManagerGetOriginKey())->string(), origin);
    90             if (detail.creationTime)
    91                 detailMap.set(toImpl(WKKeyValueStorageManagerGetCreationTimeKey())->string(), API::Double::create(detail.creationTime->secondsSinceEpoch().value()));
    92             if (detail.modificationTime)
    93                 detailMap.set(toImpl(WKKeyValueStorageManagerGetModificationTimeKey())->string(), API::Double::create(detail.modificationTime->secondsSinceEpoch().value()));
    94 
    95             result.uncheckedAppend(API::Dictionary::create(WTFMove(detailMap)));
    96         }
    97 
    98         callback(toAPI(API::Array::create(WTFMove(result)).ptr()), nullptr, context);
    99     });
    10055}
    10156
    102 void WKKeyValueStorageManagerDeleteEntriesForOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, WKSecurityOriginRef origin)
     57void WKKeyValueStorageManagerDeleteEntriesForOrigin(WKKeyValueStorageManagerRef, WKSecurityOriginRef)
    10358{
    104     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(keyValueStorageManager))->websiteDataStore();
    105     WebsiteDataRecord dataRecord;
    106     dataRecord.add(WebsiteDataType::LocalStorage, toImpl(origin)->securityOrigin().data());
    107     dataRecord.add(WebsiteDataType::SessionStorage, toImpl(origin)->securityOrigin().data());
    108     websiteDataStore.removeData({ WebsiteDataType::LocalStorage, WebsiteDataType::SessionStorage }, { dataRecord }, [] { });
    10959}
    11060
    111 void WKKeyValueStorageManagerDeleteAllEntries(WKKeyValueStorageManagerRef keyValueStorageManager)
     61void WKKeyValueStorageManagerDeleteAllEntries(WKKeyValueStorageManagerRef)
    11262{
    113     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(keyValueStorageManager))->websiteDataStore();
    114     websiteDataStore.removeData({ WebsiteDataType::LocalStorage, WebsiteDataType::SessionStorage }, -WallTime::infinity(), [] { });
    11563}
  • trunk/Source/WebKit/UIProcess/API/C/WKKeyValueStorageManager.h

    r249778 r250146  
    2828
    2929#include <WebKit/WKBase.h>
     30#include <WebKit/WKDeprecated.h>
    3031
    3132#ifdef __cplusplus
     
    3334#endif
    3435
    35 WK_EXPORT WKTypeID WKKeyValueStorageManagerGetTypeID();
     36WK_EXPORT WKTypeID WKKeyValueStorageManagerGetTypeID() WK_C_API_DEPRECATED;
    3637
    3738/* Value type: WKSecurityOriginRef */
    38 WK_EXPORT WKStringRef WKKeyValueStorageManagerGetOriginKey();
     39WK_EXPORT WKStringRef WKKeyValueStorageManagerGetOriginKey() WK_C_API_DEPRECATED;
    3940
    4041/* Value type: WKDoubleRef, seconds since January 1st, 1970 UTC */
    41 WK_EXPORT WKStringRef WKKeyValueStorageManagerGetCreationTimeKey();
     42WK_EXPORT WKStringRef WKKeyValueStorageManagerGetCreationTimeKey() WK_C_API_DEPRECATED;
    4243
    4344/* Value type: WKDoubleRef, seconds since January 1st, 1970 UTC */
    44 WK_EXPORT WKStringRef WKKeyValueStorageManagerGetModificationTimeKey();
     45WK_EXPORT WKStringRef WKKeyValueStorageManagerGetModificationTimeKey() WK_C_API_DEPRECATED;
    4546
    4647typedef void (*WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction)(WKArrayRef, WKErrorRef, void*);
    47 WK_EXPORT void WKKeyValueStorageManagerGetKeyValueStorageOrigins(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction function);
     48WK_EXPORT void WKKeyValueStorageManagerGetKeyValueStorageOrigins(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction function) WK_C_API_DEPRECATED;
    4849
    4950typedef void (*WKKeyValueStorageManagerGetStorageDetailsByOriginFunction)(WKArrayRef, WKErrorRef, void*);
    50 WK_EXPORT void WKKeyValueStorageManagerGetStorageDetailsByOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetStorageDetailsByOriginFunction function);
     51WK_EXPORT void WKKeyValueStorageManagerGetStorageDetailsByOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, void* context, WKKeyValueStorageManagerGetStorageDetailsByOriginFunction function) WK_C_API_DEPRECATED;
    5152
    52 WK_EXPORT void WKKeyValueStorageManagerDeleteEntriesForOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, WKSecurityOriginRef origin);
    53 WK_EXPORT void WKKeyValueStorageManagerDeleteAllEntries(WKKeyValueStorageManagerRef keyValueStorageManager);
     53WK_EXPORT void WKKeyValueStorageManagerDeleteEntriesForOrigin(WKKeyValueStorageManagerRef keyValueStorageManager, WKSecurityOriginRef origin) WK_C_API_DEPRECATED;
     54WK_EXPORT void WKKeyValueStorageManagerDeleteAllEntries(WKKeyValueStorageManagerRef keyValueStorageManager) WK_C_API_DEPRECATED;
    5455
    5556#ifdef __cplusplus
  • trunk/Source/WebKit/UIProcess/API/C/WKResourceCacheManager.cpp

    r249778 r250146  
    2727#include "WKResourceCacheManager.h"
    2828
    29 #include "APIArray.h"
    30 #include "APIWebsiteDataStore.h"
    31 #include "WKAPICast.h"
    32 #include "WebsiteDataRecord.h"
    33 
    34 using namespace WebKit;
    35 
    3629WKTypeID WKResourceCacheManagerGetTypeID()
    3730{
    38     return toAPI(API::WebsiteDataStore::APIType);
     31    return 0;
    3932}
    4033
    41 static OptionSet<WebsiteDataType> toWebsiteDataTypes(WKResourceCachesToClear cachesToClear)
     34void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef, void*, WKResourceCacheManagerGetCacheOriginsFunction)
    4235{
    43     OptionSet<WebsiteDataType> websiteDataTypes { WebsiteDataType::MemoryCache };
    44 
    45     if (cachesToClear == WKResourceCachesToClearAll)
    46         websiteDataTypes.add(WebsiteDataType::DiskCache);
    47 
    48     return websiteDataTypes;
    4936}
    5037
    51 void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef cacheManager, void* context, WKResourceCacheManagerGetCacheOriginsFunction callback)
     38void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef, WKSecurityOriginRef, WKResourceCachesToClear)
    5239{
    53     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
    54     websiteDataStore.fetchData(toWebsiteDataTypes(WKResourceCachesToClearAll), { }, [context, callback](auto dataRecords) {
    55         Vector<RefPtr<API::Object>> securityOrigins;
    56         for (const auto& dataRecord : dataRecords) {
    57             for (const auto& origin : dataRecord.origins)
    58                 securityOrigins.append(API::SecurityOrigin::create(origin.securityOrigin()));
    59         }
    60 
    61         callback(toAPI(API::Array::create(WTFMove(securityOrigins)).ptr()), nullptr, context);
    62     });
    6340}
    6441
    65 void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef cacheManager, WKSecurityOriginRef origin, WKResourceCachesToClear cachesToClear)
     42void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef, WKResourceCachesToClear)
    6643{
    67     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
    68 
    69     Vector<WebsiteDataRecord> dataRecords;
    70 
    71     {
    72         WebsiteDataRecord dataRecord;
    73         dataRecord.add(WebsiteDataType::MemoryCache, toImpl(origin)->securityOrigin().data());
    74 
    75         dataRecords.append(dataRecord);
    76     }
    77 
    78     if (cachesToClear == WKResourceCachesToClearAll) {
    79         WebsiteDataRecord dataRecord;
    80         dataRecord.add(WebsiteDataType::DiskCache, toImpl(origin)->securityOrigin().data());
    81 
    82         dataRecords.append(dataRecord);
    83     }
    84 
    85     websiteDataStore.removeData(toWebsiteDataTypes(cachesToClear), dataRecords, [] { });
    8644}
    87 
    88 void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef cacheManager, WKResourceCachesToClear cachesToClear)
    89 {
    90     auto& websiteDataStore = toImpl(reinterpret_cast<WKWebsiteDataStoreRef>(cacheManager))->websiteDataStore();
    91     websiteDataStore.removeData(toWebsiteDataTypes(cachesToClear), -WallTime::infinity(), [] { });
    92 }
  • trunk/Source/WebKit/UIProcess/API/C/WKResourceCacheManager.h

    r249778 r250146  
    2828
    2929#include <WebKit/WKBase.h>
     30#include <WebKit/WKDeprecated.h>
    3031
    3132#ifdef __cplusplus
     
    3940typedef uint32_t WKResourceCachesToClear;
    4041
    41 WK_EXPORT WKTypeID WKResourceCacheManagerGetTypeID();
     42WK_EXPORT WKTypeID WKResourceCacheManagerGetTypeID() WK_C_API_DEPRECATED;
    4243
    4344typedef void (*WKResourceCacheManagerGetCacheOriginsFunction)(WKArrayRef, WKErrorRef, void*);
    44 WK_EXPORT void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef contextRef, void* context, WKResourceCacheManagerGetCacheOriginsFunction function);
     45WK_EXPORT void WKResourceCacheManagerGetCacheOrigins(WKResourceCacheManagerRef contextRef, void* context, WKResourceCacheManagerGetCacheOriginsFunction function) WK_C_API_DEPRECATED;
    4546
    46 WK_EXPORT void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef cacheManger, WKSecurityOriginRef origin, WKResourceCachesToClear cachesToClear);
    47 WK_EXPORT void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef cacheManager, WKResourceCachesToClear cachesToClear);
     47WK_EXPORT void WKResourceCacheManagerClearCacheForOrigin(WKResourceCacheManagerRef cacheManger, WKSecurityOriginRef origin, WKResourceCachesToClear cachesToClear) WK_C_API_DEPRECATED;
     48WK_EXPORT void WKResourceCacheManagerClearCacheForAllOrigins(WKResourceCacheManagerRef cacheManager, WKResourceCachesToClear cachesToClear) WK_C_API_DEPRECATED;
    4849
    4950#ifdef __cplusplus
Note: See TracChangeset for help on using the changeset viewer.