Page MenuHome
Paste P2848

c++ to c ??
ActivePublic

Authored by YimingWu (NicksBest) on Mar 23 2022, 3:59 PM.
//------------------------------------- lineart_cpp_bridge.c
#include "MOD_lineart.h"
#include "lineart_intern.h"
#include "BLI_enumerable_thread_specific.hh"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "BLI_vector.hh"
using blender::Vector;
using blender::threading::EnumerableThreadSpecific;
typedef EnumerableThreadSpecific<Vector<LineartOcclusionPair>> LineartThreadOcclusionData;
LineartThreadOcclusionData *lineart_thread_init_occlusion_result()
{
LineartThreadOcclusionData *result = new LineartThreadOcclusionData;
return result;
};
void lineart_thread_add_occlusion_pair(LineartThreadOcclusionData *data,
LineartElementLinkNode *eln_edge,
LineartElementLinkNode *eln_triangle,
LineartEdge *e,
LineartTriangle *t)
{
LineartOcclusionPair op;
op.e = e;
op.t = t;
op.eln_edge = eln_edge;
op.eln_triangle = eln_triangle;
data->local().append(op);
}
/* Memory returned by this needs to be freed manually. */
LineartOcclusionPair *lineart_thread_finalize_occlusion_result(LineartThreadOcclusionData *data)
{
Vector<LineartOcclusionPair> *result = new Vector<LineartOcclusionPair>;
for (const Vector<LineartOcclusionPair> &local : (*data)) {
result->extend(local);
}
return (LineartOcclusionPair *)result->data();
};
//----------------------------------------
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_util.c:16:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:16: warning: useless storage class specifier in empty declaration
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:785:8: warning: function declaration isnt a prototype [-Wstrict-prototypes]
785 | struct LineartThreadOcclusionData *lineart_thread_init_occlusion_result();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
[ 98%] Built target cycles_integrator
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_ops.c:33:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:16: warning: useless storage class specifier in empty declaration
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:785:8: warning: function declaration isnt a prototype [-Wstrict-prototypes]
785 | struct LineartThreadOcclusionData *lineart_thread_init_occlusion_result();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
[ 99%] Built target cycles_device
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/MOD_gpencillineart.c:26:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:16: warning: useless storage class specifier in empty declaration
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:785:8: warning: function declaration isnt a prototype [-Wstrict-prototypes]
785 | struct LineartThreadOcclusionData *lineart_thread_init_occlusion_result();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
[100%] Built target bf_intern_cycles
[100%] Built target cycles_bvh
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_chain.c:12:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:16: warning: useless storage class specifier in empty declaration
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:785:8: warning: function declaration isnt a prototype [-Wstrict-prototypes]
785 | struct LineartThreadOcclusionData *lineart_thread_init_occlusion_result();
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:2:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:1: warning: typedef was ignored in this declaration
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:14:64: error: conflicting declaration typedef class blender::threading::EnumerableThreadSpecific<blender::Vector<LineartOcclusionPair> > LineartThreadOcclusionData
14 | typedef EnumerableThreadSpecific<Vector<LineartOcclusionPair>> LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:2:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:16: note: previous declaration as struct LineartThreadOcclusionData
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp: In function LineartThreadOcclusionData* lineart_thread_init_occlusion_result():
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:18:44: error: invalid use of incomplete type struct LineartThreadOcclusionData
18 | LineartThreadOcclusionData *result = new LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:2:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:16: note: forward declaration of struct LineartThreadOcclusionData
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp: At global scope:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:22:6: warning: no previous declaration for void lineart_thread_add_occlusion_pair(LineartThreadOcclusionData*, LineartElementLinkNode*, LineartElementLinkNode*, LineartEdge*, LineartTriangle*) [-Wmissing-declarations]
22 | void lineart_thread_add_occlusion_pair(LineartThreadOcclusionData *data,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp: In function void lineart_thread_add_occlusion_pair(LineartThreadOcclusionData*, LineartElementLinkNode*, LineartElementLinkNode*, LineartEdge*, LineartTriangle*):
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:33:7: error: invalid use of incomplete type struct LineartThreadOcclusionData
33 | data->local().append(op);
| ^~
In file included from /home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:2:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/MOD_lineart.h:784:16: note: forward declaration of struct LineartThreadOcclusionData
784 | typedef struct LineartThreadOcclusionData;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp: At global scope:
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:37:23: warning: no previous declaration for LineartOcclusionPair* lineart_thread_finalize_occlusion_result(LineartThreadOcclusionData*) [-Wmissing-declarations]
37 | LineartOcclusionPair *lineart_thread_finalize_occlusion_result(LineartThreadOcclusionData *data)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp: In function LineartOcclusionPair* lineart_thread_finalize_occlusion_result(LineartThreadOcclusionData*):
/home/yiming/Documents/Sources/BlenderMain/blender/source/blender/gpencil_modifiers/intern/lineart/lineart_cpp_bridge.cpp:40:58: error: range-based for expression of type LineartThreadOcclusionData has incomplete type
40 | for (const Vector<LineartOcclusionPair> &local : (*data)) {
//----------------------------------------
// in MOD_lineart.h, Added these below everything:
typedef struct LineartThreadOcclusionData LineartThreadOcclusionData;
LineartThreadOcclusionData *lineart_thread_init_occlusion_result();

Event Timeline