void parseFunctionTypeNode(FunctionTypeNode *node) { fillType(node); Log::dump(node); node->returnType = static_cast<TypeNode*>(createParseNode( node, TREE_TYPE(node->gccNode), "function return type", node->parseChilds)); fillTypeAttributes(node); if (node->parseChilds <= 0) return; fillTypeName(node); node->argTypes = static_cast<TreeListNode*>(createParseNode( node, TYPE_ARG_TYPES(node->gccNode), TREE_LIST, "arg types")); }
PassRefPtr<JSONObject> LoggingCanvas::objectForSkPath(const SkPath& path) { RefPtr<JSONObject> pathItem = JSONObject::create(); pathItem->setString("fillType", fillTypeName(path.getFillType())); pathItem->setString("convexity", convexityName(path.getConvexity())); pathItem->setBoolean("isRect", path.isRect(0)); SkPath::Iter iter(path, false); SkPoint points[4]; RefPtr<JSONArray> pathPointsArray = JSONArray::create(); for (SkPath::Verb verb = iter.next(points, false); verb != SkPath::kDone_Verb; verb = iter.next(points, false)) { VerbParams verbParams = segmentParams(verb); RefPtr<JSONObject> pathPointItem = JSONObject::create(); pathPointItem->setString("verb", verbParams.name); ASSERT(verbParams.pointCount + verbParams.pointOffset <= WTF_ARRAY_LENGTH(points)); pathPointItem->setArray("points", arrayForSkPoints(verbParams.pointCount, points + verbParams.pointOffset)); if (SkPath::kConic_Verb == verb) pathPointItem->setNumber("conicWeight", iter.conicWeight()); pathPointsArray->pushObject(pathPointItem); } pathItem->setArray("pathPoints", pathPointsArray); pathItem->setObject("bounds", objectForSkRect(path.getBounds())); return pathItem.release(); }