eolian: add @internal qualifier 98/90098/2
authorJee-Yong Um <conr2d@gmail.com>
Wed, 28 Sep 2016 09:28:19 +0000 (18:28 +0900)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Thu, 29 Sep 2016 06:00:34 +0000 (23:00 -0700)
Signed-Off-By: Jee-Yong Um <jc9.um@samsung.com>
Change-Id: I094eb95760dcb578751946e93d851b9456024eb8

src/bin/eolian/docs_generator.c
src/bin/eolian/docs_generator.h
src/bin/eolian/eo_generator.c
src/bin/eolian/legacy_generator.c
src/lib/eolian/Eolian.h
src/lib/eolian/database_function_api.c
src/lib/eolian/eo_lexer.h
src/lib/eolian/eo_parser.c
src/lib/eolian/eolian_database.h

index eb008bd..4f90602 100644 (file)
@@ -257,11 +257,14 @@ _append_group(Eina_Strbuf *buf, char *sgrp, int indent)
 
 static void
 _gen_doc_brief(const char *summary, const char *since, const char *group,
-               int indent, Eina_Strbuf *buf, Eina_Bool use_legacy)
+               int indent, Eina_Strbuf *buf, Eina_Bool use_legacy, Eina_Bool is_internal)
 {
    int curl = 4 + indent;
    Eina_Strbuf *wbuf = eina_strbuf_new();
-   eina_strbuf_append(buf, "/** ");
+   if (!is_internal)
+     eina_strbuf_append(buf, "/** ");
+   else
+     eina_strbuf_append(buf, "/**\n * @internal\n *\n * ");
    curl = _append_section(summary, indent, curl, buf, wbuf, use_legacy);
    eina_strbuf_free(wbuf);
    curl = _append_since(since, indent, curl, buf);
@@ -324,7 +327,7 @@ docs_generate_full(const Eolian_Documentation *doc, const char *group,
 
    Eina_Strbuf *buf = eina_strbuf_new();
    if (!desc)
-     _gen_doc_brief(sum, since, group, indent, buf, use_legacy);
+     _gen_doc_brief(sum, since, group, indent, buf, use_legacy, EINA_FALSE);
    else
      _gen_doc_full(sum, desc, since, group, indent, buf, use_legacy);
    return buf;
@@ -332,7 +335,7 @@ docs_generate_full(const Eolian_Documentation *doc, const char *group,
 
 Eina_Strbuf *
 docs_generate_function(const Eolian_Function *fid, Eolian_Function_Type ftype,
-                       int indent, Eina_Bool use_legacy)
+                       int indent, Eina_Bool use_legacy, Eina_Bool is_internal)
 {
    const Eolian_Function_Parameter *par = NULL;
    const Eolian_Function_Parameter *vpar = NULL;
@@ -448,13 +451,19 @@ docs_generate_function(const Eolian_Function *fid, Eolian_Function_Type ftype,
    if (!desc && !par && !vpar && !rdoc && (ftype == EOLIAN_METHOD || !pdoc))
      {
         _gen_doc_brief(sum ? sum : "No description supplied.", since, group,
-                       indent, buf, use_legacy);
+                       indent, buf, use_legacy, is_internal);
         return buf;
      }
 
    wbuf = eina_strbuf_new();
 
    eina_strbuf_append(buf, "/**\n");
+   if (is_internal)
+     {
+        curl += _indent_line(buf, indent);
+        eina_strbuf_append(buf, " * @internal\n *\n");
+        curl += sizeof(" * @internal \n *\n");
+     }
    curl += _indent_line(buf, indent);
    eina_strbuf_append(buf, " * @brief ");
    curl += sizeof(" * @brief ") - 1;
index 8286f7d..27fd25a 100644 (file)
@@ -28,7 +28,7 @@ Eina_Strbuf *docs_generate_full(const Eolian_Documentation *doc, const char *gro
  * @return A documentation comment
  *
  */
-Eina_Strbuf *docs_generate_function(const Eolian_Function *fid, Eolian_Function_Type ftype, int indent, Eina_Bool use_legacy);
+Eina_Strbuf *docs_generate_function(const Eolian_Function *fid, Eolian_Function_Type ftype, int indent, Eina_Bool use_legacy, Eina_Bool is_internal);
 
 #endif
 
index 2e4f545..aa16879 100644 (file)
@@ -93,7 +93,8 @@ eo_fundef_generate(const Eolian_Class *class, const Eolian_Function *func, Eolia
                           eolian_function_documentation_get(func, ftype);
    if (hasnewdocs)
      {
-        Eina_Strbuf *dbuf = docs_generate_function(func, ftype, 0, EINA_FALSE);
+        Eina_Bool is_internal = eolian_function_is_internal(func);
+        Eina_Strbuf *dbuf = docs_generate_function(func, ftype, 0, EINA_FALSE, is_internal);
         eina_strbuf_append(str_func, eina_strbuf_string_get(dbuf));
         eina_strbuf_append_char(str_func, '\n');
         eina_strbuf_free(dbuf);
index 18b4506..35a6505 100644 (file)
@@ -80,7 +80,9 @@ _eapi_decl_func_generate(const Eolian_Class *class, const Eolian_Function *funci
                           eolian_function_documentation_get(funcid, ftype);
    if (hasnewdocs)
      {
-        Eina_Strbuf *dbuf = docs_generate_function(funcid, ftype, 0, EINA_TRUE);
+        Eina_Bool is_internal = eolian_function_is_internal(funcid);
+        Eina_Strbuf *dbuf = docs_generate_function(funcid, ftype, 0, EINA_TRUE, is_internal);
+
         eina_strbuf_append_char(fbody, '\n');
         eina_strbuf_append(fbody, eina_strbuf_string_get(dbuf));
         eina_strbuf_append_char(fbody, '\n');
index 0faefd4..e05d5ca 100644 (file)
@@ -765,6 +765,16 @@ EAPI Eina_Bool eolian_function_is_c_only(const Eolian_Function *function_id);
 EAPI Eina_Bool eolian_function_is_beta(const Eolian_Function *function_id);
 
 /*
+ * @brief Get whether a function is internal.
+ *
+ * @param[in] function_id Id of the function
+ * @return EINA_TRUE and EINA_FALSE respectively
+ *
+ * @ingroup Eolian
+ */
+EAPI Eina_Bool eolian_function_is_internal(const Eolian_Function *function_id);
+
+/*
  * @brief Indicates if a function is a constructing function of a given class.
  *
  * @param[in] klass the class
index 31bc862..c115084 100644 (file)
@@ -334,6 +334,13 @@ eolian_function_is_beta(const Eolian_Function *fid)
    return fid->is_beta;
 }
 
+EAPI Eina_Bool
+eolian_function_is_internal(const Eolian_Function *fid)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(fid, EINA_FALSE);
+   return fid->is_internal;
+}
+
 EAPI Eina_Bool eolian_function_is_implemented(
       const Eolian_Function *function_id, Eolian_Function_Type func_type,
       const Eolian_Class *klass)
index 8bb8f68..56d4caf 100644 (file)
@@ -33,6 +33,7 @@ enum Tokens
     KWAT(free), KWAT(in), KWAT(inout), KWAT(nonull), KWAT(nullable), \
     KWAT(optional), KWAT(out), KWAT(private), KWAT(property), \
     KWAT(protected), KWAT(virtual), KWAT(warn_unused), \
+    KWAT(internal), \
     \
     KW(byte), KW(ubyte), KW(char), KW(short), KW(ushort), KW(int), KW(uint), \
     KW(long), KW(ulong), KW(llong), KW(ullong), \
@@ -205,4 +206,4 @@ void eo_lexer_context_pop    (Eo_Lexer *ls);
 void eo_lexer_context_restore(Eo_Lexer *ls);
 void eo_lexer_context_clear  (Eo_Lexer *ls);
 
-#endif /* __EO_LEXER_H__ */
\ No newline at end of file
+#endif /* __EO_LEXER_H__ */
index 53dbe32..f5bc93d 100644 (file)
@@ -1183,7 +1183,8 @@ parse_property(Eo_Lexer *ls)
    Eina_Bool has_get       = EINA_FALSE, has_set    = EINA_FALSE,
              has_keys      = EINA_FALSE, has_values = EINA_FALSE,
              has_protected = EINA_FALSE, has_class  = EINA_FALSE,
-             has_c_only    = EINA_FALSE, has_beta   = EINA_FALSE;
+             has_c_only    = EINA_FALSE, has_beta   = EINA_FALSE,
+             has_internal  = EINA_FALSE;
    prop = calloc(1, sizeof(Eolian_Function));
    prop->klass = ls->tmp.kls;
    prop->type = EOLIAN_UNRESOLVED;
@@ -1214,6 +1215,11 @@ parse_property(Eo_Lexer *ls)
         prop->is_beta = EINA_TRUE;
         eo_lexer_get(ls);
         break;
+      case KW_at_internal:
+        CASE_LOCK(ls, internal, "internal qualifier");
+        prop->is_internal = EINA_TRUE;
+        eo_lexer_get(ls);
+        break;
       default:
         goto body;
      }
@@ -1259,7 +1265,7 @@ parse_method(Eo_Lexer *ls)
              has_return      = EINA_FALSE, has_legacy = EINA_FALSE,
              has_protected   = EINA_FALSE, has_class  = EINA_FALSE,
              has_eo          = EINA_FALSE, has_c_only = EINA_FALSE,
-             has_beta        = EINA_FALSE;
+             has_beta        = EINA_FALSE, has_internal = EINA_FALSE;
    meth = calloc(1, sizeof(Eolian_Function));
    meth->klass = ls->tmp.kls;
    meth->type = EOLIAN_METHOD;
@@ -1295,6 +1301,11 @@ parse_method(Eo_Lexer *ls)
         meth->is_beta = EINA_TRUE;
         eo_lexer_get(ls);
         break;
+      case KW_at_internal:
+        CASE_LOCK(ls, internal, "internal qualifier");
+        meth->is_internal = EINA_TRUE;
+        eo_lexer_get(ls);
+        break;
       default:
         goto body;
      }
index dd530c7..1ccec24 100644 (file)
@@ -144,6 +144,7 @@ struct _Eolian_Function
    Eina_Bool is_class :1;
    Eina_Bool is_c_only :1;
    Eina_Bool is_beta :1;
+   Eina_Bool is_internal :1;
    Eina_List *ctor_of;
    Eolian_Class *klass;
 };