// Copyright 2014 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef LIBCHROMEOS_CHROMEOS_CHROMEOS_EXPORT_H_
#define LIBCHROMEOS_CHROMEOS_CHROMEOS_EXPORT_H_

// Use CHROMEOS_EXPORT attribute to decorate your classes, methods and variables
// that need to be exported out of libchromeos. By default, any symbol not
// explicitly marked with CHROMEOS_EXPORT attribute is not exported.

// Put CHROMEOS_EXPORT in front of methods or variables and in between the
// class and the tag name:
/*

CHROMEOS_EXPORT void foo();

class CHROMEOS_EXPORT Bar {
 public:
  void baz();  // Exported since it is a member of an exported class.
};

*/

// Exporting a class automatically exports all of its members. However there are
// no export entries for non-static member variables since they are not accessed
// directly, but rather through "this" pointer. Class methods, type information,
// virtual table (if any), and static member variables are exported.

// Finally, template functions and template members of a class may not be
// inlined by the compiler automatically and the out-of-line version will not
// be exported and fail to link. Marking those inline explicitly might help.
// Alternatively, exporting specific instantiation of the template could be
// used with "extern template" and combining this with CHROMEOS_EXPORT.
#define CHROMEOS_EXPORT __attribute__((__visibility__("default")))

// On occasion you might need to disable exporting a particular symbol if
// you don't want the clients to see it. For example, you can explicitly
// hide a member of an exported class:
/*

class CHROMEOS_EXPORT Foo {
 public:
  void bar();  // Exported since it is a member of an exported class.

 private:
  CHROMEOS_PRIVATE void baz();  // Explicitly removed from export table.
};

*/

// Note that even though a class may have a private member it doesn't mean
// that it must not be exported, since the compiler might still need it.
// For example, an inline public method calling a private method will not link
// if that private method is not exported.
// So be careful with hiding members if you don't want to deal with obscure
// linker errors.
#define CHROMEOS_PRIVATE __attribute__((__visibility__("hidden")))

#endif  // LIBCHROMEOS_CHROMEOS_CHROMEOS_EXPORT_H_
