lto+vis sandbox/vbarinov/vis
authorSlava Barinov <v.barinov@samsung.com>
Tue, 12 Apr 2016 07:44:07 +0000 (10:44 +0300)
committerSlava Barinov <v.barinov@samsung.com>
Tue, 12 Apr 2016 07:44:07 +0000 (10:44 +0300)
13 files changed:
include/leveldb/c.h
include/leveldb/cache.h
include/leveldb/comparator.h
include/leveldb/db.h
include/leveldb/env.h
include/leveldb/iterator.h
include/leveldb/options.h
include/leveldb/slice.h
include/leveldb/status.h
include/leveldb/table.h
include/leveldb/table_builder.h
include/leveldb/write_batch.h
packaging/leveldb.spec

index 0be993d..c2f9d7c 100644 (file)
@@ -48,6 +48,11 @@ extern "C" {
 #include <stddef.h>
 #include <stdint.h>
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 /* Exported types */
 
 typedef struct leveldb_t               leveldb_t;
@@ -68,27 +73,27 @@ typedef struct leveldb_writeoptions_t  leveldb_writeoptions_t;
 
 /* DB operations */
 
-extern leveldb_t* leveldb_open(
+EXPORT_API extern leveldb_t* leveldb_open(
     const leveldb_options_t* options,
     const char* name,
     char** errptr);
 
-extern void leveldb_close(leveldb_t* db);
+EXPORT_API extern void leveldb_close(leveldb_t* db);
 
-extern void leveldb_put(
+EXPORT_API extern void leveldb_put(
     leveldb_t* db,
     const leveldb_writeoptions_t* options,
     const char* key, size_t keylen,
     const char* val, size_t vallen,
     char** errptr);
 
-extern void leveldb_delete(
+EXPORT_API extern void leveldb_delete(
     leveldb_t* db,
     const leveldb_writeoptions_t* options,
     const char* key, size_t keylen,
     char** errptr);
 
-extern void leveldb_write(
+EXPORT_API extern void leveldb_write(
     leveldb_t* db,
     const leveldb_writeoptions_t* options,
     leveldb_writebatch_t* batch,
@@ -96,31 +101,31 @@ extern void leveldb_write(
 
 /* Returns NULL if not found.  A malloc()ed array otherwise.
    Stores the length of the array in *vallen. */
-extern char* leveldb_get(
+EXPORT_API extern char* leveldb_get(
     leveldb_t* db,
     const leveldb_readoptions_t* options,
     const char* key, size_t keylen,
     size_t* vallen,
     char** errptr);
 
-extern leveldb_iterator_t* leveldb_create_iterator(
+EXPORT_API extern leveldb_iterator_t* leveldb_create_iterator(
     leveldb_t* db,
     const leveldb_readoptions_t* options);
 
-extern const leveldb_snapshot_t* leveldb_create_snapshot(
+EXPORT_API extern const leveldb_snapshot_t* leveldb_create_snapshot(
     leveldb_t* db);
 
-extern void leveldb_release_snapshot(
+EXPORT_API extern void leveldb_release_snapshot(
     leveldb_t* db,
     const leveldb_snapshot_t* snapshot);
 
 /* Returns NULL if property name is unknown.
    Else returns a pointer to a malloc()-ed null-terminated value. */
-extern char* leveldb_property_value(
+EXPORT_API extern char* leveldb_property_value(
     leveldb_t* db,
     const char* propname);
 
-extern void leveldb_approximate_sizes(
+EXPORT_API extern void leveldb_approximate_sizes(
     leveldb_t* db,
     int num_ranges,
     const char* const* range_start_key, const size_t* range_start_key_len,
@@ -129,42 +134,42 @@ extern void leveldb_approximate_sizes(
 
 /* Management operations */
 
-extern void leveldb_destroy_db(
+EXPORT_API extern void leveldb_destroy_db(
     const leveldb_options_t* options,
     const char* name,
     char** errptr);
 
-extern void leveldb_repair_db(
+EXPORT_API extern void leveldb_repair_db(
     const leveldb_options_t* options,
     const char* name,
     char** errptr);
 
 /* Iterator */
 
-extern void leveldb_iter_destroy(leveldb_iterator_t*);
-extern unsigned char leveldb_iter_valid(const leveldb_iterator_t*);
-extern void leveldb_iter_seek_to_first(leveldb_iterator_t*);
-extern void leveldb_iter_seek_to_last(leveldb_iterator_t*);
-extern void leveldb_iter_seek(leveldb_iterator_t*, const char* k, size_t klen);
-extern void leveldb_iter_next(leveldb_iterator_t*);
-extern void leveldb_iter_prev(leveldb_iterator_t*);
-extern const char* leveldb_iter_key(const leveldb_iterator_t*, size_t* klen);
-extern const char* leveldb_iter_value(const leveldb_iterator_t*, size_t* vlen);
-extern void leveldb_iter_get_error(const leveldb_iterator_t*, char** errptr);
+EXPORT_API extern void leveldb_iter_destroy(leveldb_iterator_t*);
+EXPORT_API extern unsigned char leveldb_iter_valid(const leveldb_iterator_t*);
+EXPORT_API extern void leveldb_iter_seek_to_first(leveldb_iterator_t*);
+EXPORT_API extern void leveldb_iter_seek_to_last(leveldb_iterator_t*);
+EXPORT_API extern void leveldb_iter_seek(leveldb_iterator_t*, const char* k, size_t klen);
+EXPORT_API extern void leveldb_iter_next(leveldb_iterator_t*);
+EXPORT_API extern void leveldb_iter_prev(leveldb_iterator_t*);
+EXPORT_API extern const char* leveldb_iter_key(const leveldb_iterator_t*, size_t* klen);
+EXPORT_API extern const char* leveldb_iter_value(const leveldb_iterator_t*, size_t* vlen);
+EXPORT_API extern void leveldb_iter_get_error(const leveldb_iterator_t*, char** errptr);
 
 /* Write batch */
 
-extern leveldb_writebatch_t* leveldb_writebatch_create();
-extern void leveldb_writebatch_destroy(leveldb_writebatch_t*);
-extern void leveldb_writebatch_clear(leveldb_writebatch_t*);
-extern void leveldb_writebatch_put(
+EXPORT_API extern leveldb_writebatch_t* leveldb_writebatch_create();
+EXPORT_API extern void leveldb_writebatch_destroy(leveldb_writebatch_t*);
+EXPORT_API extern void leveldb_writebatch_clear(leveldb_writebatch_t*);
+EXPORT_API extern void leveldb_writebatch_put(
     leveldb_writebatch_t*,
     const char* key, size_t klen,
     const char* val, size_t vlen);
-extern void leveldb_writebatch_delete(
+EXPORT_API extern void leveldb_writebatch_delete(
     leveldb_writebatch_t*,
     const char* key, size_t klen);
-extern void leveldb_writebatch_iterate(
+EXPORT_API extern void leveldb_writebatch_iterate(
     leveldb_writebatch_t*,
     void* state,
     void (*put)(void*, const char* k, size_t klen, const char* v, size_t vlen),
@@ -172,34 +177,34 @@ extern void leveldb_writebatch_iterate(
 
 /* Options */
 
-extern leveldb_options_t* leveldb_options_create();
-extern void leveldb_options_destroy(leveldb_options_t*);
-extern void leveldb_options_set_comparator(
+EXPORT_API extern leveldb_options_t* leveldb_options_create();
+EXPORT_API extern void leveldb_options_destroy(leveldb_options_t*);
+EXPORT_API extern void leveldb_options_set_comparator(
     leveldb_options_t*,
     leveldb_comparator_t*);
-extern void leveldb_options_set_create_if_missing(
+EXPORT_API extern void leveldb_options_set_create_if_missing(
     leveldb_options_t*, unsigned char);
-extern void leveldb_options_set_error_if_exists(
+EXPORT_API extern void leveldb_options_set_error_if_exists(
     leveldb_options_t*, unsigned char);
-extern void leveldb_options_set_paranoid_checks(
+EXPORT_API extern void leveldb_options_set_paranoid_checks(
     leveldb_options_t*, unsigned char);
-extern void leveldb_options_set_env(leveldb_options_t*, leveldb_env_t*);
-extern void leveldb_options_set_info_log(leveldb_options_t*, leveldb_logger_t*);
-extern void leveldb_options_set_write_buffer_size(leveldb_options_t*, size_t);
-extern void leveldb_options_set_max_open_files(leveldb_options_t*, int);
-extern void leveldb_options_set_cache(leveldb_options_t*, leveldb_cache_t*);
-extern void leveldb_options_set_block_size(leveldb_options_t*, size_t);
-extern void leveldb_options_set_block_restart_interval(leveldb_options_t*, int);
+EXPORT_API extern void leveldb_options_set_env(leveldb_options_t*, leveldb_env_t*);
+EXPORT_API extern void leveldb_options_set_info_log(leveldb_options_t*, leveldb_logger_t*);
+EXPORT_API extern void leveldb_options_set_write_buffer_size(leveldb_options_t*, size_t);
+EXPORT_API extern void leveldb_options_set_max_open_files(leveldb_options_t*, int);
+EXPORT_API extern void leveldb_options_set_cache(leveldb_options_t*, leveldb_cache_t*);
+EXPORT_API extern void leveldb_options_set_block_size(leveldb_options_t*, size_t);
+EXPORT_API extern void leveldb_options_set_block_restart_interval(leveldb_options_t*, int);
 
 enum {
   leveldb_no_compression = 0,
   leveldb_snappy_compression = 1
 };
-extern void leveldb_options_set_compression(leveldb_options_t*, int);
+EXPORT_API extern void leveldb_options_set_compression(leveldb_options_t*, int);
 
 /* Comparator */
 
-extern leveldb_comparator_t* leveldb_comparator_create(
+EXPORT_API extern leveldb_comparator_t* leveldb_comparator_create(
     void* state,
     void (*destructor)(void*),
     int (*compare)(
@@ -207,37 +212,37 @@ extern leveldb_comparator_t* leveldb_comparator_create(
         const char* a, size_t alen,
         const char* b, size_t blen),
     const char* (*name)(void*));
-extern void leveldb_comparator_destroy(leveldb_comparator_t*);
+EXPORT_API extern void leveldb_comparator_destroy(leveldb_comparator_t*);
 
 /* Read options */
 
-extern leveldb_readoptions_t* leveldb_readoptions_create();
-extern void leveldb_readoptions_destroy(leveldb_readoptions_t*);
-extern void leveldb_readoptions_set_verify_checksums(
+EXPORT_API extern leveldb_readoptions_t* leveldb_readoptions_create();
+EXPORT_API extern void leveldb_readoptions_destroy(leveldb_readoptions_t*);
+EXPORT_API extern void leveldb_readoptions_set_verify_checksums(
     leveldb_readoptions_t*,
     unsigned char);
-extern void leveldb_readoptions_set_fill_cache(
+EXPORT_API extern void leveldb_readoptions_set_fill_cache(
     leveldb_readoptions_t*, unsigned char);
-extern void leveldb_readoptions_set_snapshot(
+EXPORT_API extern void leveldb_readoptions_set_snapshot(
     leveldb_readoptions_t*,
     const leveldb_snapshot_t*);
 
 /* Write options */
 
-extern leveldb_writeoptions_t* leveldb_writeoptions_create();
-extern void leveldb_writeoptions_destroy(leveldb_writeoptions_t*);
-extern void leveldb_writeoptions_set_sync(
+EXPORT_API extern leveldb_writeoptions_t* leveldb_writeoptions_create();
+EXPORT_API extern void leveldb_writeoptions_destroy(leveldb_writeoptions_t*);
+EXPORT_API extern void leveldb_writeoptions_set_sync(
     leveldb_writeoptions_t*, unsigned char);
 
 /* Cache */
 
-extern leveldb_cache_t* leveldb_cache_create_lru(size_t capacity);
-extern void leveldb_cache_destroy(leveldb_cache_t* cache);
+EXPORT_API extern leveldb_cache_t* leveldb_cache_create_lru(size_t capacity);
+EXPORT_API extern void leveldb_cache_destroy(leveldb_cache_t* cache);
 
 /* Env */
 
-extern leveldb_env_t* leveldb_create_default_env();
-extern void leveldb_env_destroy(leveldb_env_t*);
+EXPORT_API extern leveldb_env_t* leveldb_create_default_env();
+EXPORT_API extern void leveldb_env_destroy(leveldb_env_t*);
 
 #ifdef __cplusplus
 }  /* end extern "C" */
index 5e3b476..30f68b7 100644 (file)
 #include <stdint.h>
 #include "leveldb/slice.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 class Cache;
 
 // Create a new cache with a fixed size capacity.  This implementation
 // of Cache uses a least-recently-used eviction policy.
-extern Cache* NewLRUCache(size_t capacity);
+EXPORT_API extern Cache* NewLRUCache(size_t capacity);
 
-class Cache {
+class EXPORT_API Cache {
  public:
   Cache() { }
 
index 556b984..0d920ab 100644 (file)
@@ -7,6 +7,11 @@
 
 #include <string>
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 class Slice;
@@ -15,7 +20,7 @@ class Slice;
 // used as keys in an sstable or a database.  A Comparator implementation
 // must be thread-safe since leveldb may invoke its methods concurrently
 // from multiple threads.
-class Comparator {
+class EXPORT_API Comparator {
  public:
   virtual ~Comparator();
 
@@ -56,7 +61,7 @@ class Comparator {
 // Return a builtin comparator that uses lexicographic byte-wise
 // ordering.  The result remains the property of this module and
 // must not be deleted.
-extern const Comparator* BytewiseComparator();
+EXPORT_API extern const Comparator* BytewiseComparator();
 
 }  // namespace leveldb
 
index c1182b7..fcedd0f 100644 (file)
 #include "leveldb/iterator.h"
 #include "leveldb/options.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 static const int kMajorVersion = 1;
@@ -23,13 +28,13 @@ class WriteBatch;
 // Abstract handle to particular state of a DB.
 // A Snapshot is an immutable object and can therefore be safely
 // accessed from multiple threads without any external synchronization.
-class Snapshot {
+class EXPORT_API Snapshot {
  protected:
   virtual ~Snapshot();
 };
 
 // A range of keys
-struct Range {
+struct EXPORT_API Range {
   Slice start;          // Included in the range
   Slice limit;          // Not included in the range
 
@@ -40,7 +45,7 @@ struct Range {
 // A DB is a persistent ordered map from keys to values.
 // A DB is safe for concurrent access from multiple threads without
 // any external synchronization.
-class DB {
+class EXPORT_API DB {
  public:
   // Open the database with the specified "name".
   // Stores a pointer to a heap-allocated database in *dbptr and returns
@@ -147,13 +152,13 @@ class DB {
 
 // Destroy the contents of the specified database.
 // Be very careful using this method.
-Status DestroyDB(const std::string& name, const Options& options);
+EXPORT_API Status DestroyDB(const std::string& name, const Options& options);
 
 // If a DB cannot be opened, you may attempt to call this method to
 // resurrect as much of the contents of the database as possible.
 // Some data may be lost, so be careful when calling this function
 // on a database that contains important information.
-Status RepairDB(const std::string& dbname, const Options& options);
+EXPORT_API Status RepairDB(const std::string& dbname, const Options& options);
 
 }  // namespace leveldb
 
index 2720667..25ed0c8 100644 (file)
 #include <stdint.h>
 #include "leveldb/status.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 class FileLock;
@@ -28,7 +33,7 @@ class SequentialFile;
 class Slice;
 class WritableFile;
 
-class Env {
+class EXPORT_API Env {
  public:
   Env() { }
   virtual ~Env();
@@ -152,7 +157,7 @@ class Env {
 };
 
 // A file abstraction for reading sequentially through a file
-class SequentialFile {
+class EXPORT_API SequentialFile {
  public:
   SequentialFile() { }
   virtual ~SequentialFile();
@@ -178,7 +183,7 @@ class SequentialFile {
 };
 
 // A file abstraction for randomly reading the contents of a file.
-class RandomAccessFile {
+class EXPORT_API RandomAccessFile {
  public:
   RandomAccessFile() { }
   virtual ~RandomAccessFile();
@@ -199,7 +204,7 @@ class RandomAccessFile {
 // A file abstraction for sequential writing.  The implementation
 // must provide buffering since callers may append small fragments
 // at a time to the file.
-class WritableFile {
+class EXPORT_API WritableFile {
  public:
   WritableFile() { }
   virtual ~WritableFile();
@@ -216,7 +221,7 @@ class WritableFile {
 };
 
 // An interface for writing log messages.
-class Logger {
+class EXPORT_API Logger {
  public:
   Logger() { }
   virtual ~Logger();
@@ -232,7 +237,7 @@ class Logger {
 
 
 // Identifies a locked file.
-class FileLock {
+class EXPORT_API FileLock {
  public:
   FileLock() { }
   virtual ~FileLock();
@@ -243,24 +248,24 @@ class FileLock {
 };
 
 // Log the specified data to *info_log if info_log is non-NULL.
-extern void Log(Logger* info_log, const char* format, ...)
+EXPORT_API extern void Log(Logger* info_log, const char* format, ...)
 #   if defined(__GNUC__) || defined(__clang__)
     __attribute__((__format__ (__printf__, 2, 3)))
 #   endif
     ;
 
 // A utility routine: write "data" to the named file.
-extern Status WriteStringToFile(Env* env, const Slice& data,
+EXPORT_API extern Status WriteStringToFile(Env* env, const Slice& data,
                                 const std::string& fname);
 
 // A utility routine: read contents of named file into *data
-extern Status ReadFileToString(Env* env, const std::string& fname,
+EXPORT_API extern Status ReadFileToString(Env* env, const std::string& fname,
                                std::string* data);
 
 // An implementation of Env that forwards all calls to another Env.
 // May be useful to clients who wish to override just part of the
 // functionality of another Env.
-class EnvWrapper : public Env {
+class EXPORT_API EnvWrapper : public Env {
  public:
   // Initialize an EnvWrapper that delegates all calls to *t
   explicit EnvWrapper(Env* t) : target_(t) { }
index ad543eb..e5900ff 100644 (file)
 #include "leveldb/slice.h"
 #include "leveldb/status.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
-class Iterator {
+class EXPORT_API Iterator {
  public:
   Iterator();
   virtual ~Iterator();
@@ -90,10 +95,10 @@ class Iterator {
 };
 
 // Return an empty iterator (yields nothing).
-extern Iterator* NewEmptyIterator();
+EXPORT_API extern Iterator* NewEmptyIterator();
 
 // Return an empty iterator with the specified status.
-extern Iterator* NewErrorIterator(const Status& status);
+EXPORT_API extern Iterator* NewErrorIterator(const Status& status);
 
 }  // namespace leveldb
 
index 79111a0..af1fd1c 100644 (file)
@@ -7,6 +7,11 @@
 
 #include <stddef.h>
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 class Cache;
@@ -19,7 +24,7 @@ class Snapshot;
 // sequence of key,value pairs.  Each block may be compressed before
 // being stored in a file.  The following enum describes which
 // compression method (if any) is used to compress a block.
-enum CompressionType {
+enum EXPORT_API CompressionType {
   // NOTE: do not change the values of existing entries, as these are
   // part of the persistent format on disk.
   kNoCompression     = 0x0,
@@ -27,7 +32,7 @@ enum CompressionType {
 };
 
 // Options to control the behavior of a database (passed to DB::Open)
-struct Options {
+struct EXPORT_API Options {
   // -------------------
   // Parameters that affect behavior
 
@@ -132,7 +137,7 @@ struct Options {
 };
 
 // Options that control read operations
-struct ReadOptions {
+struct EXPORT_API ReadOptions {
   // If true, all data read from underlying storage will be
   // verified against corresponding checksums.
   // Default: false
@@ -158,7 +163,7 @@ struct ReadOptions {
 };
 
 // Options that control write operations
-struct WriteOptions {
+struct EXPORT_API WriteOptions {
   // If true, the write will be flushed from the operating system
   // buffer cache (by calling WritableFile::Sync()) before the write
   // is considered complete.  If this flag is true, writes will be
index 74ea8fa..2d27166 100644 (file)
 #include <string.h>
 #include <string>
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
-class Slice {
+class EXPORT_API Slice {
  public:
   // Create an empty slice.
   Slice() : data_(""), size_(0) { }
@@ -84,12 +89,12 @@ class Slice {
   // Intentionally copyable
 };
 
-inline bool operator==(const Slice& x, const Slice& y) {
+EXPORT_API inline bool operator==(const Slice& x, const Slice& y) {
   return ((x.size() == y.size()) &&
           (memcmp(x.data(), y.data(), x.size()) == 0));
 }
 
-inline bool operator!=(const Slice& x, const Slice& y) {
+EXPORT_API inline bool operator!=(const Slice& x, const Slice& y) {
   return !(x == y);
 }
 
index 3355fac..9127470 100644 (file)
 #include <string>
 #include "leveldb/slice.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
-class Status {
+class EXPORT_API Status {
  public:
   // Create a success status.
   Status() : state_(NULL) { }
index 0cbdd40..585b6bb 100644 (file)
@@ -8,6 +8,11 @@
 #include <stdint.h>
 #include "leveldb/iterator.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 class Block;
@@ -19,7 +24,7 @@ struct ReadOptions;
 // A Table is a sorted map from strings to strings.  Tables are
 // immutable and persistent.  A Table may be safely accessed from
 // multiple threads without external synchronization.
-class Table {
+class EXPORT_API Table {
  public:
   // Attempt to open the table that is stored in bytes [0..file_size)
   // of "file", and read the metadata entries necessary to allow
index 9ac0868..3c6e4b3 100644 (file)
 #include "leveldb/options.h"
 #include "leveldb/status.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 class BlockBuilder;
 class BlockHandle;
 class WritableFile;
 
-class TableBuilder {
+class EXPORT_API TableBuilder {
  public:
   // Create a builder that will store the contents of the table it is
   // building in *file.  Does not close the file.  It is up to the
index ee9aab6..7c0e010 100644 (file)
 #include <string>
 #include "leveldb/status.h"
 
+#ifndef EXPORT_API
+#define EXPORT_API
+#endif // EXPORT_API
+
+
 namespace leveldb {
 
 class Slice;
 
-class WriteBatch {
+class EXPORT_API WriteBatch {
  public:
   WriteBatch();
   ~WriteBatch();
index ab1ac70..42711c2 100644 (file)
@@ -38,8 +38,8 @@ Development Files.
 cp %{SOURCE1001} .
 
 %build
-export CFLAGS+=" -flto "
-export CXXFLAGS+=" -flto "
+export CFLAGS+=" -flto  -fvisibility=hidden -DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" "
+export CXXFLAGS+=" -flto  -fvisibility=hidden -DEXPORT_API=\"__attribute__((visibility(\\\"default\\\")))\" "
 
 make libdir=%{_libdir} %{?jobs:-j%jobs}