Преглед на файлове

API docs for oatpp-test/Checker.hpp oatpp-test/UnitTest.hpp. Better docs for code-get macros

lganzzzo преди 5 години
родител
ревизия
72178f61eb

+ 16 - 1
src/oatpp-test/Checker.cpp

@@ -25,7 +25,22 @@
 #include "Checker.hpp"
 
 namespace oatpp { namespace test {
-  
+
+PerformanceChecker::PerformanceChecker(const char* tag)
+  : m_tag(tag)
+  , m_ticks(oatpp::base::Environment::getMicroTickCount())
+{}
+
+PerformanceChecker::~PerformanceChecker(){
+  v_int64 elapsedTicks = oatpp::base::Environment::getMicroTickCount() - m_ticks;
+  OATPP_LOGD(m_tag, "%d(micro)", elapsedTicks);
+}
+
+v_int64 PerformanceChecker::getElapsedTicks(){
+  return oatpp::base::Environment::getMicroTickCount() - m_ticks;
+}
+
+
 ThreadLocalObjectsChecker::ThreadLocalObjectsChecker(const char* tag)
   : m_tag(tag)
   , m_objectsCount(oatpp::base::Environment::getThreadLocalObjectsCount())

+ 37 - 15
src/oatpp-test/Checker.hpp

@@ -28,28 +28,40 @@
 #include "oatpp/core/base/Environment.hpp"
 
 namespace oatpp { namespace test {
-  
+
+/**
+ * Helper class to check performance of code block.
+ */
 class PerformanceChecker {
 private:
   const char* m_tag;
   v_int64 m_ticks;
 public:
-  PerformanceChecker(const char* tag)
-    : m_tag(tag)
-    , m_ticks(oatpp::base::Environment::getMicroTickCount())
-  {}
-  
-  ~PerformanceChecker(){
-    v_int64 elapsedTicks = oatpp::base::Environment::getMicroTickCount() - m_ticks;
-    OATPP_LOGD(m_tag, "%d(micro)", elapsedTicks);
-  }
-  
-  v_int64 getElapsedTicks(){
-    return oatpp::base::Environment::getMicroTickCount() - m_ticks;
-  }
+
+  /**
+   * Constructor.
+   * @param tag - log tag.
+   */
+  PerformanceChecker(const char* tag);
+
+  /**
+   * Non virtual destructor.
+   * Will print time elapsed ticks on destruction.
+   */
+  ~PerformanceChecker();
+
+  /**
+   * Get elapsed time from checker creation.
+   * @return - ticks in microseconds.
+   */
+  v_int64 getElapsedTicks();
     
 };
-  
+
+/**
+ * Helper class to check block of code on memory leaks.
+ * Checks &id:oatpp::base::Countable; objects, and objects allocated on memory pools.
+ */
 class ThreadLocalObjectsChecker {
 private:
   class MemoryPoolData {
@@ -63,7 +75,17 @@ private:
   v_counter m_objectsCount;
   v_counter m_objectsCreated;
 public:
+
+  /**
+   * Constructor.
+   * @param tag - log tag.
+   */
   ThreadLocalObjectsChecker(const char* tag);
+
+  /**
+   * Non virtual destructor.
+   * Will halt program execution if memory leaks detected.
+   */
   ~ThreadLocalObjectsChecker();
 };
   

+ 38 - 8
src/oatpp-test/UnitTest.hpp

@@ -28,27 +28,51 @@
 #include "oatpp/core/base/Environment.hpp"
 
 namespace oatpp { namespace test {
-  
+
+/**
+ * Base class for unit tests.
+ */
 class UnitTest{
 protected:
   const char* const TAG;
 public:
 
+  /**
+   * Constructor.
+   * @param testTAG - tag used for logs.
+   */
   UnitTest(const char* testTAG)
     : TAG(testTAG)
   {}
-  
-  virtual ~UnitTest(){
-  }
-  
+
+  /**
+   * Default virtual destructor.
+   */
+  virtual ~UnitTest() = default;
+
+  /**
+   * Run this test repeatedly for specified number of times.
+   * @param times - number of times to run this test.
+   */
   void run(v_int32 times);
 
+  /**
+   * Run this test.
+   */
   void run(){
     run(1);
   }
-  
+
+  /**
+   * Override this method. It should contain test logic.
+   */
   virtual void onRun() = 0;
-  
+
+  /**
+   * Run this test repeatedly for specified number of times.
+   * @tparam T - Test class.
+   * @param times - number of times to run this test.
+   */
   template<class T>
   static void runTest(v_int32 times){
     T test;
@@ -57,7 +81,13 @@ public:
   
 };
 
-#define OATPP_RUN_TEST(TEST) oatpp::test::UnitTest::runTest<TEST>(1)
+/**
+ * Convenience macro to run test. <br>
+ * Usage Example:<br>
+ * `OATPP_RUN_TEST(oatpp::test::web::FullTest);`
+ */
+#define OATPP_RUN_TEST(TEST) \
+oatpp::test::UnitTest::runTest<TEST>(1)
   
 }}
 

+ 32 - 8
src/oatpp/codegen/codegen_define_ApiClient_.hpp

@@ -22,6 +22,26 @@
  *
  ***************************************************************************/
 
+/**[info]
+ * This file contains "defines" for ApiClient code generating macro. <br>
+ * Usage:<br>
+ *
+ * ```cpp
+ * #include OATPP_CODEGEN_BEGIN(ApiClient)
+ * ...
+ * // Generated API-Calls.
+ * ...
+ * #include OATPP_CODEGEN_END(ApiClient)
+ * ```
+ *
+ *
+ * *For details see:*
+ * <ul>
+ *   <li>[ApiClient component](https://oatpp.io/docs/components/api-client/)</li>
+ *   <li>&id:oatpp::web::client::ApiClient;</li>
+ * </ul>
+ */
+
 #include "oatpp/core/macro/basic.hpp"
 #include "oatpp/core/macro/codegen.hpp"
 
@@ -41,6 +61,10 @@
 
 // INIT
 
+/**
+ * Codegen macoro to be used in classes extending &id:oatpp::web::client::ApiClient; to generate required fields/methods/constructors for ApiClient.
+ * @param NAME - name of the ApiClient class.
+ */
 #define API_CLIENT_INIT(NAME) \
 public: \
   NAME(const std::shared_ptr<oatpp::web::client::RequestExecutor>& requestExecutor, \
@@ -178,10 +202,10 @@ OATPP_MACRO_FOREACH(OATPP_MACRO_API_CLIENT_PARAM_DECL, LIST) \
 
 /**
  * Codegen macoro to be used in `oatpp::web::client::ApiClient` to generate REST API-Calls.
- * @METHOD - Http method ("GET", "POST", "PUT", etc.)
- * @PATH - Path to endpoint (without host)
- * @NAME - Name of the generated method
- * @return - std::shared_ptr<oatpp::web::protocol::http::incoming::Response>
+ * @param METHOD - Http method ("GET", "POST", "PUT", etc.)
+ * @param PATH - Path to endpoint (without host)
+ * @param NAME - Name of the generated method
+ * @return - std::shared_ptr to &id:oatpp::web::protocol::http::incoming::Response;
  */
 #define API_CALL(METHOD, PATH, NAME, ...) \
 OATPP_API_CALL___(NAME, METHOD, PATH, (__VA_ARGS__))
@@ -248,10 +272,10 @@ oatpp::async::Action NAME(\
 
 /**
  * Codegen macoro to be used in `oatpp::web::client::ApiClient` to generate Asynchronous REST API-Calls.
- * @METHOD - Http method ("GET", "POST", "PUT", etc.)
- * @PATH - Path to endpoint (without host)
- * @NAME - Name of the generated method
- * @return - oatpp::async::Action
+ * @param METHOD - Http method ("GET", "POST", "PUT", etc.)
+ * @param PATH - Path to endpoint (without host)
+ * @param NAME - Name of the generated method
+ * @return - &id:oatpp::async::Action;
  */
 #define API_CALL_ASYNC(METHOD, PATH, NAME, ...) \
 OATPP_API_CALL_ASYNC___(NAME, METHOD, PATH, (__VA_ARGS__))

+ 29 - 8
src/oatpp/codegen/codegen_define_ApiController_.hpp

@@ -21,6 +21,27 @@
  * limitations under the License.
  *
  ***************************************************************************/
+
+/**[info]
+ * This file contains "defines" for ApiController code generating macro. <br>
+ * Usage:<br>
+ *
+ * ```cpp
+ * #include OATPP_CODEGEN_BEGIN(ApiController)
+ * ...
+ * // Generated Endpoints.
+ * ...
+ * #include OATPP_CODEGEN_END(ApiController)
+ * ```
+ *
+ *
+ * *For details see:*
+ * <ul>
+ *   <li>[ApiController component](https://oatpp.io/docs/components/api-controller/)</li>
+ *   <li>&id:oatpp::web::server::api::ApiController;</li>
+ * </ul>
+ */
+
 #include "oatpp/core/macro/basic.hpp"
 #include "oatpp/core/macro/codegen.hpp"
 
@@ -392,10 +413,10 @@ OATPP_MACRO_API_CONTROLLER_ENDPOINT__(OATPP_MACRO_HAS_ARGS LIST, NAME, METHOD, P
 
 /**
  * Codegen macoro to be used in `oatpp::web::server::api::ApiController` to generate Endpoint.
- * @METHOD - Http method ("GET", "POST", "PUT", etc.)
- * @PATH - Path to endpoint (without host)
- * @NAME - Name of the generated method
- * @return - std::shared_ptr<oatpp::web::protocol::http::outgoing::Response>
+ * @param METHOD - Http method ("GET", "POST", "PUT", etc.).
+ * @param PATH - Path to endpoint (without host).
+ * @param NAME - Name of the generated method.
+ * @return - std::shared_ptr to &id:oatpp::web::protocol::http::outgoing::Response;.
  */
 #define ENDPOINT(METHOD, PATH, NAME, ...) \
 OATPP_MACRO_API_CONTROLLER_ENDPOINT___(NAME, METHOD, PATH, (__VA_ARGS__))
@@ -443,10 +464,10 @@ const std::shared_ptr<Endpoint> Z__ENDPOINT_##NAME = createEndpoint(m_endpoints,
 
 /**
  * Codegen macoro to be used in `oatpp::web::server::api::ApiController` to generate Asynchronous Endpoint.
- * @METHOD - Http method ("GET", "POST", "PUT", etc.)
- * @PATH - Path to endpoint (without host)
- * @NAME - Name of the generated method
- * @return - oatpp::async::Action
+ * @param METHOD - Http method ("GET", "POST", "PUT", etc.).
+ * @param PATH - Path to endpoint (without host).
+ * @param NAME - Name of the generated method.
+ * @return - &id:oatpp::async::Action;.
  */
 #define ENDPOINT_ASYNC(METHOD, PATH, NAME) \
 OATPP_MACRO_API_CONTROLLER_ENDPOINT_ASYNC_DECL_DEFAULTS(NAME, METHOD, PATH) \

+ 26 - 6
src/oatpp/codegen/codegen_define_DTO_.hpp

@@ -22,15 +22,35 @@
  *
  ***************************************************************************/
 
+/**[info]
+ * This file contains "defines" for DTO code generating macro. <br>
+ * Usage:<br>
+ *
+ * ```cpp
+ * #include OATPP_CODEGEN_BEGIN(DTO)
+ * ...
+ * // Generated Endpoints.
+ * ...
+ * #include OATPP_CODEGEN_END(DTO)
+ * ```
+ *
+ *
+ * *For details see:*
+ * <ul>
+ *   <li>[Data Transfer Object(DTO) component](https://oatpp.io/docs/components/dto/)</li>
+ *   <li>&id:oatpp::data::mapping::type::Object;</li>
+ * </ul>
+ */
+
 #include "oatpp/core/macro/basic.hpp"
 #include "oatpp/core/macro/codegen.hpp"
 
 // Defaults
 
 /**
- * Codegen macoro to be used in `oatpp::data::mapping::type::Object` to generate required fields/methods/constructors for DTO object.
- * @TYPE_NAME - name of the DTO class.
- * @TYPE_EXTEND - name of the parent DTO class. If DTO extends `oatpp::data::mapping::type::Object` TYPE_EXETENDS should be `Object`.
+ * Codegen macoro to be used in classes extending &id:oatpp::data::mapping::type::Object; to generate required fields/methods/constructors for DTO object.
+ * @param TYPE_NAME - name of the DTO class.
+ * @param TYPE_EXTEND - name of the parent DTO class. If DTO extends &id:oatpp::data::mapping::type::Object; TYPE_EXETENDS should be `Object`.
  */
 #define DTO_INIT(TYPE_NAME, TYPE_EXTEND) \
 public: \
@@ -120,9 +140,9 @@ TYPE NAME
 
 /**
  * Codegen macro to generate fields of DTO object.
- * @TYPE - type of the field.
- * @NAME - name of the field.
- * @QUALIFIER_NAME - additional (optional) field to specify serialized name of the field. If not specified it will be same as NAME.
+ * @param TYPE - type of the field.
+ * @param NAME - name of the field.
+ * @param QUALIFIER_NAME - additional (optional) field to specify serialized name of the field. If not specified it will be same as NAME.
  */
 #define DTO_FIELD(TYPE, NAME, ...) \
 OATPP_MACRO_DTO_FIELD___(TYPE, NAME, (__VA_ARGS__))

+ 20 - 0
src/oatpp/codegen/codegen_undef_ApiClient_.hpp

@@ -22,6 +22,26 @@
  *
  ***************************************************************************/
 
+/**[info]
+ * This file contains "undefs" for ApiClient code generating macro. <br>
+ * Usage:<br>
+ *
+ * ```cpp
+ * #include OATPP_CODEGEN_BEGIN(ApiClient)
+ * ...
+ * // Generated API-Calls.
+ * ...
+ * #include OATPP_CODEGEN_END(ApiClient)
+ * ```
+ *
+ *
+ * *For details see:*
+ * <ul>
+ *   <li>[ApiClient component](https://oatpp.io/docs/components/api-client/)</li>
+ *   <li>&id:oatpp::web::client::ApiClient;</li>
+ * </ul>
+ */
+
 #undef OATPP_MACRO_API_CLIENT_PARAM_MACRO
 #undef OATPP_MACRO_API_CLIENT_PARAM_TYPE
 #undef OATPP_MACRO_API_CLIENT_PARAM_NAME

+ 20 - 0
src/oatpp/codegen/codegen_undef_ApiController_.hpp

@@ -22,6 +22,26 @@
  *
  ***************************************************************************/
 
+/**[info]
+ * This file contains "undefs" for ApiController code generating macro. <br>
+ * Usage:<br>
+ *
+ * ```cpp
+ * #include OATPP_CODEGEN_BEGIN(ApiController)
+ * ...
+ * // Generated Endpoints.
+ * ...
+ * #include OATPP_CODEGEN_END(ApiController)
+ * ```
+ *
+ *
+ * *For details see:*
+ * <ul>
+ *   <li>[ApiController component](https://oatpp.io/docs/components/api-controller/)</li>
+ *   <li>&id:oatpp::web::server::api::ApiController;</li>
+ * </ul>
+ */
+
 #undef OATPP_MACRO_API_CONTROLLER_PARAM_MACRO
 #undef OATPP_MACRO_API_CONTROLLER_PARAM_INFO
 #undef OATPP_MACRO_API_CONTROLLER_PARAM_TYPE

+ 20 - 0
src/oatpp/codegen/codegen_undef_DTO_.hpp

@@ -22,6 +22,26 @@
  *
  ***************************************************************************/
 
+/**[info]
+ * This file contains "undefs" for DTO code generating macro. <br>
+ * Usage:<br>
+ *
+ * ```cpp
+ * #include OATPP_CODEGEN_BEGIN(DTO)
+ * ...
+ * // Generated Endpoints.
+ * ...
+ * #include OATPP_CODEGEN_END(DTO)
+ * ```
+ *
+ *
+ * *For details see:*
+ * <ul>
+ *   <li>[Data Transfer Object(DTO) component](https://oatpp.io/docs/components/dto/)</li>
+ *   <li>&id:oatpp::data::mapping::type::Object;</li>
+ * </ul>
+ */
+
 #undef DTO_INIT
 
 // Fields

+ 153 - 11
src/oatpp/core/utils/ConversionUtils.hpp

@@ -35,26 +35,101 @@
 #include <string>
 
 namespace oatpp { namespace utils { namespace conversion {
-  
+
+  /**
+   * String to 32-bit integer.
+   * @param str - string as `const char*`.
+   * @return - 32-bit integer value.
+   */
   v_int32 strToInt32(const char* str);
+
+  /**
+   * String to 32-bit integer.
+   * @param str - string as `oatpp::String`.
+   * @param success - out parameter. `true` if operation was successful. `false` otherwise.
+   * @return - 32-bit integer value.
+   */
   v_int32 strToInt32(const oatpp::String& str, bool& success);
+
+  /**
+   * String to 64-bit integer.
+   * @param str - string as `const char*`.
+   * @return - 64-bit integer value.
+   */
   v_int64 strToInt64(const char* str);
+
+  /**
+   * String to 64-bit integer.
+   * @param str - string as `oatpp::String`.
+   * @param success - out parameter. `true` if operation was successful. `false` otherwise.
+   * @return - 64-bit integer value.
+   */
   v_int64 strToInt64(const oatpp::String& str, bool& success);
-  
+
+  /**
+   * Convert 32-bit integer to it's string representation.
+   * @param value - 32-bit integer value.
+   * @param data - buffer to write data to.
+   * @return - length of the resultant string.
+   */
   v_int32 int32ToCharSequence(v_int32 value, p_char8 data);
+
+ /**
+  * Convert 64-bit integer to it's string representation.
+  * @param value - 64-bit integer value.
+  * @param data - buffer to write data to.
+  * @return - length of the resultant string.
+  */
   v_int32 int64ToCharSequence(v_int64 value, p_char8 data);
-  
+
+  /**
+   * Convert 32-bit integer to it's string representation.
+   * @param value - 32-bit integer value.
+   * @return - value as `oatpp::String`
+   */
   oatpp::String int32ToStr(v_int32 value);
+
+  /**
+   * Convert 64-bit integer to it's string representation.
+   * @param value - 64-bit integer value.
+   * @return - value as `oatpp::String`
+   */
   oatpp::String int64ToStr(v_int64 value);
-  
+
+  /**
+   * Convert 32-bit integer to it's string representation.
+   * @param value - 32-bit integer value.
+   * @return - value as `std::string`
+   */
   std::string int32ToStdStr(v_int32 value);
+
+  /**
+   * Convert 64-bit integer to it's string representation.
+   * @param value - 64-bit integer value.
+   * @return - value as `std::string`
+   */
   std::string int64ToStdStr(v_int64 value);
-  
+
+  /**
+   * Write value of primitive type (int, float, etc.) as it's string representation with pattern.
+   * @tparam T - primitive value type (int, float, etc.).
+   * @param value - actual value.
+   * @param data - buffer to write data to.
+   * @param pattern - pattern as for `sprintf`.
+   * @return - length of the resultant string.
+   */
   template<typename T>
   v_int32 primitiveToCharSequence(T value, p_char8 data, const char* pattern){
     return sprintf((char*)data, pattern, value);
   }
-  
+
+  /**
+   * Write value of primitive type (int, float, etc.) as it's string representation with pattern.
+   * @tparam T - primitive value type (int, float, etc.).
+   * @param value - actual value.
+   * @param pattern - pattern as for `sprintf`.
+   * @return - length of the resultant string.
+   */
   template<typename T>
   oatpp::String primitiveToStr(T value, const char* pattern){
     v_char8 buff [100];
@@ -64,21 +139,88 @@ namespace oatpp { namespace utils { namespace conversion {
     }
     return oatpp::String::empty();
   }
-  
+
+  /**
+   * String to 32-bit float.
+   * @param str - string as `const char*`.
+   * @return - 32-bit float value.
+   */
   v_float32 strToFloat32(const char* str);
+
+  /**
+   * String to 32-bit float.
+   * @param str - string as `oatpp::String`.
+   * @param success - out parameter. `true` if operation was successful. `false` otherwise.
+   * @return - 32-bit float value.
+   */
   v_float32 strToFloat32(const oatpp::String& str, bool& success);
+
+  /**
+   * String to 64-bit float.
+   * @param str - string as `const char*`.
+   * @return - 64-bit float value.
+   */
   v_float64 strToFloat64(const char* str);
+
+  /**
+   * String to 64-bit float.
+   * @param str - string as `oatpp::String`.
+   * @param success - out parameter. `true` if operation was successful. `false` otherwise.
+   * @return - 64-bit float value.
+   */
   v_float64 strToFloat64(const oatpp::String& str, bool& success);
-  
+
+  /**
+   * Convert 32-bit float to it's string representation.
+   * @param value - 32-bit float value.
+   * @param data - buffer to write data to.
+   * @return - length of the resultant string.
+   */
   v_int32 float32ToCharSequence(v_float32 value, p_char8 data);
+
+  /**
+   * Convert 64-bit float to it's string representation.
+   * @param value - 64-bit float value.
+   * @param data - buffer to write data to.
+   * @return - length of the resultant string.
+   */
   v_int32 float64ToCharSequence(v_float64 value, p_char8 data);
-  
+
+  /**
+   * Convert 32-bit float to it's string representation.
+   * @param value - 32-bit float value.
+   * @return - value as `oatpp::String`
+   */
   oatpp::String float32ToStr(v_float32 value);
+
+  /**
+   * Convert 64-bit float to it's string representation.
+   * @param value - 64-bit float value.
+   * @return - value as `oatpp::String`
+   */
   oatpp::String float64ToStr(v_float64 value);
-  
+
+  /**
+   * Convert boolean to it's string representation.
+   * @param value - boolean value.
+   * @return - value as `oatpp::String`;
+   */
   oatpp::String boolToStr(bool value);
+
+  /**
+   * parse string to boolean value.
+   * @param str - string to parse.
+   * @param success - out parameter. `true` if operation was successful. `false` otherwise.
+   * @return - boolean value.
+   */
   bool strToBool(const oatpp::String& str, bool& success);
-  
+
+  /**
+   * Write value of oatpp-primitive type (oatpp::Int32, oatpp::Int64, oatpp::Boolean, etc.) as it's string representation.
+   * @tparam T - oatpp-primitive type (oatpp::Int32, oatpp::Int64, oatpp::Boolean, etc.).
+   * @param primitive - ObjectWrapper.
+   * @return - value as string.
+   */
   template<class T>
   oatpp::String
   primitiveToStr(const oatpp::data::mapping::type::PolymorphicWrapper<T>& primitive) {

+ 4 - 1
src/oatpp/web/client/ApiClient.hpp

@@ -50,7 +50,10 @@
 #include <unordered_map>
 
 namespace oatpp { namespace web { namespace client {
-  
+
+/**
+ * ApiClient class provides convenient Retrofit-like interface over the oatpp::web::client::RequestExecutor.
+ */
 class ApiClient : public oatpp::base::Countable {
 public:
   static constexpr const char* const TAG = "Client";

+ 30 - 4
src/oatpp/web/protocol/http/outgoing/Response.hpp

@@ -31,9 +31,16 @@
 #include "oatpp/core/async/Coroutine.hpp"
 
 namespace oatpp { namespace web { namespace protocol { namespace http { namespace outgoing {
-  
+
+/**
+ * Class which stores information of outgoing http Response.
+ */
 class Response : public oatpp::base::Countable, public std::enable_shared_from_this<Response> {
 public:
+  /**
+   * Convenience typedef for Headers. <br>
+   * See &id:oatpp::web::protocol::http::Protocol::Headers;
+   */
   typedef http::Protocol::Headers Headers;
 public:
   OBJECT_POOL(Outgoing_Response_Pool, Response, 32)
@@ -44,13 +51,32 @@ private:
   std::shared_ptr<Body> m_body;
   std::shared_ptr<oatpp::network::server::ConnectionHandler> m_connectionUpgradeHandler;
 public:
+  /**
+   * Constructor.
+   * @param status - http status.
+   * @param body - response body.
+   */
   Response(const Status& status, const std::shared_ptr<Body>& body);
 public:
-  
+
+  /**
+   * Create shared outgoing response with status and body.
+   * @param status - http status.
+   * @param body - response body.
+   * @return
+   */
   static std::shared_ptr<Response> createShared(const Status& status, const std::shared_ptr<Body>& body);
-  
+
+  /**
+   * Get status.
+   * @return - http status.
+   */
   const Status& getStatus() const;
-  
+
+  /**
+   * Get headers.
+   * @return - &id:oatpp::web::protocol::http::Protocol::Headers;
+   */
   Headers& getHeaders();
   
   void putHeader(const oatpp::data::share::StringKeyLabelCI_FAST& key, const oatpp::data::share::StringKeyLabel& value);

+ 7 - 3
src/oatpp/web/server/api/ApiController.hpp

@@ -39,7 +39,11 @@
 #include <unordered_map>
 
 namespace oatpp { namespace web { namespace server { namespace api {
-  
+
+/**
+ * Class responsible for implementation and management of endpoints.<br>
+ * For details see [ApiController](https://oatpp.io/docs/components/api-controller/).
+ */
 class ApiController : public oatpp::base::Countable {
 protected:
   typedef ApiController __ControllerType;
@@ -72,7 +76,7 @@ protected:
   typedef oatpp::async::Action (oatpp::async::AbstractCoroutine::*AsyncCallback)(const std::shared_ptr<OutgoingResponse>&);
 protected:
   
-  /**
+  /*
    * Endpoint Coroutine base class
    */
   template<class CoroutineT, class ControllerT>
@@ -90,7 +94,7 @@ protected:
     
   };
   
-  /**
+  /*
    * Handler which subscribes to specific URL in Router and delegates calls endpoints 
    */
   template<class T>