Skip to content
Permalink
Browse files
Migrate core source files to C++. Add yaml-cpp project as dependency (#…
…2207)

By updating to this commit, Linux users have to regenerate Makefiles by re-running the configure script.

* Added yaml-cpp project as a 3rdparty library
* Migrated source files core to C++
* Updated configure scripts
* Make Linux installations compile *.cpp files
* Made server components' main source file C++
* Also made headers CPP-aware.

* Added basic C wrapper for yaml-cpp library
* YAML-node path is delimited by periods.
* Basic integer types and string are supported.
* Strings returned from this wrapper have to be freed with malloc.h::aFree
* Arrays (sequence) is supported with iterator wrapper.
* Remember to free every wrapper you create!

* Add yaml-cpp as dependency of common project
* Made the repo not ignore *.yml files

Thanks to @aleos89 and @Lemongrass3110.
  • Loading branch information
secretdataz committed Jun 25, 2017
1 parent e804970 commit 4a2574c5994ef203ea35c69526a681b34bb97c3d
Showing with 12,109 additions and 76 deletions.
  1. +1 −1 .gitignore
  2. +42 −0 3rdparty/yaml-cpp/Makefile.in
  3. +17 −0 3rdparty/yaml-cpp/include/yaml-cpp/anchor.h
  4. +67 −0 3rdparty/yaml-cpp/include/yaml-cpp/binary.h
  5. +39 −0 3rdparty/yaml-cpp/include/yaml-cpp/contrib/anchordict.h
  6. +147 −0 3rdparty/yaml-cpp/include/yaml-cpp/contrib/graphbuilder.h
  7. +33 −0 3rdparty/yaml-cpp/include/yaml-cpp/dll.h
  8. +57 −0 3rdparty/yaml-cpp/include/yaml-cpp/emitfromevents.h
  9. +255 −0 3rdparty/yaml-cpp/include/yaml-cpp/emitter.h
  10. +16 −0 3rdparty/yaml-cpp/include/yaml-cpp/emitterdef.h
  11. +142 −0 3rdparty/yaml-cpp/include/yaml-cpp/emittermanip.h
  12. +16 −0 3rdparty/yaml-cpp/include/yaml-cpp/emitterstyle.h
  13. +40 −0 3rdparty/yaml-cpp/include/yaml-cpp/eventhandler.h
  14. +269 −0 3rdparty/yaml-cpp/include/yaml-cpp/exceptions.h
  15. +29 −0 3rdparty/yaml-cpp/include/yaml-cpp/mark.h
  16. +331 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/convert.h
  17. +26 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/bool_type.h
  18. +185 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/impl.h
  19. +91 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/iterator.h
  20. +27 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/iterator_fwd.h
  21. +46 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/memory.h
  22. +169 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/node.h
  23. +127 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/node_data.h
  24. +180 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/node_iterator.h
  25. +98 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/detail/node_ref.h
  26. +32 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/emit.h
  27. +448 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/impl.h
  28. +31 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/iterator.h
  29. +145 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/node.h
  30. +78 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/parse.h
  31. +29 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/ptr.h
  32. +16 −0 3rdparty/yaml-cpp/include/yaml-cpp/node/type.h
  33. +25 −0 3rdparty/yaml-cpp/include/yaml-cpp/noncopyable.h
  34. +26 −0 3rdparty/yaml-cpp/include/yaml-cpp/null.h
  35. +72 −0 3rdparty/yaml-cpp/include/yaml-cpp/ostream_wrapper.h
  36. +86 −0 3rdparty/yaml-cpp/include/yaml-cpp/parser.h
  37. +51 −0 3rdparty/yaml-cpp/include/yaml-cpp/stlemitter.h
  38. +103 −0 3rdparty/yaml-cpp/include/yaml-cpp/traits.h
  39. +24 −0 3rdparty/yaml-cpp/include/yaml-cpp/yaml.h
  40. +93 −0 3rdparty/yaml-cpp/src/binary.cpp
  41. +39 −0 3rdparty/yaml-cpp/src/collectionstack.h
  42. +17 −0 3rdparty/yaml-cpp/src/contrib/graphbuilder.cpp
  43. +94 −0 3rdparty/yaml-cpp/src/contrib/graphbuilderadapter.cpp
  44. +79 −0 3rdparty/yaml-cpp/src/contrib/graphbuilderadapter.h
  45. +75 −0 3rdparty/yaml-cpp/src/convert.cpp
  46. +22 −0 3rdparty/yaml-cpp/src/directives.cpp
  47. +29 −0 3rdparty/yaml-cpp/src/directives.h
  48. +25 −0 3rdparty/yaml-cpp/src/emit.cpp
  49. +119 −0 3rdparty/yaml-cpp/src/emitfromevents.cpp
  50. +929 −0 3rdparty/yaml-cpp/src/emitter.cpp
  51. +379 −0 3rdparty/yaml-cpp/src/emitterstate.cpp
  52. +207 −0 3rdparty/yaml-cpp/src/emitterstate.h
  53. +504 −0 3rdparty/yaml-cpp/src/emitterutils.cpp
  54. +54 −0 3rdparty/yaml-cpp/src/emitterutils.h
  55. +19 −0 3rdparty/yaml-cpp/src/exceptions.cpp
  56. +136 −0 3rdparty/yaml-cpp/src/exp.cpp
  57. +222 −0 3rdparty/yaml-cpp/src/exp.h
  58. +41 −0 3rdparty/yaml-cpp/src/indentation.h
  59. +26 −0 3rdparty/yaml-cpp/src/memory.cpp
  60. +12 −0 3rdparty/yaml-cpp/src/node.cpp
  61. +300 −0 3rdparty/yaml-cpp/src/node_data.cpp
  62. +130 −0 3rdparty/yaml-cpp/src/nodebuilder.cpp
  63. +70 −0 3rdparty/yaml-cpp/src/nodebuilder.h
  64. +101 −0 3rdparty/yaml-cpp/src/nodeevents.cpp
  65. +64 −0 3rdparty/yaml-cpp/src/nodeevents.h
  66. +10 −0 3rdparty/yaml-cpp/src/null.cpp
  67. +57 −0 3rdparty/yaml-cpp/src/ostream_wrapper.cpp
  68. +72 −0 3rdparty/yaml-cpp/src/parse.cpp
  69. +129 −0 3rdparty/yaml-cpp/src/parser.cpp
  70. +43 −0 3rdparty/yaml-cpp/src/ptr_vector.h
  71. +45 −0 3rdparty/yaml-cpp/src/regex_yaml.cpp
  72. +87 −0 3rdparty/yaml-cpp/src/regex_yaml.h
  73. +186 −0 3rdparty/yaml-cpp/src/regeximpl.h
  74. +386 −0 3rdparty/yaml-cpp/src/scanner.cpp
  75. +190 −0 3rdparty/yaml-cpp/src/scanner.h
  76. +250 −0 3rdparty/yaml-cpp/src/scanscalar.cpp
  77. +63 −0 3rdparty/yaml-cpp/src/scanscalar.h
  78. +81 −0 3rdparty/yaml-cpp/src/scantag.cpp
  79. +19 −0 3rdparty/yaml-cpp/src/scantag.h
  80. +437 −0 3rdparty/yaml-cpp/src/scantoken.cpp
  81. +95 −0 3rdparty/yaml-cpp/src/setting.h
  82. +128 −0 3rdparty/yaml-cpp/src/simplekey.cpp
  83. +414 −0 3rdparty/yaml-cpp/src/singledocparser.cpp
  84. +65 −0 3rdparty/yaml-cpp/src/singledocparser.h
  85. +448 −0 3rdparty/yaml-cpp/src/stream.cpp
  86. +76 −0 3rdparty/yaml-cpp/src/stream.h
  87. +48 −0 3rdparty/yaml-cpp/src/streamcharsource.h
  88. +48 −0 3rdparty/yaml-cpp/src/stringsource.h
  89. +49 −0 3rdparty/yaml-cpp/src/tag.cpp
  90. +33 −0 3rdparty/yaml-cpp/src/tag.h
  91. +69 −0 3rdparty/yaml-cpp/src/token.h
  92. +208 −0 3rdparty/yaml-cpp/yaml-cpp.vcxproj
  93. +177 −0 3rdparty/yaml-cpp/yaml-cpp.vcxproj.filters
  94. +5 −0 Makefile.in
  95. +2 −1 configure
  96. +1 −1 configure.in
  97. +12 −0 rAthena.sln
  98. +8 −2 src/char/Makefile.in
  99. +7 −5 src/char/char-server.vcxproj
  100. +1 −1 src/char/char-server.vcxproj.filters
  101. +9 −7 src/char/{char.c → char.cpp}
  102. +7 −0 src/char/char.h
  103. +8 −0 src/char/int_elemental.h
  104. +10 −0 src/char/int_guild.h
  105. +8 −0 src/char/int_homun.h
  106. +8 −0 src/char/int_mail.h
  107. +8 −0 src/char/int_mercenary.h
  108. +8 −0 src/char/int_party.h
  109. +8 −0 src/char/int_pet.h
  110. +8 −0 src/char/int_storage.h
  111. +8 −0 src/char/inter.h
  112. +2 −2 src/common/cbasetypes.h
  113. +7 −1 src/common/common-minicore.vcxproj
  114. +1 −1 src/common/common-minicore.vcxproj.filters
  115. +10 −6 src/common/common.vcxproj
  116. +10 −4 src/common/common.vcxproj.filters
  117. 0 src/common/{core.c → core.cpp}
  118. +8 −0 src/common/grfio.h
  119. +8 −0 src/common/mapindex.h
  120. +8 −0 src/common/md5calc.h
  121. +7 −0 src/common/nullpo.h
  122. +8 −0 src/common/random.h
  123. +8 −0 src/common/utils.h
  124. +145 −0 src/common/yamlwrapper.cpp
  125. +82 −0 src/common/yamlwrapper.h
  126. +7 −1 src/login/Makefile.in
  127. +7 −0 src/login/account.h
  128. +8 −0 src/login/ipban.h
  129. +8 −6 src/login/login-server.vcxproj
  130. +4 −4 src/login/login-server.vcxproj.filters
  131. +4 −2 src/login/{login.c → login.cpp}
  132. +8 −0 src/login/login.h
  133. +8 −2 src/map/Makefile.in
  134. +8 −0 src/map/atcommand.h
  135. +8 −0 src/map/battle.h
  136. +8 −0 src/map/battleground.h
  137. +8 −0 src/map/buyingstore.h
  138. +8 −0 src/map/cashshop.h
  139. +1 −1 src/map/chrif.c
  140. +9 −1 src/map/chrif.h
  141. +8 −0 src/map/clan.h
  142. +8 −0 src/map/clif.h
  143. +8 −0 src/map/elemental.h
  144. +8 −0 src/map/guild.h
  145. +8 −0 src/map/homunculus.h
  146. +8 −0 src/map/instance.h
  147. +8 −0 src/map/intif.h
  148. +8 −0 src/map/itemdb.h
  149. +8 −0 src/map/log.h
  150. +8 −0 src/map/mail.h
  151. +7 −5 src/map/map-server.vcxproj
  152. +1 −1 src/map/map-server.vcxproj.filters
  153. +24 −17 src/map/{map.c → map.cpp}
  154. +8 −0 src/map/map.h
  155. +8 −0 src/map/mapreg.h
  156. +8 −0 src/map/mercenary.h
  157. +8 −0 src/map/mob.h
  158. +8 −0 src/map/npc.h
  159. +8 −0 src/map/party.h
  160. +8 −0 src/map/path.h
  161. +2 −0 src/map/pc.c
  162. +11 −2 src/map/pc.h
  163. +8 −0 src/map/pet.h
  164. +8 −0 src/map/quest.h
  165. +8 −0 src/map/script.h
  166. +8 −0 src/map/searchstore.h
  167. +8 −0 src/map/skill.h
  168. +8 −2 src/map/status.h
  169. +8 −0 src/map/storage.h
  170. +8 −0 src/map/trade.h
  171. +7 −0 src/map/unit.h
  172. +8 −0 src/map/vending.h
@@ -27,7 +27,7 @@ Thumbs.db
/*.suo
*.o
*.a
*.yml
*.vcxproj.user
/char-server
/config.log
/config.status
@@ -0,0 +1,42 @@

YAML_CPP_OBJ = $(shell find * -type f -name "*.cpp" | sed -e "s/\.cpp/\.o/g")
YAML_CPP_DIR_OBJ = $(YAML_CPP_OBJ:%=obj/%)
YAML_CPP_H = $(shell find * -type f -name "*.h")
YAML_CPP_AR = obj/yaml-cpp.a

CXXFLAG =-std=c++11
INC=-Iinclude

@SET_MAKE@

#####################################################################
.PHONY : all clean help yaml-cpp

all: yaml-cpp

clean:
@echo " CLEAN yaml-cpp"
@rm -rf obj *.o

help:
@echo "possible targets are 'all' 'clean' 'help'"
@echo "'yaml-cpp' - build $(YAML_CPP_AR)
@echo "'all' - builds $(YAML_CPP_DIR_OBJ)"
@echo "'clean' - deletes $(YAML_CPP_DIR_OBJ)"
@echo "'help' - outputs this message"

#####################################################################

obj:
@echo " MKDIR obj/src/contrib"
@mkdir -p obj/src/contrib

obj/%.o: %.cpp $(YAML_CPP_H)
@echo " CXX $<"
@@CXX@ $(CXXFLAG) @CFLAGS_AR@ @CPPFLAGS@ -g $(INC) -c $(OUTPUT_OPTION) $<

yaml-cpp: obj $(YAML_CPP_DIR_OBJ) $(YAML_CPP_AR)

$(YAML_CPP_AR): $(YAML_CPP_DIR_OBJ)
@echo " AR $@"
@@AR@ rcs obj/yaml-cpp.a $(YAML_CPP_DIR_OBJ)
@@ -0,0 +1,17 @@
#ifndef ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66

#if defined(_MSC_VER) || \
(defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
(__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
#pragma once
#endif

#include <cstddef>

namespace YAML {
typedef std::size_t anchor_t;
const anchor_t NullAnchor = 0;
}

#endif // ANCHOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66
@@ -0,0 +1,67 @@
#ifndef BASE64_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define BASE64_H_62B23520_7C8E_11DE_8A39_0800200C9A66

#if defined(_MSC_VER) || \
(defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
(__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
#pragma once
#endif

#include <string>
#include <vector>

#include "yaml-cpp/dll.h"

namespace YAML {
YAML_CPP_API std::string EncodeBase64(const unsigned char *data,
std::size_t size);
YAML_CPP_API std::vector<unsigned char> DecodeBase64(const std::string &input);

class YAML_CPP_API Binary {
public:
Binary() : m_unownedData(0), m_unownedSize(0) {}
Binary(const unsigned char *data_, std::size_t size_)
: m_unownedData(data_), m_unownedSize(size_) {}

bool owned() const { return !m_unownedData; }
std::size_t size() const { return owned() ? m_data.size() : m_unownedSize; }
const unsigned char *data() const {
return owned() ? &m_data[0] : m_unownedData;
}

void swap(std::vector<unsigned char> &rhs) {
if (m_unownedData) {
m_data.swap(rhs);
rhs.clear();
rhs.resize(m_unownedSize);
std::copy(m_unownedData, m_unownedData + m_unownedSize, rhs.begin());
m_unownedData = 0;
m_unownedSize = 0;
} else {
m_data.swap(rhs);
}
}

bool operator==(const Binary &rhs) const {
const std::size_t s = size();
if (s != rhs.size())
return false;
const unsigned char *d1 = data();
const unsigned char *d2 = rhs.data();
for (std::size_t i = 0; i < s; i++) {
if (*d1++ != *d2++)
return false;
}
return true;
}

bool operator!=(const Binary &rhs) const { return !(*this == rhs); }

private:
std::vector<unsigned char> m_data;
const unsigned char *m_unownedData;
std::size_t m_unownedSize;
};
}

#endif // BASE64_H_62B23520_7C8E_11DE_8A39_0800200C9A66
@@ -0,0 +1,39 @@
#ifndef ANCHORDICT_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define ANCHORDICT_H_62B23520_7C8E_11DE_8A39_0800200C9A66

#if defined(_MSC_VER) || \
(defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
(__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
#pragma once
#endif

#include <vector>

#include "../anchor.h"

namespace YAML {
/**
* An object that stores and retrieves values correlating to {@link anchor_t}
* values.
*
* <p>Efficient implementation that can make assumptions about how
* {@code anchor_t} values are assigned by the {@link Parser} class.
*/
template <class T>
class AnchorDict {
public:
void Register(anchor_t anchor, T value) {
if (anchor > m_data.size()) {
m_data.resize(anchor);
}
m_data[anchor - 1] = value;
}

T Get(anchor_t anchor) const { return m_data[anchor - 1]; }

private:
std::vector<T> m_data;
};
}

#endif // ANCHORDICT_H_62B23520_7C8E_11DE_8A39_0800200C9A66
@@ -0,0 +1,147 @@
#ifndef GRAPHBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define GRAPHBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66

#if defined(_MSC_VER) || \
(defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
(__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
#pragma once
#endif

#include "yaml-cpp/mark.h"
#include <string>

namespace YAML {
class Parser;

// GraphBuilderInterface
// . Abstraction of node creation
// . pParentNode is always NULL or the return value of one of the NewXXX()
// functions.
class GraphBuilderInterface {
public:
// Create and return a new node with a null value.
virtual void *NewNull(const Mark &mark, void *pParentNode) = 0;

// Create and return a new node with the given tag and value.
virtual void *NewScalar(const Mark &mark, const std::string &tag,
void *pParentNode, const std::string &value) = 0;

// Create and return a new sequence node
virtual void *NewSequence(const Mark &mark, const std::string &tag,
void *pParentNode) = 0;

// Add pNode to pSequence. pNode was created with one of the NewXxx()
// functions and pSequence with NewSequence().
virtual void AppendToSequence(void *pSequence, void *pNode) = 0;

// Note that no moew entries will be added to pSequence
virtual void SequenceComplete(void *pSequence) { (void)pSequence; }

// Create and return a new map node
virtual void *NewMap(const Mark &mark, const std::string &tag,
void *pParentNode) = 0;

// Add the pKeyNode => pValueNode mapping to pMap. pKeyNode and pValueNode
// were created with one of the NewXxx() methods and pMap with NewMap().
virtual void AssignInMap(void *pMap, void *pKeyNode, void *pValueNode) = 0;

// Note that no more assignments will be made in pMap
virtual void MapComplete(void *pMap) { (void)pMap; }

// Return the node that should be used in place of an alias referencing
// pNode (pNode by default)
virtual void *AnchorReference(const Mark &mark, void *pNode) {
(void)mark;
return pNode;
}
};

// Typesafe wrapper for GraphBuilderInterface. Assumes that Impl defines
// Node, Sequence, and Map types. Sequence and Map must derive from Node
// (unless Node is defined as void). Impl must also implement function with
// all of the same names as the virtual functions in GraphBuilderInterface
// -- including the ones with default implementations -- but with the
// prototypes changed to accept an explicit Node*, Sequence*, or Map* where
// appropriate.
template <class Impl>
class GraphBuilder : public GraphBuilderInterface {
public:
typedef typename Impl::Node Node;
typedef typename Impl::Sequence Sequence;
typedef typename Impl::Map Map;

GraphBuilder(Impl &impl) : m_impl(impl) {
Map *pMap = NULL;
Sequence *pSeq = NULL;
Node *pNode = NULL;

// Type consistency checks
pNode = pMap;
pNode = pSeq;
}

GraphBuilderInterface &AsBuilderInterface() { return *this; }

virtual void *NewNull(const Mark &mark, void *pParentNode) {
return CheckType<Node>(m_impl.NewNull(mark, AsNode(pParentNode)));
}

virtual void *NewScalar(const Mark &mark, const std::string &tag,
void *pParentNode, const std::string &value) {
return CheckType<Node>(
m_impl.NewScalar(mark, tag, AsNode(pParentNode), value));
}

virtual void *NewSequence(const Mark &mark, const std::string &tag,
void *pParentNode) {
return CheckType<Sequence>(
m_impl.NewSequence(mark, tag, AsNode(pParentNode)));
}
virtual void AppendToSequence(void *pSequence, void *pNode) {
m_impl.AppendToSequence(AsSequence(pSequence), AsNode(pNode));
}
virtual void SequenceComplete(void *pSequence) {
m_impl.SequenceComplete(AsSequence(pSequence));
}

virtual void *NewMap(const Mark &mark, const std::string &tag,
void *pParentNode) {
return CheckType<Map>(m_impl.NewMap(mark, tag, AsNode(pParentNode)));
}
virtual void AssignInMap(void *pMap, void *pKeyNode, void *pValueNode) {
m_impl.AssignInMap(AsMap(pMap), AsNode(pKeyNode), AsNode(pValueNode));
}
virtual void MapComplete(void *pMap) { m_impl.MapComplete(AsMap(pMap)); }

virtual void *AnchorReference(const Mark &mark, void *pNode) {
return CheckType<Node>(m_impl.AnchorReference(mark, AsNode(pNode)));
}

private:
Impl &m_impl;

// Static check for pointer to T
template <class T, class U>
static T *CheckType(U *p) {
return p;
}

static Node *AsNode(void *pNode) { return static_cast<Node *>(pNode); }
static Sequence *AsSequence(void *pSeq) {
return static_cast<Sequence *>(pSeq);
}
static Map *AsMap(void *pMap) { return static_cast<Map *>(pMap); }
};

void *BuildGraphOfNextDocument(Parser &parser,
GraphBuilderInterface &graphBuilder);

template <class Impl>
typename Impl::Node *BuildGraphOfNextDocument(Parser &parser, Impl &impl) {
GraphBuilder<Impl> graphBuilder(impl);
return static_cast<typename Impl::Node *>(
BuildGraphOfNextDocument(parser, graphBuilder));
}
}

#endif // GRAPHBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
@@ -0,0 +1,33 @@
#ifndef DLL_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define DLL_H_62B23520_7C8E_11DE_8A39_0800200C9A66

#if defined(_MSC_VER) || \
(defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
(__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4
#pragma once
#endif

// The following ifdef block is the standard way of creating macros which make
// exporting from a DLL simpler. All files within this DLL are compiled with the
// yaml_cpp_EXPORTS symbol defined on the command line. This symbol should not
// be defined on any project that uses this DLL. This way any other project
// whose source files include this file see YAML_CPP_API functions as being
// imported from a DLL, whereas this DLL sees symbols defined with this macro as
// being exported.
#undef YAML_CPP_API

#ifdef YAML_CPP_DLL // Using or Building YAML-CPP DLL (definition defined
// manually)
#ifdef yaml_cpp_EXPORTS // Building YAML-CPP DLL (definition created by CMake
// or defined manually)
// #pragma message( "Defining YAML_CPP_API for DLL export" )
#define YAML_CPP_API __declspec(dllexport)
#else // yaml_cpp_EXPORTS
// #pragma message( "Defining YAML_CPP_API for DLL import" )
#define YAML_CPP_API __declspec(dllimport)
#endif // yaml_cpp_EXPORTS
#else // YAML_CPP_DLL
#define YAML_CPP_API
#endif // YAML_CPP_DLL

#endif // DLL_H_62B23520_7C8E_11DE_8A39_0800200C9A66

0 comments on commit 4a2574c

Please sign in to comment.