1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-18 21:45:08 +00:00

HackStudio: Mark compilation-unit-only functions as static

This also resolves some typing issues that only 'accidentally' worked, like declaring
a function to return type A, and the definition actually returning type B (which works
if type B is a subtype of type A). I like to call these "ninja imports".

To prevent problems like this in the future, I put all globals in a HackStudio.h.
I'm not sure about the name, but main.h and common.h felt wrong.
This commit is contained in:
Ben Wiederhake 2020-08-10 22:28:38 +02:00 committed by Andreas Kling
parent 42b057b0c9
commit 7893871d5a
7 changed files with 53 additions and 18 deletions

View file

@ -68,7 +68,7 @@ int VariablesModel::row_count(const GUI::ModelIndex& index) const
return node->members.size(); return node->members.size();
} }
String variable_value_as_string(const DebugInfo::VariableInfo& variable) static String variable_value_as_string(const DebugInfo::VariableInfo& variable)
{ {
if (variable.location_type != DebugInfo::VariableInfo::LocationType::Address) if (variable.location_type != DebugInfo::VariableInfo::LocationType::Address)
return "N/A"; return "N/A";

View file

@ -26,15 +26,13 @@
#include "EditorWrapper.h" #include "EditorWrapper.h"
#include "Editor.h" #include "Editor.h"
#include "HackStudio.h"
#include <LibGUI/Action.h> #include <LibGUI/Action.h>
#include <LibGUI/BoxLayout.h> #include <LibGUI/BoxLayout.h>
#include <LibGUI/InputBox.h> #include <LibGUI/InputBox.h>
#include <LibGUI/Label.h> #include <LibGUI/Label.h>
#include <LibGfx/Font.h> #include <LibGfx/Font.h>
extern RefPtr<EditorWrapper> g_current_editor_wrapper;
extern Function<void(String)> g_open_file;
EditorWrapper::EditorWrapper(BreakpointChangeCallback breakpoint_change_callback) EditorWrapper::EditorWrapper(BreakpointChangeCallback breakpoint_change_callback)
{ {
set_layout<GUI::VerticalBoxLayout>(); set_layout<GUI::VerticalBoxLayout>();
@ -69,7 +67,7 @@ EditorWrapper::EditorWrapper(BreakpointChangeCallback breakpoint_change_callback
g_current_editor_wrapper = this; g_current_editor_wrapper = this;
}; };
m_editor->on_open = [this](String path) { m_editor->on_open = [](String path) {
g_open_file(path); g_open_file(path);
}; };

View file

@ -25,6 +25,7 @@
*/ */
#include "FindInFilesWidget.h" #include "FindInFilesWidget.h"
#include "HackStudio.h"
#include "Project.h" #include "Project.h"
#include <AK/StringBuilder.h> #include <AK/StringBuilder.h>
#include <LibGUI/BoxLayout.h> #include <LibGUI/BoxLayout.h>
@ -32,10 +33,6 @@
#include <LibGUI/TableView.h> #include <LibGUI/TableView.h>
#include <LibGUI/TextBox.h> #include <LibGUI/TextBox.h>
extern GUI::TextEditor& current_editor();
extern void open_file(const String&);
extern OwnPtr<Project> g_project;
struct Match { struct Match {
String filename; String filename;
GUI::TextRange range; GUI::TextRange range;

View file

@ -0,0 +1,40 @@
/*
* Copyright (c) 2020, the SerenityOS developers.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#include "EditorWrapper.h"
#include "Project.h"
#include <AK/String.h>
#include <LibGUI/TextEditor.h>
GUI::TextEditor& current_editor();
void open_file(const String&);
extern RefPtr<EditorWrapper> g_current_editor_wrapper;
extern Function<void(String)> g_open_file;
extern OwnPtr<Project> g_project;
extern String g_currently_open_file;

View file

@ -25,14 +25,13 @@
*/ */
#include "Locator.h" #include "Locator.h"
#include "HackStudio.h"
#include "Project.h" #include "Project.h"
#include <LibGUI/BoxLayout.h> #include <LibGUI/BoxLayout.h>
#include <LibGUI/TableView.h> #include <LibGUI/TableView.h>
#include <LibGUI/TextBox.h> #include <LibGUI/TextBox.h>
#include <LibGUI/Window.h> #include <LibGUI/Window.h>
extern RefPtr<Project> g_project;
extern void open_file(const String&);
static RefPtr<Gfx::Bitmap> s_file_icon; static RefPtr<Gfx::Bitmap> s_file_icon;
static RefPtr<Gfx::Bitmap> s_cplusplus_icon; static RefPtr<Gfx::Bitmap> s_cplusplus_icon;
static RefPtr<Gfx::Bitmap> s_header_icon; static RefPtr<Gfx::Bitmap> s_header_icon;

View file

@ -25,6 +25,7 @@
*/ */
#include "Project.h" #include "Project.h"
#include "HackStudio.h"
#include <AK/LexicalPath.h> #include <AK/LexicalPath.h>
#include <AK/QuickSort.h> #include <AK/QuickSort.h>
#include <AK/StringBuilder.h> #include <AK/StringBuilder.h>
@ -117,7 +118,6 @@ public:
return m_project.m_file_icon; return m_project.m_file_icon;
} }
if (role == Role::Font) { if (role == Role::Font) {
extern String g_currently_open_file;
if (node->name == g_currently_open_file) if (node->name == g_currently_open_file)
return Gfx::Font::default_bold_font(); return Gfx::Font::default_bold_font();
return {}; return {};

View file

@ -32,6 +32,7 @@
#include "FindInFilesWidget.h" #include "FindInFilesWidget.h"
#include "FormEditorWidget.h" #include "FormEditorWidget.h"
#include "FormWidget.h" #include "FormWidget.h"
#include "HackStudio.h"
#include "Locator.h" #include "Locator.h"
#include "Project.h" #include "Project.h"
#include "TerminalWrapper.h" #include "TerminalWrapper.h"
@ -91,7 +92,7 @@ RefPtr<FormEditorWidget> g_form_editor_widget;
static RefPtr<GUI::TabWidget> s_action_tab_widget; static RefPtr<GUI::TabWidget> s_action_tab_widget;
void add_new_editor(GUI::Widget& parent) static void add_new_editor(GUI::Widget& parent)
{ {
auto wrapper = EditorWrapper::construct(Debugger::on_breakpoint_change); auto wrapper = EditorWrapper::construct(Debugger::on_breakpoint_change);
if (s_action_tab_widget) { if (s_action_tab_widget) {
@ -109,7 +110,7 @@ enum class EditMode {
Form, Form,
}; };
void set_edit_mode(EditMode mode) static void set_edit_mode(EditMode mode)
{ {
if (mode == EditMode::Text) { if (mode == EditMode::Text) {
g_right_hand_stack->set_active_widget(g_text_inner_splitter); g_right_hand_stack->set_active_widget(g_text_inner_splitter);
@ -118,18 +119,18 @@ void set_edit_mode(EditMode mode)
} }
} }
EditorWrapper& current_editor_wrapper() static EditorWrapper& current_editor_wrapper()
{ {
ASSERT(g_current_editor_wrapper); ASSERT(g_current_editor_wrapper);
return *g_current_editor_wrapper; return *g_current_editor_wrapper;
} }
Editor& current_editor() GUI::TextEditor& current_editor()
{ {
return current_editor_wrapper().editor(); return current_editor_wrapper().editor();
} }
NonnullRefPtr<EditorWrapper> get_editor_of_file(const String& file) static NonnullRefPtr<EditorWrapper> get_editor_of_file(const String& file)
{ {
for (auto& wrapper : g_all_editor_wrappers) { for (auto& wrapper : g_all_editor_wrappers) {
String wrapper_file = wrapper.filename_label().text(); String wrapper_file = wrapper.filename_label().text();
@ -140,7 +141,7 @@ NonnullRefPtr<EditorWrapper> get_editor_of_file(const String& file)
ASSERT_NOT_REACHED(); ASSERT_NOT_REACHED();
} }
String get_project_executable_path() static String get_project_executable_path()
{ {
// e.g /my/project.hackstudio => /my/project // e.g /my/project.hackstudio => /my/project
// TODO: Perhaps a Makefile rule for getting the value of $(PROGRAM) would be better? // TODO: Perhaps a Makefile rule for getting the value of $(PROGRAM) would be better?