📄 xdr_cptc_msh.c
字号:
#include "MshFmt2.h"
#include "cptc_geomsh_utils.h"
#include <stdio.h>
/* -------------------------------------------------------------------- */
bool_t xdr_Cptc_Mnode(XDR* xdrs, Cptc_Mnode* t) {
int i;
if (!xdr_int(xdrs, &t -> id)) return (FALSE);
for (i = 0; i < 3; ++i) {
if (!xdr_double(xdrs, &(t -> coord[i]))) return (FALSE);
}
return (TRUE);
}
bool_t xdr_Cptc_NodeCurveInc(XDR* xdrs, Cptc_NodeCurveInc* t) {
if (!xdr_int(xdrs, &t -> id)) return (FALSE);
if (!xdr_int(xdrs, &t -> curve_index)) return (FALSE);
if (!xdr_double(xdrs, &t -> param)) return (FALSE);
return (TRUE);
}
bool_t xdr_Cptc_NodePatchInc(XDR* xdrs, Cptc_NodePatchInc* t) {
if (!xdr_int(xdrs, &t -> id)) return (FALSE);
if (!xdr_int(xdrs, &t -> patch_index)) return (FALSE);
if (!xdr_double(xdrs, &t -> param[0])) return (FALSE);
if (!xdr_double(xdrs, &t -> param[1])) return (FALSE);
return (TRUE);
}
bool_t xdr_Cptc_MeshTopVertexInfo(XDR* xdrs, Cptc_MeshTopVertexInfo* t) {
if (!xdr_int(xdrs, &t -> vtx)) return (FALSE);
return (TRUE);
}
typedef Cptc_Global_Node Cptc_xdrmesh_c_int2[2];
typedef Cptc_Global_Node Cptc_xdrmesh_c_int3[3];
typedef Cptc_Global_Node Cptc_xdrmesh_c_int4[4];
typedef Cptc_Global_Node Cptc_xdrmesh_c_int5[5];
typedef Cptc_Global_Node Cptc_xdrmesh_c_int6[6];
typedef Cptc_Global_Node Cptc_xdrmesh_c_int8[8];
bool_t xdr_Cptc_MeshTopEdgeInfo(XDR* xdrs, Cptc_MeshTopEdgeInfo* t) {
int i, j;
if (!xdr_int(xdrs, &t -> num_mnode)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> incs =
(Cptc_NodeCurveInc *) cptc_malloc((t -> num_mnode) * sizeof(Cptc_NodeCurveInc));
}
for (i = 0; i < t -> num_mnode; ++i) {
if (!xdr_Cptc_NodeCurveInc(xdrs, &(t -> incs[i]))) return (FALSE);
}
if (!xdr_int(xdrs, &t -> num_medge)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> edgelist =
(Cptc_xdrmesh_c_int2*) cptc_malloc((t -> num_medge) * sizeof(Cptc_xdrmesh_c_int2));
}
for (i = 0; i < t -> num_medge; ++i) {
for (j = 0; j < 2; ++j)
if (!xdr_int(xdrs, &(t -> edgelist[i][j]))) return (FALSE);
}
return (TRUE);
}
bool_t xdr_Cptc_MeshTopSurfaceInfo(XDR* xdrs, Cptc_MeshTopSurfaceInfo* t) {
int i, j;
if (!xdr_int(xdrs, &t -> num_mnode)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> incs =
(Cptc_NodePatchInc *) cptc_malloc((t -> num_mnode) * sizeof(Cptc_NodePatchInc));
}
for (i = 0; i < t -> num_mnode; ++i) {
if (!xdr_Cptc_NodePatchInc(xdrs, &(t -> incs[i]))) return (FALSE);
}
if (!xdr_int(xdrs, &t -> num_mtrifacet)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> trifacetlist =
(Cptc_xdrmesh_c_int3*) cptc_malloc((t -> num_mtrifacet) * sizeof(Cptc_xdrmesh_c_int3));
}
for (i = 0; i < t -> num_mtrifacet; ++i) {
for (j = 0; j < 3; ++j)
if (!xdr_int(xdrs, &(t -> trifacetlist[i][j]))) return (FALSE);
}
if (!xdr_int(xdrs, &t -> num_mquadfacet)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> quadfacetlist =
(Cptc_xdrmesh_c_int4*) cptc_malloc((t -> num_mquadfacet) * sizeof(Cptc_xdrmesh_c_int4));
}
for (i = 0; i < t -> num_mquadfacet; ++i) {
for (j = 0; j < 4; ++j)
if (!xdr_int(xdrs, &(t -> quadfacetlist[i][j]))) return (FALSE);
}
return (TRUE);
}
bool_t xdr_Cptc_MeshTopRegionInfo(XDR* xdrs, Cptc_MeshTopRegionInfo* t) {
int i, j;
if (!xdr_int(xdrs, &t -> num_tet)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> tets =
(Cptc_xdrmesh_c_int4 *) cptc_malloc((t -> num_tet) * sizeof(Cptc_xdrmesh_c_int4));
}
for (i = 0; i < t -> num_tet; ++i) {
for (j = 0; j < 4; ++j)
if (!xdr_int(xdrs, &t -> tets[i][j])) return (FALSE);
}
if (!xdr_int(xdrs, &t -> num_pyramid)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> pyramids =
(Cptc_xdrmesh_c_int5 *) cptc_malloc((t -> num_pyramid) * sizeof(Cptc_xdrmesh_c_int5));
}
for (i = 0; i < t -> num_pyramid; ++i) {
for (j = 0; j < 5; ++j)
if (!xdr_int(xdrs, &t -> pyramids[i][j])) return (FALSE);
}
if (!xdr_int(xdrs, &t -> num_prism)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> prisms =
(Cptc_xdrmesh_c_int6 *) cptc_malloc((t -> num_prism) * sizeof(Cptc_xdrmesh_c_int6));
}
for (i = 0; i < t -> num_prism; ++i) {
for (j = 0; j < 6; ++j)
if (!xdr_int(xdrs, &t -> prisms[i][j])) return (FALSE);
}
if (!xdr_int(xdrs, &t -> num_hex)) return (FALSE);
if (xdrs->x_op == XDR_DECODE) {
t -> hexs =
(Cptc_xdrmesh_c_int8 *) cptc_malloc((t -> num_hex) * sizeof(Cptc_xdrmesh_c_int8));
}
for (i = 0; i < t -> num_hex; ++i) {
for (j = 0; j < 8; ++j)
if (!xdr_int(xdrs, &t -> hexs[i][j])) return (FALSE);
}
return (TRUE);
}
/* -------------------------------------------------------------------- */
bool_t xdr_Cptc_MshDesc(XDR* xdrs, Cptc_MshDesc** mshp)
{
int i;
unsigned int stringlen;
Cptc_MshDesc* msh;
if (xdrs -> x_op == XDR_DECODE) {
msh = (Cptc_MshDesc*)cptc_malloc(sizeof(Cptc_MshDesc));
*mshp = msh;
}
else {
msh = *mshp;
}
if (!xdr_int(xdrs, &msh->intrinsic_dimension))
return (FALSE);
if (!xdr_int(xdrs, &msh->embedded_dimension))
return (FALSE);
if (!xdr_int(xdrs, &msh->num_nodes))
return (FALSE);
if (!xdr_int(xdrs, &msh->num_elems))
return (FALSE);
if (!xdr_int(xdrs, &msh->num_top_vertices))
return (FALSE);
if (!xdr_int(xdrs, &msh->num_top_edges))
return (FALSE);
if (!xdr_int(xdrs, &msh->num_top_surfaces))
return (FALSE);
if (!xdr_int(xdrs, &msh->num_top_regions))
return (FALSE);
if (!xdr_int(xdrs, &msh -> num_prop_val))
return (FALSE);
if (xdrs -> x_op == XDR_DECODE) {
msh -> props = (char**) cptc_malloc(msh -> num_prop_val * sizeof(char*));
msh -> vals = (char**) cptc_malloc(msh -> num_prop_val * sizeof(char*));
}
for (i = 0; i < msh -> num_prop_val; ++i) {
if (xdrs -> x_op != XDR_DECODE)
stringlen = strlen(msh -> props[i]);
if (!xdr_u_int(xdrs, &stringlen)) return (FALSE);
if (xdrs -> x_op == XDR_DECODE) {
msh -> props[i] = (char*) cptc_malloc((stringlen + 1) * sizeof(char));
}
if (!xdr_string(xdrs, &(msh -> props[i]), stringlen)) return (FALSE);
if (xdrs -> x_op != XDR_DECODE)
stringlen = strlen(msh -> vals[i]);
if (!xdr_u_int(xdrs, &stringlen)) return (FALSE);
if (xdrs -> x_op == XDR_DECODE) {
msh -> vals[i] = (char*) cptc_malloc((stringlen + 1) * sizeof(char));
}
if (!xdr_string(xdrs, &(msh -> vals[i]), stringlen)) return (FALSE);
}
if (xdrs -> x_op == XDR_DECODE)
msh -> nodes = (Cptc_Mnode*) cptc_malloc((msh -> num_nodes) * sizeof(Cptc_Mnode));
for (i = 0; i < msh -> num_nodes; ++i) {
if (!xdr_Cptc_Mnode(xdrs, &(msh -> nodes[i])))
return (FALSE);
}
if (xdrs -> x_op == XDR_DECODE) {
msh -> vtxinfo = (Cptc_MeshTopVertexInfo*)
cptc_malloc(msh -> num_top_vertices * sizeof(Cptc_MeshTopVertexInfo));
}
for (i = 0; i < msh -> num_top_vertices; ++i) {
if (!xdr_Cptc_MeshTopVertexInfo(xdrs, &(msh -> vtxinfo[i])))
return (FALSE);
}
if (xdrs -> x_op == XDR_DECODE) {
msh -> edgeinfo = (Cptc_MeshTopEdgeInfo*)
cptc_malloc(msh -> num_top_edges * sizeof(Cptc_MeshTopEdgeInfo));
}
for (i = 0; i < msh -> num_top_edges; ++i) {
if (!xdr_Cptc_MeshTopEdgeInfo(xdrs, &(msh -> edgeinfo[i])))
return (FALSE);
}
if (xdrs -> x_op == XDR_DECODE) {
msh -> surfinfo = (Cptc_MeshTopSurfaceInfo*)
cptc_malloc(msh -> num_top_surfaces * sizeof(Cptc_MeshTopSurfaceInfo));
}
for (i = 0; i < msh -> num_top_surfaces; ++i) {
if (!xdr_Cptc_MeshTopSurfaceInfo(xdrs, &(msh -> surfinfo[i])))
return (FALSE);
}
if (xdrs -> x_op == XDR_DECODE) {
msh -> regioninfo = (Cptc_MeshTopRegionInfo*)
cptc_malloc(msh -> num_top_regions * sizeof(Cptc_MeshTopRegionInfo));
}
for (i = 0; i < msh -> num_top_regions; ++i) {
if (!xdr_Cptc_MeshTopRegionInfo(xdrs, &(msh -> regioninfo[i])))
return (FALSE);
}
return (TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -