void Argument::fromParseNode(const ParseNode& node) { mType = NULL; if(node.name == "Ellipsis") { mIsEllipsis = true; // doesn't really support ellipsis. return; } mIsEllipsis = false; bool isConst; mName = node.getAttr("name", false); mType = parseType(node, isConst); // wtf? arguments don't have locations. //mLocation = new Location(node.getIntAttr("line"), //(File*)getParseNodeFromId(node.getAttr("file"))->base); mUsePointer = false; mUseHandle = false; string attributes = node.getAttr("attributes", false); if(attributes != "") { map<string, string> attrMap; System::parseAttributes(attributes, attrMap); mUsePointer = attrMap["use_pointer"]=="true"; mUseHandle = attrMap["use_handle"]=="true"; } }
void ArrayType::fromParseNode(const ParseNode& node) { bool isConst; mType = parseType(node, isConst); mMin = node.getIntAttr("min"); mMaxString = node.getAttr("max"); //mMax = atoi(mMaxString.c_str()); int res = sscanf(mMaxString.c_str(), "%i", &mMax); SASSERT(res == 1); mAlign = node.getIntAttr("align"); }
void Function::fromParseNode(const ParseNode& node) { mName = node.getAttr("name"); mReturns = getParseNodeFromId(node.getAttr("returns"))->base; mContext = getParseNodeFromId(node.getAttr("context"))->base; mIsExtern = node.getAttr("extern", false) !=""; for(size_t i = 0; i < node.children.size(); i++) { const ParseNode* pn = node.children[i]; Argument* arg = new Argument(); arg->fromParseNode(*pn); mArguments.push_back(arg); } mLocation = new Location(node.getIntAttr("line"), (File*)getParseNodeFromId(node.getAttr("file"))->base); string attributes = node.getAttr("attributes", false); if(attributes != "") { map<string, string> attrMap; System::parseAttributes(attributes, attrMap); mRangeExpression = attrMap["range"]; } }
void File::fromParseNode(const ParseNode& node) { mName = node.getAttr("name"); }
void FundamentalType::fromParseNode(const ParseNode& node) { mName = node.getAttr("name"); }
void Typedef::fromParseNode(const ParseNode& node) { mName = node.getAttr("name"); mContext = getParseNodeFromId(node.getAttr("context"))->base; mLocation = new Location(node.getIntAttr("line"), (File*)getParseNodeFromId(node.getAttr("file"))->base); mType = getParseNodeFromId(node.getAttr("type"))->base; }