| /* | 
 |  *  Copyright 2012 The WebRTC Project Authors. All rights reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS.  All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | // This file is a supermacro | 
 | // (see http://wanderinghorse.net/computing/papers/supermacros_cpp.html) to | 
 | // expand a definition of a late-binding symbol table class. | 
 | // | 
 | // Arguments: | 
 | // LATE_BINDING_SYMBOL_TABLE_CLASS_NAME: Name of the class to generate. | 
 | // LATE_BINDING_SYMBOL_TABLE_SYMBOLS_LIST: List of symbols to load from the DLL, | 
 | //     as an X-Macro list (see http://www.drdobbs.com/blogs/cpp/228700289). | 
 | // LATE_BINDING_SYMBOL_TABLE_DLL_NAME: String literal for the DLL file name to | 
 | //     load. | 
 | // | 
 | // From a .cc file, include the header file containing your call to the .h.def | 
 | // supermacro, and then call this supermacro (optionally from inside the | 
 | // namespace for the class to generate, if any). Example: | 
 | // | 
 | // #include "myclassname.h" | 
 | // | 
 | // namespace foo { | 
 | // | 
 | // #define LATE_BINDING_SYMBOL_TABLE_CLASS_NAME MY_CLASS_NAME | 
 | // #define LATE_BINDING_SYMBOL_TABLE_SYMBOLS_LIST MY_SYMBOLS_LIST | 
 | // #define LATE_BINDING_SYMBOL_TABLE_DLL_NAME "libdll.so.n" | 
 | // #include "webrtc/base/latebindingsymboltable.cc.def" | 
 | // | 
 | // } | 
 |  | 
 | #ifndef LATE_BINDING_SYMBOL_TABLE_CLASS_NAME | 
 | #error You must define LATE_BINDING_SYMBOL_TABLE_CLASS_NAME | 
 | #endif | 
 |  | 
 | #ifndef LATE_BINDING_SYMBOL_TABLE_SYMBOLS_LIST | 
 | #error You must define LATE_BINDING_SYMBOL_TABLE_SYMBOLS_LIST | 
 | #endif | 
 |  | 
 | #ifndef LATE_BINDING_SYMBOL_TABLE_DLL_NAME | 
 | #error You must define LATE_BINDING_SYMBOL_TABLE_DLL_NAME | 
 | #endif | 
 |  | 
 | #define X(sym) #sym, | 
 | const char* const LATE_BINDING_SYMBOL_TABLE_CLASS_NAME::kSymbolNames[] = { | 
 |   LATE_BINDING_SYMBOL_TABLE_SYMBOLS_LIST | 
 | }; | 
 | #undef X | 
 |  | 
 | const ::rtc::LateBindingSymbolTable::TableInfo | 
 |     LATE_BINDING_SYMBOL_TABLE_CLASS_NAME::kTableInfo = { | 
 |   LATE_BINDING_SYMBOL_TABLE_DLL_NAME, | 
 |   SYMBOL_TABLE_SIZE, | 
 |   LATE_BINDING_SYMBOL_TABLE_CLASS_NAME::kSymbolNames | 
 | }; | 
 |  | 
 | LATE_BINDING_SYMBOL_TABLE_CLASS_NAME::LATE_BINDING_SYMBOL_TABLE_CLASS_NAME() | 
 |     : ::rtc::LateBindingSymbolTable(&kTableInfo, table_) {} | 
 |  | 
 | LATE_BINDING_SYMBOL_TABLE_CLASS_NAME::~LATE_BINDING_SYMBOL_TABLE_CLASS_NAME() {} | 
 |  | 
 | #undef LATE_BINDING_SYMBOL_TABLE_CLASS_NAME | 
 | #undef LATE_BINDING_SYMBOL_TABLE_SYMBOLS_LIST | 
 | #undef LATE_BINDING_SYMBOL_TABLE_DLL_NAME |