CppParser
Loading...
Searching...
No Matches
clone.h
Go to the documentation of this file.
1//
2// Created by saleh on 3/13/24.
3//
4
5#pragma once
6
7#include <cassert>
8#include <sstream>
9#include "cppparser.h"
10#include "cppwriter.h"
11#include "cppast.h"
12
13inline CppObjPtr cloneCppObj(CppObj *pSrc, const std::string &tempFileBaseDir="/tmp/") {
14 CppWriter writer;
15 std::stringstream stm;
16
17 writer.emit(pSrc, stm);
18 stm.flush();
19
20 CppParser parser;
21 auto uniquePtr = parser.parseString(tempFileBaseDir + "temp.cpp", stm.str());
22 auto rawPtr = uniquePtr.release(); // give up the ownership, BAD IDEA!
23 auto member = std::move(rawPtr->members()[0]);
24 delete rawPtr; // avoid m.leak, BAD IDEA!
25 return member;
26}
Parses C++ source and generates an AST.
Definition: cppparser.h:40
CppCompoundPtr parseString(const std::string &filePathToSave, const std::string &content)
Definition: cppparser.cpp:141
Responsible for emitting C/C++ source from CppAst data structure.
Definition: cppwriter.h:40
virtual void emit(CppObj *cppObj, std::ostream &stm, CppIndent indentation=CppIndent()) const
Definition: cppwriter.cpp:70
CppObjPtr cloneCppObj(CppObj *pSrc, const std::string &tempFileBaseDir="/tmp/")
Definition: clone.h:13
std::unique_ptr< CppObj > CppObjPtr
Definition: cpptoken.h:109
An abstract class that is used as base class of all other classes.
Definition: cppast.h:134