Skip to content

Commit e0ddd95

Browse files
committed
Improve DiagnosticPresenter.java, fix wrong flags
1 parent 9f356e0 commit e0ddd95

File tree

6 files changed

+51
-56
lines changed

6 files changed

+51
-56
lines changed

app/src/main/java/com/duy/ccppcompiler/compiler/CompileManagerImpl.java

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public abstract class CompileManagerImpl<T extends CommandResult> implements ICo
4646
protected SimpleEditorActivity mActivity;
4747
@Nullable
4848
private ProgressDialog mCompileDialog;
49+
@Nullable
4950
private DiagnosticPresenter mDiagnosticPresenter;
5051
private INativeCompiler mCompiler;
5152

@@ -55,8 +56,11 @@ public abstract class CompileManagerImpl<T extends CommandResult> implements ICo
5556

5657
@Override
5758
public void onPrepareCompile() {
58-
mDiagnosticPresenter.clear();
59+
if (mDiagnosticPresenter != null) {
60+
mDiagnosticPresenter.clear();
61+
}
5962
mActivity.setMenuStatus(R.id.action_run, MenuDef.STATUS_DISABLED);
63+
6064
mCompileDialog = new ProgressDialog(mActivity);
6165
mCompileDialog.setTitle(mActivity.getString(R.string.compiling));
6266
mCompileDialog.setMessage(mActivity.getString(R.string.wait_message));
@@ -80,44 +84,37 @@ public void onNewMessage(CharSequence charSequence) {
8084

8185
@Override
8286
public void onCompileFailed(T commandResult) {
83-
finishCompile();
84-
85-
Toast.makeText(mActivity, "Compiled failed", Toast.LENGTH_LONG).show();
86-
if (DLog.DEBUG) DLog.w(TAG, "onCompileFailed: \n" + commandResult.getMessage());
87+
finishCompile(commandResult);
8788

8889
if (mDiagnosticPresenter != null) {
89-
DiagnosticsCollector diagnosticsCollector = new DiagnosticsCollector();
90-
OutputParser parser = new OutputParser(diagnosticsCollector);
91-
parser.parse(commandResult.getMessage());
92-
93-
ArrayList diagnostics = diagnosticsCollector.getDiagnostics();
94-
mDiagnosticPresenter.setDiagnostics(diagnostics);
95-
mDiagnosticPresenter.log(commandResult.getMessage());
9690
mDiagnosticPresenter.expandView();
97-
98-
debug(diagnostics);
9991
}
92+
93+
Toast.makeText(mActivity, "Compiled failed", Toast.LENGTH_LONG).show();
94+
if (DLog.DEBUG) DLog.w(TAG, "onCompileFailed: \n" + commandResult.getMessage());
10095
}
10196

10297
@Override
10398
public void onCompileSuccess(T commandResult) {
104-
finishCompile();
105-
}
106-
107-
private void debug(ArrayList diagnostics) {
108-
for (Object diagnostic : diagnostics) {
109-
if (DLog.DEBUG) DLog.d(TAG, "diagnostic = " + diagnostic);
110-
}
99+
finishCompile(commandResult);
111100
}
112101

113102
public void setDiagnosticPresenter(DiagnosticPresenter diagnosticPresenter) {
114103
this.mDiagnosticPresenter = diagnosticPresenter;
115104
}
116105

117-
private void finishCompile() {
106+
private void finishCompile(T commandResult) {
118107
hideDialog();
119108
mActivity.setMenuStatus(R.id.action_run, MenuDef.STATUS_NORMAL);
120-
mDiagnosticPresenter.setDiagnostics(new ArrayList<Diagnostic>());
109+
if (mDiagnosticPresenter != null) {
110+
DiagnosticsCollector diagnosticsCollector = new DiagnosticsCollector();
111+
OutputParser parser = new OutputParser(diagnosticsCollector);
112+
parser.parse(commandResult.getMessage());
113+
114+
ArrayList<Diagnostic> diagnostics = diagnosticsCollector.getDiagnostics();
115+
mDiagnosticPresenter.setDiagnostics(diagnostics);
116+
mDiagnosticPresenter.log(commandResult.getMessage());
117+
}
121118
}
122119

123120
@MainThread

app/src/main/java/com/duy/ccppcompiler/compiler/shell/CommandBuilder.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,22 @@ public void addFlags(CommandBuilder otherFlags) {
5454

5555
@NonNull
5656
public String buildCommand() {
57-
StringBuilder sb = new StringBuilder();
58-
sb.append(program);
57+
StringBuilder cmd = new StringBuilder();
58+
cmd.append(program);
5959
if (flags.size() == 0) {
60-
return sb.toString();
60+
return cmd.toString();
6161
}
6262

63-
sb.append(" ");
6463
for (int i = 0; i < flags.size(); i++) {
6564
String flag = flags.get(i);
6665
if (flag != null && !flag.isEmpty()) {
67-
sb.append(flag);
68-
if (i != flags.size() - 1 && (sb.length() != 0)) {
69-
sb.append(" ");
66+
if (cmd.length() != 0) {
67+
cmd.append(" ");
7068
}
69+
cmd.append(flag);
7170
}
7271
}
73-
return sb.toString();
72+
return cmd.toString();
7473
}
7574

7675

app/src/main/java/com/duy/ccppcompiler/compiler/shell/Shell.java

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import java.io.FileOutputStream;
2929
import java.io.FileReader;
3030
import java.io.IOException;
31-
import java.util.regex.Matcher;
3231
import java.util.regex.Pattern;
3332

3433

@@ -73,12 +72,12 @@ public static CommandResult exec(Context context, String cwd, String cmd) {
7372
Utils.setPtyUTF8Mode(fd, true);
7473
Utils.setPtyWindowSize(fd, 128, 1024, 0, 0);
7574

76-
BufferedReader in = new BufferedReader(new FileReader(fd));
77-
FileOutputStream out = new FileOutputStream(fd);
75+
BufferedReader input = new BufferedReader(new FileReader(fd));
76+
FileOutputStream output = new FileOutputStream(fd);
7877

79-
out.write(("export PS1=''\n").getBytes("UTF-8"));
80-
out.write(("exec " + cmd + "\n").getBytes("UTF-8"));
81-
out.flush();
78+
output.write(("export PS1=''\n").getBytes("UTF-8"));
79+
output.write(("exec " + cmd + "\n").getBytes("UTF-8"));
80+
output.flush();
8281

8382
final int[] exitCode = new int[1];
8483
Thread thread = new Thread(new Runnable() {
@@ -93,36 +92,36 @@ public void run() {
9392

9493
//parse output
9594
StringBuilder message = new StringBuilder();
96-
int skipStrings = 6; //skip echos from two command strings
95+
int skipLine = 0; //skip echos from two command strings
9796
final Pattern patClearNewLine = Pattern.compile("(\\x08)\\1+");
9897
do {
9998
String errstr;
10099
try {
101-
errstr = in.readLine();
100+
errstr = input.readLine();
102101
// remove escape sequence
103-
errstr = errstr.replaceAll("\u001b\\[([0-9]|;)*m", "");
102+
// errstr = errstr.replaceAll("\u001b\\[([0-9]|;)*m", "");
104103
// remove clearing new line
105-
Matcher m = patClearNewLine.matcher(errstr);
106-
if (m.find()) {
107-
int length = m.end() - m.start();
108-
if (m.start() > length) {
109-
errstr = errstr.substring(0, m.start() - length) + errstr.substring(m.end());
110-
}
111-
}
104+
// Matcher m = patClearNewLine.matcher(errstr);
105+
// if (m.find()) {
106+
// int length = m.end() - m.start();
107+
// if (m.start() > length) {
108+
// errstr = errstr.substring(0, m.start() - length) + errstr.substring(m.end());
109+
// }
110+
// }
112111
} catch (IOException e) {
113112
break;
114113
}
115-
if (skipStrings > 0) {
116-
skipStrings--;
114+
if (skipLine > 0) {
115+
skipLine--;
117116
} else {
118117
message.append(errstr).append("\n");
119118
}
120119
} while (thread.isAlive());
121120

122121
if (DLog.DEBUG) DLog.d(TAG, "stdout: \n" + message);
123122

124-
out.close();
125-
in.close();
123+
output.close();
124+
input.close();
126125

127126
CommandResult commandResult = new CommandResult(exitCode[0], message.toString());
128127
long time = System.currentTimeMillis() - startTime;

app/src/main/java/com/duy/ccppcompiler/diagnostic/DiagnosticPresenter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public void setDiagnostics(ArrayList<Diagnostic> diagnostics) {
157157

158158
private void show(ArrayList<Diagnostic> diagnostics) {
159159
if (mView != null) {
160-
mView.showDiagnostic(mDiagnostics);
160+
mView.showDiagnostic(diagnostics);
161161
}
162162
}
163163

app/src/main/java/com/duy/ccppcompiler/diagnostic/ui/DiagnosticFragment.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ public class DiagnosticFragment extends Fragment implements DiagnosticContract.V
5252

5353
private RecyclerView mDiagnosticView;
5454
private TextView mLogView;
55+
private ViewPager mViewPager;
5556

5657
public static DiagnosticFragment newInstance() {
5758

@@ -73,9 +74,9 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
7374
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
7475
super.onViewCreated(view, savedInstanceState);
7576

76-
ViewPager viewPager = view.findViewById(R.id.diagnostic_view_pager);
77-
viewPager.setAdapter(new PagerAdapter(this));
78-
viewPager.setOffscreenPageLimit(viewPager.getAdapter().getCount());
77+
mViewPager = view.findViewById(R.id.diagnostic_view_pager);
78+
mViewPager.setAdapter(new PagerAdapter(this));
79+
mViewPager.setOffscreenPageLimit(mViewPager.getAdapter().getCount());
7980

8081
mLogView = view.findViewById(R.id.txt_log);
8182
mLogView.setMovementMethod(new ScrollingMovementMethod());

app/src/main/res/xml/preferences_compiler.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535

3636
<PreferenceCategory android:title="Code generation">
3737
<ListPreference
38-
android:defaultValue="false"
3938
android:entries="@array/optimization_level_entries"
4039
android:entryValues="@array/optimization_level_entries_value"
4140
android:key="@string/pref_option_optimization_level"

0 commit comments

Comments
 (0)