Merge branch 'master' into new-csg-export
This commit is contained in:
commit
f6238c18a9
48 changed files with 775 additions and 128 deletions
2
flex.pri
2
flex.pri
|
|
@ -2,7 +2,7 @@
|
|||
flex.name = Flex ${QMAKE_FILE_IN}
|
||||
flex.input = FLEXSOURCES
|
||||
flex.output = ${OBJECTS_DIR}/${QMAKE_FILE_BASE}.cxx
|
||||
flex.commands = flex -P ${QMAKE_FILE_BASE} -o ${OBJECTS_DIR}/${QMAKE_FILE_BASE}.cxx --header-file=${OBJECTS_DIR}/${QMAKE_FILE_BASE}.hxx ${QMAKE_FILE_IN}
|
||||
flex.commands = flex -o ${OBJECTS_DIR}/${QMAKE_FILE_BASE}.cxx --header-file=${OBJECTS_DIR}/${QMAKE_FILE_BASE}.hxx ${QMAKE_FILE_IN}
|
||||
flex.CONFIG += target_predeps
|
||||
flex.variable_out = GENERATED_SOURCES
|
||||
silent:flex.commands = @echo Lex ${QMAKE_FILE_IN} && $$flex.commands
|
||||
|
|
|
|||
|
|
@ -255,6 +255,7 @@ HEADERS += src/version_check.h \
|
|||
src/FontListTableView.h \
|
||||
src/GroupModule.h \
|
||||
src/FileModule.h \
|
||||
src/StatCache.h \
|
||||
src/builtin.h \
|
||||
src/calc.h \
|
||||
src/context.h \
|
||||
|
|
@ -440,6 +441,7 @@ SOURCES += \
|
|||
src/hash.cc \
|
||||
src/GroupModule.cc \
|
||||
src/FileModule.cc \
|
||||
src/StatCache.cc \
|
||||
src/builtin.cc \
|
||||
src/calc.cc \
|
||||
src/export.cc \
|
||||
|
|
|
|||
|
|
@ -574,7 +574,7 @@ build_opencsg()
|
|||
cp src/Makefile src/Makefile.bak
|
||||
|
||||
cat Makefile.bak | sed s/example// |sed s/glew// > Makefile
|
||||
cat src/Makefile.bak | sed s@^INCPATH.*@INCPATH\ =\ -I$BASEDIR/include\ -I../include\ -I..\ -I$GLU_INCLUDE -I.@ > src/Makefile
|
||||
cat src/Makefile.bak | sed s@^INCPATH.*@INCPATH\ =\ -I$BASEDIR/include\ -I../include\ -I..\ -I$GLU_INCLUDE\ -I.@ > src/Makefile
|
||||
cp src/Makefile src/Makefile.bak2
|
||||
cat src/Makefile.bak2 | sed s@^LIBS.*@LIBS\ =\ -L$BASEDIR/lib\ -L/usr/X11R6/lib\ -lGLU\ -lGL@ > src/Makefile
|
||||
tmp=$version
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@
|
|||
#include "exceptions.h"
|
||||
#include "modcontext.h"
|
||||
#include "parsersettings.h"
|
||||
#include "StatCache.h"
|
||||
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
|
|
@ -65,16 +66,14 @@ void FileModule::registerUse(const std::string path) {
|
|||
void FileModule::registerInclude(const std::string &localpath,
|
||||
const std::string &fullpath)
|
||||
{
|
||||
struct stat st;
|
||||
memset(&st, 0, sizeof(struct stat));
|
||||
struct stat st{};
|
||||
bool valid = stat(fullpath.c_str(), &st) == 0;
|
||||
IncludeFile inc = {fullpath, valid, st.st_mtime};
|
||||
this->includes[localpath] = inc;
|
||||
this->includes[localpath] = {fullpath, valid, st.st_mtime};
|
||||
}
|
||||
|
||||
bool FileModule::includesChanged() const
|
||||
{
|
||||
for(const auto &item : this->includes) {
|
||||
for (const auto &item : this->includes) {
|
||||
if (include_modified(item.second)) return true;
|
||||
}
|
||||
return false;
|
||||
|
|
@ -82,12 +81,9 @@ bool FileModule::includesChanged() const
|
|||
|
||||
bool FileModule::include_modified(const IncludeFile &inc) const
|
||||
{
|
||||
struct stat st;
|
||||
memset(&st, 0, sizeof(struct stat));
|
||||
|
||||
fs::path fullpath = find_valid_path(this->path, inc.filename);
|
||||
bool valid = !fullpath.empty() ? (stat(fullpath.generic_string().c_str(), &st) == 0) : false;
|
||||
struct stat st{};
|
||||
|
||||
bool valid = (StatCache::stat(inc.filename.c_str(), &st) == 0);
|
||||
if (valid && !inc.valid) return true; // Detect appearance of file but not removal
|
||||
if (valid && st.st_mtime > inc.mtime) return true;
|
||||
|
||||
|
|
@ -109,7 +105,7 @@ bool FileModule::handleDependencies()
|
|||
// If a lib in usedlibs was previously missing, we need to relocate it
|
||||
// by searching the applicable paths. We can identify a previously missing module
|
||||
// as it will have a relative path.
|
||||
for(auto filename : this->usedlibs) {
|
||||
for (auto filename : this->usedlibs) {
|
||||
|
||||
bool wasmissing = false;
|
||||
bool found = true;
|
||||
|
|
@ -137,6 +133,9 @@ bool FileModule::handleDependencies()
|
|||
if (changed) {
|
||||
PRINTDB(" %s: %p -> %p", filename % oldmodule % newmodule);
|
||||
}
|
||||
else {
|
||||
PRINTDB(" %s: %p", filename % oldmodule);
|
||||
}
|
||||
somethingchanged |= changed;
|
||||
// Only print warning if we're not part of an automatic reload
|
||||
if (!newmodule && !wascached && !wasmissing) {
|
||||
|
|
@ -145,9 +144,9 @@ bool FileModule::handleDependencies()
|
|||
}
|
||||
}
|
||||
|
||||
// Relative filenames which were located is reinserted as absolute filenames
|
||||
// Relative filenames which were located are reinserted as absolute filenames
|
||||
typedef std::pair<std::string,std::string> stringpair;
|
||||
for(const auto &files : updates) {
|
||||
for (const auto &files : updates) {
|
||||
this->usedlibs.erase(files.first);
|
||||
this->usedlibs.insert(files.second);
|
||||
}
|
||||
|
|
@ -155,17 +154,19 @@ bool FileModule::handleDependencies()
|
|||
return somethingchanged;
|
||||
}
|
||||
|
||||
AbstractNode *FileModule::instantiate(const Context *ctx, const ModuleInstantiation *inst, EvalContext *evalctx) const
|
||||
AbstractNode *FileModule::instantiate(const Context *ctx, const ModuleInstantiation *inst,
|
||||
EvalContext *evalctx) const
|
||||
{
|
||||
assert(evalctx == NULL);
|
||||
assert(evalctx == nullptr);
|
||||
|
||||
FileContext context(ctx);
|
||||
return this->instantiateWithFileContext(&context, inst, evalctx);
|
||||
}
|
||||
|
||||
AbstractNode *FileModule::instantiateWithFileContext(FileContext *ctx, const ModuleInstantiation *inst, EvalContext *evalctx) const
|
||||
AbstractNode *FileModule::instantiateWithFileContext(FileContext *ctx, const ModuleInstantiation *inst,
|
||||
EvalContext *evalctx) const
|
||||
{
|
||||
assert(evalctx == NULL);
|
||||
assert(evalctx == nullptr);
|
||||
|
||||
AbstractNode *node = new RootNode(inst);
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ public:
|
|||
FileModule() : is_handling_dependencies(false) {}
|
||||
virtual ~FileModule();
|
||||
|
||||
virtual AbstractNode *instantiate(const Context *ctx, const ModuleInstantiation *inst, EvalContext *evalctx = NULL) const;
|
||||
virtual AbstractNode *instantiate(const Context *ctx, const ModuleInstantiation *inst, EvalContext *evalctx = nullptr) const;
|
||||
virtual std::string dump(const std::string &indent, const std::string &name) const;
|
||||
AbstractNode *instantiateWithFileContext(class FileContext *ctx, const ModuleInstantiation *inst, EvalContext *evalctx) const;
|
||||
|
||||
void setModulePath(const std::string &path) { this->path = path; }
|
||||
void setModulePath(const std::string &path) { this->path = path; }
|
||||
const std::string &modulePath() const { return this->path; }
|
||||
void registerUse(const std::string path);
|
||||
void registerUse(const std::string path);
|
||||
void registerInclude(const std::string &localpath, const std::string &fullpath);
|
||||
bool includesChanged() const;
|
||||
bool handleDependencies();
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include "ModuleCache.h"
|
||||
#include "StatCache.h"
|
||||
#include "FileModule.h"
|
||||
#include "printutils.h"
|
||||
#include "openscad.h"
|
||||
|
|
@ -18,21 +19,22 @@ namespace fs=boost::filesystem;
|
|||
FIXME: Implement an LRU scheme to avoid having an ever-growing module cache
|
||||
*/
|
||||
|
||||
ModuleCache *ModuleCache::inst = NULL;
|
||||
ModuleCache *ModuleCache::inst = nullptr;
|
||||
|
||||
/*!
|
||||
Reevaluate the given file and all it's dependencies and recompile anything
|
||||
needing reevaluation. Updates the cache if necessary.
|
||||
The given filename must be absolute.
|
||||
|
||||
Sets the module reference to the new module, or NULL on any error (e.g. compile
|
||||
Sets the module reference to the new module, or nullptr on any error (e.g. compile
|
||||
error or file not found).
|
||||
|
||||
Returns true if anything was compiled (module or dependencies) and false otherwise.
|
||||
*/
|
||||
bool ModuleCache::evaluate(const std::string &filename, FileModule *&module)
|
||||
{
|
||||
FileModule *lib_mod = NULL;
|
||||
module = nullptr;
|
||||
FileModule *lib_mod = nullptr;
|
||||
bool found = false;
|
||||
if (this->entries.find(filename) != this->entries.end()) {
|
||||
found = true;
|
||||
|
|
@ -44,9 +46,8 @@ bool ModuleCache::evaluate(const std::string &filename, FileModule *&module)
|
|||
if (lib_mod && lib_mod->isHandlingDependencies()) return false;
|
||||
|
||||
// Create cache ID
|
||||
struct stat st;
|
||||
memset(&st, 0, sizeof(struct stat));
|
||||
bool valid = (stat(filename.c_str(), &st) == 0);
|
||||
struct stat st{};
|
||||
bool valid = (StatCache::stat(filename.c_str(), &st) == 0);
|
||||
|
||||
// If file isn't there, just return and let the cache retain the old module
|
||||
if (!valid) return false;
|
||||
|
|
@ -57,7 +58,7 @@ bool ModuleCache::evaluate(const std::string &filename, FileModule *&module)
|
|||
cache_entry &entry = this->entries[filename];
|
||||
// Initialize entry, if new
|
||||
if (!found) {
|
||||
entry.module = NULL;
|
||||
entry.module = nullptr;
|
||||
entry.cache_id = cache_id;
|
||||
}
|
||||
|
||||
|
|
@ -68,7 +69,7 @@ bool ModuleCache::evaluate(const std::string &filename, FileModule *&module)
|
|||
shouldCompile = false;
|
||||
// Recompile if includes changed
|
||||
if (lib_mod && lib_mod->includesChanged()) {
|
||||
lib_mod = NULL;
|
||||
lib_mod = nullptr;
|
||||
shouldCompile = true;
|
||||
}
|
||||
}
|
||||
|
|
@ -105,7 +106,7 @@ bool ModuleCache::evaluate(const std::string &filename, FileModule *&module)
|
|||
|
||||
FileModule *oldmodule = lib_mod;
|
||||
|
||||
fs::path pathname = fs::path(filename);
|
||||
fs::path pathname = fs::path(filename);
|
||||
lib_mod = parse(textbuf.str().c_str(), pathname, false);
|
||||
PRINTDB(" compiled module: %p", lib_mod);
|
||||
|
||||
|
|
@ -131,11 +132,10 @@ void ModuleCache::clear()
|
|||
|
||||
FileModule *ModuleCache::lookup(const std::string &filename)
|
||||
{
|
||||
return isCached(filename) ? this->entries[filename].module : NULL;
|
||||
return isCached(filename) ? this->entries[filename].module : nullptr;
|
||||
}
|
||||
|
||||
bool ModuleCache::isCached(const std::string &filename)
|
||||
{
|
||||
return this->entries.find(filename) != this->entries.end();
|
||||
}
|
||||
|
||||
|
|
|
|||
64
src/StatCache.cc
Normal file
64
src/StatCache.cc
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* OpenSCAD (www.openscad.org)
|
||||
* Copyright (C) 2009-2011 Clifford Wolf <clifford@clifford.at> and
|
||||
* Marius Kintel <marius@kintel.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* As a special exception, you have permission to link this program
|
||||
* with the CGAL library and distribute executables, as long as you
|
||||
* follow the requirements of the GNU GPL in regard to all of the
|
||||
* software in the executable aside from CGAL.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#include "StatCache.h"
|
||||
#include "printutils.h"
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <ctime>
|
||||
|
||||
const float stale = 0.190; // Maximum lifetime of a cache entry chosen to be shorter than the automatic reload poll time
|
||||
|
||||
struct CacheEntry {
|
||||
struct stat st; // result from stat
|
||||
clock_t timestamp; // the time stat was called
|
||||
};
|
||||
|
||||
typedef std::unordered_map<std::string, CacheEntry> StatMap;
|
||||
|
||||
static StatMap statMap;
|
||||
|
||||
int StatCache::stat(const char *path, struct stat *st)
|
||||
{
|
||||
StatMap::iterator iter = statMap.find(path);
|
||||
if (iter != statMap.end()) { // Have we got an entry for this file?
|
||||
clock_t age = clock() - iter->second.timestamp; // How old is it?
|
||||
if(float(age) / CLOCKS_PER_SEC < stale) { // Not stale yet so return it
|
||||
*st = iter->second.st;
|
||||
return 0;
|
||||
}
|
||||
statMap.erase(iter); // Remove state entry
|
||||
}
|
||||
CacheEntry entry; // Make a new entry
|
||||
if (int rv = ::stat(path, &entry.st)) return rv; // stat failed
|
||||
entry.timestamp = clock(); // Add the current time
|
||||
statMap[path] = entry;
|
||||
*st = entry.st;
|
||||
return 0;
|
||||
}
|
||||
|
||||
32
src/StatCache.h
Normal file
32
src/StatCache.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* OpenSCAD (www.openscad.org)
|
||||
* Copyright (C) 2009-2011 Clifford Wolf <clifford@clifford.at> and
|
||||
* Marius Kintel <marius@kintel.net>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* As a special exception, you have permission to link this program
|
||||
* with the CGAL library and distribute executables, as long as you
|
||||
* follow the requirements of the GNU GPL in regard to all of the
|
||||
* software in the executable aside from CGAL.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
class StatCache {
|
||||
public:
|
||||
static int stat(const char *, struct stat *);
|
||||
};
|
||||
|
|
@ -89,7 +89,7 @@ fs::path boostfs_normalize(const fs::path &path)
|
|||
* iterate path and base
|
||||
* compare all elements so far of path and base
|
||||
* whilst they are the same, no write to output
|
||||
x2 * when they change, or one runs out:
|
||||
* when they change, or one runs out:
|
||||
* write to output, ../ times the number of remaining elements in base
|
||||
* write to output, the remaining elements in path
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
%option prefix="comment_lexer"
|
||||
|
||||
%{
|
||||
#include "Assignment.h"
|
||||
#include "expression.h"
|
||||
|
|
|
|||
|
|
@ -24,6 +24,8 @@
|
|||
*
|
||||
*/
|
||||
|
||||
%option prefix="lexer"
|
||||
|
||||
%{
|
||||
|
||||
#include <glib.h>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "modcontext.h"
|
||||
#include "module.h"
|
||||
#include "ModuleInstantiation.h"
|
||||
#include "UserModule.h"
|
||||
#include "expression.h"
|
||||
#include "function.h"
|
||||
#include "annotation.h"
|
||||
|
|
@ -12,24 +13,43 @@ LocalScope::LocalScope()
|
|||
|
||||
LocalScope::~LocalScope()
|
||||
{
|
||||
for(auto &v : children) delete v;
|
||||
for(auto &f : functions) delete f.second;
|
||||
for(auto &m : modules) delete m.second;
|
||||
for (auto &v : children) delete v;
|
||||
for (auto &f : functions) delete f.second;
|
||||
for (auto &m : modules) delete m.second;
|
||||
}
|
||||
|
||||
void LocalScope::addChild(ModuleInstantiation *ch)
|
||||
void LocalScope::addChild(ModuleInstantiation *modinst)
|
||||
{
|
||||
assert(ch != NULL);
|
||||
this->children.push_back(ch);
|
||||
assert(modinst);
|
||||
this->children.push_back(modinst);
|
||||
}
|
||||
|
||||
void LocalScope::addModule(const std::string &name, class UserModule *module)
|
||||
{
|
||||
assert(module);
|
||||
this->modules[name] = module;
|
||||
this->astModules.push_back({name, module});
|
||||
}
|
||||
|
||||
void LocalScope::addFunction(class UserFunction *func)
|
||||
{
|
||||
assert(func);
|
||||
this->functions[func->name] = func;
|
||||
this->astFunctions.push_back({func->name, func});
|
||||
}
|
||||
|
||||
void LocalScope::addAssignment(const Assignment &ass)
|
||||
{
|
||||
this->assignments.push_back(ass);
|
||||
}
|
||||
|
||||
std::string LocalScope::dump(const std::string &indent) const
|
||||
{
|
||||
std::stringstream dump;
|
||||
for (const auto &f : this->functions) {
|
||||
for (const auto &f : this->astFunctions) {
|
||||
dump << f.second->dump(indent, f.first);
|
||||
}
|
||||
for (const auto &m : this->modules) {
|
||||
for (const auto &m : this->astModules) {
|
||||
dump << m.second->dump(indent, m.first);
|
||||
}
|
||||
for (const auto &ass : this->assignments) {
|
||||
|
|
|
|||
|
|
@ -12,13 +12,21 @@ public:
|
|||
size_t numElements() const { return assignments.size() + children.size(); }
|
||||
std::string dump(const std::string &indent) const;
|
||||
std::vector<class AbstractNode*> instantiateChildren(const class Context *evalctx) const;
|
||||
void addChild(class ModuleInstantiation *ch);
|
||||
void addChild(class ModuleInstantiation *astnode);
|
||||
void addModule(const std::string &name, class UserModule *module);
|
||||
void addFunction(class UserFunction *function);
|
||||
void addAssignment(const class Assignment &ass);
|
||||
void apply(Context &ctx) const;
|
||||
|
||||
AssignmentList assignments;
|
||||
std::vector<ModuleInstantiation*> children;
|
||||
|
||||
// Modules and functions are stored twice; once for lookup and once for AST serialization
|
||||
typedef std::unordered_map<std::string, class AbstractFunction*> FunctionContainer;
|
||||
FunctionContainer functions;
|
||||
std::vector<std::pair<std::string, AbstractFunction*>> astFunctions;
|
||||
|
||||
typedef std::unordered_map<std::string, class AbstractModule*> AbstractModuleContainer;
|
||||
AbstractModuleContainer modules;
|
||||
std::vector<std::pair<std::string, AbstractModule*>> astModules;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -455,7 +455,7 @@ int cmdline(const char *deps_output_file, const std::string &filename, Camera &c
|
|||
}
|
||||
else {
|
||||
fs::current_path(fparent); // Force exported filenames to be relative to document path
|
||||
fstream << root_module->dump("", "") << "\n";
|
||||
fstream << root_module->dump("", "");
|
||||
fstream.close();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ void ParameterWidget::onSetDelete()
|
|||
{
|
||||
if (root.empty()) return;
|
||||
std::string setName=comboBox->itemData(this->comboBox->currentIndex()).toString().toStdString();
|
||||
root.get_child(ParameterSet::parameterSetsKey).erase(setName);
|
||||
root.get_child(ParameterSet::parameterSetsKey).erase(pt::ptree::key_type(setName));
|
||||
writeParameterSet(this->jsonFile);
|
||||
this->comboBox->clear();
|
||||
setComboBoxForSet();
|
||||
|
|
@ -101,7 +101,7 @@ void ParameterWidget::readFile(QString scadFile)
|
|||
this->deleteButton->setDisabled(true);
|
||||
this->deleteButton->setToolTip("JSON file read only");
|
||||
}
|
||||
disconnect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onSetChanged(int)));
|
||||
disconnect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onSetChanged(int)));
|
||||
this->comboBox->clear();
|
||||
setComboBoxForSet();
|
||||
connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onSetChanged(int)));
|
||||
|
|
|
|||
|
|
@ -35,18 +35,22 @@ boost::optional<pt::ptree &> ParameterSet::getParameterSet(const std::string &se
|
|||
return sets;
|
||||
}
|
||||
|
||||
boost::optional<pt::ptree &> set = sets.get().get_child_optional(setName);
|
||||
return set;
|
||||
pt::ptree::assoc_iterator set = sets.get().find(pt::ptree::key_type(setName));
|
||||
if(set!=sets.get().not_found()) {
|
||||
return set->second;
|
||||
}
|
||||
return sets;
|
||||
}
|
||||
|
||||
void ParameterSet::addParameterSet(const std::string setName, const pt::ptree & set)
|
||||
{
|
||||
boost::optional<pt::ptree &> sets = parameterSets();
|
||||
if (sets.is_initialized()) {
|
||||
sets.get().erase(setName);
|
||||
sets.get().erase(pt::ptree::key_type(setName));
|
||||
}
|
||||
|
||||
root.add_child(ParameterSet::parameterSetsKey + "." + setName, set);
|
||||
sets.get().push_back(pt::ptree::value_type(setName,set));
|
||||
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
@ -88,9 +92,9 @@ void ParameterSet::applyParameterSet(FileModule *fileModule, const std::string &
|
|||
if (fileModule == NULL || this->root.empty()) return;
|
||||
try {
|
||||
ModuleContext ctx;
|
||||
std::string path = parameterSetsKey + "." + setName;
|
||||
boost::optional<pt::ptree &> set = getParameterSet(setName);
|
||||
for (auto &assignment : fileModule->scope.assignments) {
|
||||
for (auto &v : root.get_child(path)) {
|
||||
for (auto &v : set.get()) {
|
||||
if (v.first == assignment.name) {
|
||||
const ValuePtr defaultValue = assignment.expr->evaluate(&ctx);
|
||||
if (defaultValue->type() == Value::STRING) {
|
||||
|
|
|
|||
20
src/parser.y
20
src/parser.y
|
|
@ -165,17 +165,17 @@ statement:
|
|||
| '{' inner_input '}'
|
||||
| module_instantiation
|
||||
{
|
||||
if ($1) scope_stack.top()->addChild($1);
|
||||
if ($1) scope_stack.top()->addChild($1);
|
||||
}
|
||||
| assignment
|
||||
| TOK_MODULE TOK_ID '(' arguments_decl optional_commas ')'
|
||||
{
|
||||
UserModule *newmodule = new UserModule(LOC(@$));
|
||||
newmodule->definition_arguments = *$4;
|
||||
scope_stack.top()->modules[$2] = newmodule;
|
||||
scope_stack.push(&newmodule->scope);
|
||||
free($2);
|
||||
delete $4;
|
||||
newmodule->definition_arguments = *$4;
|
||||
scope_stack.top()->addModule($2, newmodule);
|
||||
scope_stack.push(&newmodule->scope);
|
||||
free($2);
|
||||
delete $4;
|
||||
}
|
||||
statement
|
||||
{
|
||||
|
|
@ -184,9 +184,9 @@ statement:
|
|||
| TOK_FUNCTION TOK_ID '(' arguments_decl optional_commas ')' '=' expr
|
||||
{
|
||||
UserFunction *func = UserFunction::create($2, *$4, shared_ptr<Expression>($8), LOC(@$));
|
||||
scope_stack.top()->functions[$2] = func;
|
||||
free($2);
|
||||
delete $4;
|
||||
scope_stack.top()->addFunction(func);
|
||||
free($2);
|
||||
delete $4;
|
||||
}
|
||||
';'
|
||||
;
|
||||
|
|
@ -209,7 +209,7 @@ assignment:
|
|||
}
|
||||
}
|
||||
if (!found) {
|
||||
scope_stack.top()->assignments.push_back(Assignment($1, shared_ptr<Expression>($3), LOC(@$)));
|
||||
scope_stack.top()->addAssignment(Assignment($1, shared_ptr<Expression>($3), LOC(@$)));
|
||||
}
|
||||
free($1);
|
||||
}
|
||||
|
|
|
|||
40
testdata/scad/customizer/setofparameter.json
vendored
40
testdata/scad/customizer/setofparameter.json
vendored
|
|
@ -1,8 +1,6 @@
|
|||
{
|
||||
"parameterSets":
|
||||
{
|
||||
"firstSet":
|
||||
{
|
||||
"parameterSets": {
|
||||
"firstSet": {
|
||||
"Labeled_value": " \/*New *\/ ",
|
||||
"Labeled_values": "100",
|
||||
"Numbers": "1",
|
||||
|
|
@ -14,10 +12,9 @@
|
|||
"Vector2": "[12,4, 45, 23]",
|
||||
"slider": "38",
|
||||
"stepSlider": "12",
|
||||
"stringVector":"[hello, new, 12]"
|
||||
"stringVector": "[hello, new, 12]"
|
||||
},
|
||||
"wrongSetValues":
|
||||
{
|
||||
"wrongSetValues": {
|
||||
"Labeled_value": "S new",
|
||||
"Labeled_values": "wrong type",
|
||||
"Numbers": "2",
|
||||
|
|
@ -30,12 +27,27 @@
|
|||
"slider": "34",
|
||||
"stepSlider": "2"
|
||||
},
|
||||
"thirdSet":
|
||||
{
|
||||
"Labeled_value":"S new",
|
||||
"non existing":"value",
|
||||
"nonparameter" : "second",
|
||||
"stringVector":"[ \" hello\",\" new \"]"
|
||||
"thirdSet": {
|
||||
"Labeled_value": "S new",
|
||||
"non existing": "value",
|
||||
"nonparameter": "second",
|
||||
"stringVector": "[ \" hello\",\" new \"]"
|
||||
},
|
||||
"Name.dot": {
|
||||
"Labeled_value": "S",
|
||||
"Labeled_values": "10",
|
||||
"Numbers": "2",
|
||||
"Spinbox": "5",
|
||||
"String": "withDotInSetName",
|
||||
"Strings": "foo",
|
||||
"Variable": "false",
|
||||
"Vector": "[12, 34, 44, 43, 23, 23]",
|
||||
"Vector2": "[12, 34, 45, 23]",
|
||||
"nonparameter": "newWithDot",
|
||||
"slider": "80",
|
||||
"stepSlider": "2",
|
||||
"stringVector": "[\"1\", \"2\"]"
|
||||
}
|
||||
}
|
||||
},
|
||||
"fileFormatVersion": "1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -442,7 +442,7 @@ find_package(FLEX REQUIRED)
|
|||
if (WIN32)
|
||||
set(FLEX_UNISTD_FLAG "-DYY_NO_UNISTD_H")
|
||||
endif()
|
||||
FLEX_TARGET(OpenSCADlexer ../src/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cxx COMPILE_FLAGS "-Plexer ${FLEX_UNISTD_FLAG}")
|
||||
FLEX_TARGET(OpenSCADlexer ../src/lexer.l ${CMAKE_CURRENT_BINARY_DIR}/lexer.cxx COMPILE_FLAGS "${FLEX_UNISTD_FLAG}")
|
||||
BISON_TARGET(OpenSCADparser ../src/parser.y ${CMAKE_CURRENT_BINARY_DIR}/parser.cxx COMPILE_FLAGS "-p parser")
|
||||
ADD_FLEX_BISON_DEPENDENCY(OpenSCADlexer OpenSCADparser)
|
||||
set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/parser_yacc.c PROPERTIES LANGUAGE "CXX")
|
||||
|
|
@ -699,6 +699,7 @@ set(CORE_SOURCES
|
|||
../src/AST.cc
|
||||
../src/ModuleInstantiation.cc
|
||||
../src/ModuleCache.cc
|
||||
../src/StatCache.cc
|
||||
../src/node.cc
|
||||
../src/NodeVisitor.cc
|
||||
../src/context.cc
|
||||
|
|
@ -1148,15 +1149,24 @@ list(APPEND EXAMPLE_2D_FILES
|
|||
|
||||
list(APPEND EXAMPLE_FILES ${EXAMPLE_3D_FILES} ${EXAMPLE_2D_FILES})
|
||||
|
||||
list(APPEND ECHO_FILES ${FUNCTION_FILES}
|
||||
list(APPEND MISC_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/escape-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/include-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/use-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/assert-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/let-module-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/localfiles-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/localfiles_dir/localfiles-compatibility-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allexpressions.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allfunctions.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allmodules.scad)
|
||||
|
||||
list(APPEND ECHO_FILES ${FUNCTION_FILES} ${MISC_FILES}
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/3D/features/for-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/expression-evaluation-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/echo-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/assert-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/assert-fail1-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/assert-fail2-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/assert-fail3-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/escape-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/parser-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/builtin-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/dim-all.scad
|
||||
|
|
@ -1187,7 +1197,6 @@ list(APPEND ECHO_FILES ${FUNCTION_FILES}
|
|||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/nbsp-utf8-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/nbsp-latin1-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/concat-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/include-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/include-recursive-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/operators-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/issues/issue1472.scad
|
||||
|
|
@ -1196,17 +1205,19 @@ list(APPEND ECHO_FILES ${FUNCTION_FILES}
|
|||
${CMAKE_SOURCE_DIR}/../testdata/scad/issues/issue1528.scad
|
||||
)
|
||||
|
||||
list(APPEND DUMPTEST_FILES ${FEATURES_2D_FILES} ${FEATURES_3D_FILES} ${DEPRECATED_3D_FILES})
|
||||
list(APPEND DUMPTEST_FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/misc/escape-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/include-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/use-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/assert-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/let-module-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/localfiles-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/localfiles_dir/localfiles-compatibility-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allexpressions.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allfunctions.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allmodules.scad)
|
||||
list(APPEND ASTDUMPTEST_FILES ${MISC_FILES}
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/assert-expression-fail1-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/assert-expression-fail2-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/assert-expression-fail3-test.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/assert-expression-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/echo-expression-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/let-test-single.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/let-tests.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/list-comprehensions-experimental.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/functions/list-comprehensions.scad
|
||||
)
|
||||
|
||||
list(APPEND DUMPTEST_FILES ${FEATURES_2D_FILES} ${FEATURES_3D_FILES} ${DEPRECATED_3D_FILES} ${MISC_FILES})
|
||||
|
||||
list(APPEND CGALPNGTEST_2D_FILES ${FEATURES_2D_FILES} ${SCAD_DXF_FILES} ${EXAMPLE_2D_FILES})
|
||||
list(APPEND CGALPNGTEST_3D_FILES ${FEATURES_3D_FILES} ${SCAD_AMF_FILES} ${DEPRECATED_3D_FILES} ${ISSUES_3D_FILES} ${EXAMPLE_3D_FILES})
|
||||
|
|
@ -1347,7 +1358,8 @@ disable_tests(csgpngtest_primitive-inf-tests
|
|||
cgalpngtest_empty-shape-tests
|
||||
csgpngtest_issue1258)
|
||||
|
||||
experimental_tests(echotest_list-comprehensions-experimental
|
||||
experimental_tests(astdumptest_list-comprehensions-experimental
|
||||
echotest_list-comprehensions-experimental
|
||||
cgalpngtest_cube-with-hole
|
||||
cgalpngtest_multi-volume-binary
|
||||
cgalpngtest_sphere20face
|
||||
|
|
@ -1369,6 +1381,7 @@ experimental_tests(echotest_list-comprehensions-experimental
|
|||
throwntogethertest_split_pyramid
|
||||
throwntogethertest_tetra_multicolor
|
||||
dumptest_assert-tests
|
||||
astdumptest_assert-tests
|
||||
echotest_assert-tests
|
||||
cgalpngtest_assert-tests
|
||||
opencsgtest_assert-tests
|
||||
|
|
@ -1381,7 +1394,12 @@ experimental_tests(echotest_list-comprehensions-experimental
|
|||
echotest_assert-expression-tests
|
||||
echotest_assert-expression-fail1-test
|
||||
echotest_assert-expression-fail2-test
|
||||
echotest_assert-expression-fail3-test)
|
||||
echotest_assert-expression-fail3-test
|
||||
astdumptest_echo-expression-tests
|
||||
astdumptest_assert-expression-tests
|
||||
astdumptest_assert-expression-fail1-test
|
||||
astdumptest_assert-expression-fail2-test
|
||||
astdumptest_assert-expression-fail3-test)
|
||||
|
||||
# Test config handling
|
||||
|
||||
|
|
@ -1583,10 +1601,7 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/CTestCustom.cmake ${TMP})
|
|||
# o dxfpngtest: Export to DXF, Re-import and render to PNG (--render=cgal)
|
||||
#
|
||||
|
||||
add_cmdline_test(moduledumptest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX ast FILES
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allmodules.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allfunctions.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allexpressions.scad)
|
||||
add_cmdline_test(astdumptest EXE ${OPENSCAD_BINPATH} ARGS -o SUFFIX ast FILES ${ASTDUMPTEST_FILES})
|
||||
add_cmdline_test(csgtexttest SUFFIX txt FILES
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allexpressions.scad
|
||||
${CMAKE_SOURCE_DIR}/../testdata/scad/misc/allfunctions.scad
|
||||
|
|
@ -1673,6 +1688,7 @@ add_cmdline_test(customizertest-first EXE ${OPENSCAD_BINPATH} ARGS --enable=cust
|
|||
add_cmdline_test(customizertest-wrong EXE ${OPENSCAD_BINPATH} ARGS --enable=customizer -p ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.json -P wrongSetValues -o SUFFIX ast FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.scad)
|
||||
add_cmdline_test(customizertest-incomplete EXE ${OPENSCAD_BINPATH} ARGS --enable=customizer -p ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.json -P thirdSet -o SUFFIX ast FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.scad)
|
||||
add_cmdline_test(customizertest-imgset EXE ${OPENSCAD_BINPATH} ARGS --enable=customizer -p ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.json -P imagine -o SUFFIX ast FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.scad)
|
||||
add_cmdline_test(customizertest-setNameWithDot EXE ${OPENSCAD_BINPATH} ARGS --enable=customizer -p ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.json -P Name.dot -o SUFFIX ast FILES ${CMAKE_SOURCE_DIR}/../testdata/scad/customizer/setofparameter.scad)
|
||||
# Tests using the actual OpenSCAD binary
|
||||
|
||||
# non-ASCII filenames
|
||||
|
|
|
|||
|
|
@ -35,4 +35,3 @@ ff = [for(a = [0, 1]) (if((a == 0)) ("A") else ("B"))];
|
|||
gg = [each (["a", 0, false])];
|
||||
hh = [for(a = [0 : 3]) (if((a < 2)) (if((a < 1)) (["+", a])) else (["-", a]))];
|
||||
ii = [for(a = 0, b = 1;(a < 5);a = (a + 1), b = (b + 2)) [a, (b * b)]];
|
||||
|
||||
|
|
@ -31,4 +31,3 @@ zb = cross();
|
|||
zc = parent_module();
|
||||
w = dxf_dim();
|
||||
x = dxf_cross();
|
||||
|
||||
|
|
@ -40,4 +40,3 @@ multmatrix();
|
|||
color();
|
||||
offset();
|
||||
text();
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
v = assert(false);
|
||||
echo(v);
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
a = 10;
|
||||
b = 20;
|
||||
v = assert(((a < 20) && (b < 20)), "Test! <html>&</html>");
|
||||
echo(v);
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
function f(x) = sin(x);
|
||||
module m(angle) {
|
||||
v = assert((f(angle) > 0)) 10;
|
||||
}
|
||||
m(270);
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
a = 3;
|
||||
b = 6;
|
||||
t0 = assert(true);
|
||||
t1 = assert("t1");
|
||||
t2 = assert((a * b));
|
||||
t3 = assert(condition = (a * b));
|
||||
t4 = (assert(true) a * b);
|
||||
c = 2;
|
||||
t5 = ((assert(condition = 2) a * b) * c);
|
||||
d = (c + 9);
|
||||
t6 = (((assert(condition = ((d + 5) > 15), message = str("value: ", (d + 5))) a * b) * c) * d);
|
||||
t7 = assert(true) [a, b];
|
||||
t8 = assert(true) [for(i = [1 : a]) ([i, b])];
|
||||
echo(t0 = t0);
|
||||
echo(t1 = t1);
|
||||
echo(t2 = t2);
|
||||
echo(t3 = t3);
|
||||
echo(t4 = t4);
|
||||
echo(t5 = t5);
|
||||
echo(t6 = t6);
|
||||
echo(t7 = t7);
|
||||
echo(t8 = t8);
|
||||
12
tests/regression/astdumptest/assert-tests-expected.ast
Normal file
12
tests/regression/astdumptest/assert-tests-expected.ast
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
a = 3;
|
||||
b = 6;
|
||||
c = 2;
|
||||
d = (c + 9);
|
||||
assert(true);
|
||||
assert("t1");
|
||||
assert((a * b));
|
||||
assert(condition = (a * b));
|
||||
assert(true) cube(8, center = true);
|
||||
translate([0, 20, 0]) assert(condition = 2) sphere(5);
|
||||
assert(condition = ((d + 5) > 15), message = str("value: ", (d + 5))) translate([15, 0, 0]) cylinder(8, 5, center = true);
|
||||
echo("assert-tests");
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
function f1(x) = [for(a = x) (echo(a = a) a)];
|
||||
function f2(x, i = 0) = ((echo(i) len(x) > i) ? (x[i] + f2(x, (i + 1))) : 0);
|
||||
function f3(x, i = 0) = ((len(x) > i) ? let(a = (x[i] + f3(x, (i + 1)))) echo(a) a : 0);
|
||||
a = 3;
|
||||
b = 6;
|
||||
c = 8;
|
||||
v = [2, 5, 7];
|
||||
t0 = echo();
|
||||
t1 = echo() undef;
|
||||
t2 = echo("t2");
|
||||
t3 = echo((a * b));
|
||||
t4 = echo(c = (a * b));
|
||||
t5 = (echo() a * b);
|
||||
t6 = ((echo(c = 2) a * b) * c);
|
||||
t7 = echo() [a, b];
|
||||
t8 = echo() [for(i = [1 : a]) ([i, b])];
|
||||
echo(t0 = t0);
|
||||
echo(t1 = t1);
|
||||
echo(t2 = t2);
|
||||
echo(t3 = t3);
|
||||
echo(t4 = t4);
|
||||
echo(t5 = t5);
|
||||
echo(t6 = t6);
|
||||
echo(t7 = t7);
|
||||
echo(t8 = t8);
|
||||
echo("f1(v) = ", f1(v));
|
||||
echo("f2(v) = ", f2(v));
|
||||
echo("f3(v) = ", f3(v));
|
||||
1
tests/regression/astdumptest/escape-test-expected.ast
Normal file
1
tests/regression/astdumptest/escape-test-expected.ast
Normal file
|
|
@ -0,0 +1 @@
|
|||
import(file = "B-\" C-\t D-\n E-'", layer = "A:\\ B:\" C:\t D:\n E:' F:\\\\");
|
||||
69
tests/regression/astdumptest/include-tests-expected.ast
Normal file
69
tests/regression/astdumptest/include-tests-expected.ast
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
function deg(angle) = ((360 * angle) / TAU);
|
||||
module test3() {
|
||||
cylinder(r1 = 0.7, r2 = 0.2, center = true);
|
||||
}
|
||||
module test4() {
|
||||
cylinder(r = 0.5, $fn = 10, center = true);
|
||||
}
|
||||
module test2() {
|
||||
cube(center = true);
|
||||
}
|
||||
module test5() {
|
||||
sphere(r = 0.5, $fn = 8);
|
||||
}
|
||||
module test5() {
|
||||
sphere(r = 0.5, $fn = 8);
|
||||
}
|
||||
module test6() {
|
||||
difference() {
|
||||
cube(center = true);
|
||||
cylinder(r = 0.4, h = 2, center = true);
|
||||
}
|
||||
}
|
||||
module test7() {
|
||||
cube([0.5, 0.5, 1], center = true);
|
||||
}
|
||||
module alignds420(position, rotation, screws = 0, axle_lenght = 0) {
|
||||
translate(position) rotate(rotation) {
|
||||
union() {
|
||||
translate([0, 0, 17]) {
|
||||
cylinder(r = 6, h = 8, $fn = 30);
|
||||
cylinder(r = 2.5, h = 10.5, $fn = 20);
|
||||
}
|
||||
translate([-6, -6, 0]) {
|
||||
cube([12, 22.8, 19.5], false);
|
||||
translate([0, -5, 17]) cube([12, 7, 2.5]);
|
||||
translate([0, 20.8, 17]) cube([12, 7, 2.5]);
|
||||
}
|
||||
if((screws > 0)) {
|
||||
translate([0, (-10.2 + 1.8), 11.5]) cylinder(r = (1.8 / 2), h = 6, $fn = 6);
|
||||
translate([0, (21 - 1.8), 11.5]) cylinder(r = (1.8 / 2), h = 6, $fn = 6);
|
||||
}
|
||||
translate([-6, 0, 19]) rotate([90, 0, 90]) triangle(4, 18, 12);
|
||||
translate([-6, -6, 19]) cube([12, 6.5, 4]);
|
||||
}
|
||||
if((axle_lenght > 0)) cylinder(r = 0.9, h = axle_lenght, center = true, $fn = 8);
|
||||
}
|
||||
}
|
||||
module test_alignds420() {
|
||||
alignds420(screws = 1);
|
||||
}
|
||||
module test1() {
|
||||
test2();
|
||||
translate([2, 0, 0]) test3();
|
||||
translate([2, -2, 0]) test4();
|
||||
translate([-2, 0, 0]) test5();
|
||||
translate([-2, -2, 0]) test6();
|
||||
translate([0, 2, 0]) test7();
|
||||
translate([0, -2, 0]) sphere(test2_variable, $fn = 16);
|
||||
translate([0, -4, 0]) cube([(TAU / 4), 0.5, 0.5], center = true);
|
||||
translate([-2, -4, 0]) cube([(deg(0.5) / 20), 0.5, 0.5], center = true);
|
||||
translate([2, -4, -0.5]) scale(0.05) alignds420([0, 0, 0], [0, 0, 0]);
|
||||
}
|
||||
test2_variable = 0.7;
|
||||
TAU = 6.28319;
|
||||
PI = (TAU / 2);
|
||||
mm_per_inch = 25.4;
|
||||
echo("included.scad");
|
||||
echo("included2.scad");
|
||||
test1();
|
||||
14
tests/regression/astdumptest/let-module-tests-expected.ast
Normal file
14
tests/regression/astdumptest/let-module-tests-expected.ast
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
a = 1;
|
||||
b = 2;
|
||||
c = 3;
|
||||
echo(a, b, c);
|
||||
let(a = 5, b = (a + 8), c = (a + b)) {
|
||||
echo(a, b, c);
|
||||
difference() {
|
||||
cube([a, b, c], center = true);
|
||||
let(b = (2 * a), c = (b * 2)) {
|
||||
echo(a, b, c);
|
||||
rotate([0, 90, 0]) cylinder(d = b, h = c, center = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
c = let(c = 1) [c];
|
||||
echo(c);
|
||||
16
tests/regression/astdumptest/let-tests-expected.ast
Normal file
16
tests/regression/astdumptest/let-tests-expected.ast
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
$a = 1;
|
||||
b = 1;
|
||||
echo(let() ($a * b));
|
||||
echo(let($a = 2, b = 3) ($a * b));
|
||||
echo(let(b = 2, $a = 3) ($a * b));
|
||||
echo(let($a = 2) ($a * b));
|
||||
echo(let(b = 3) ($a * b));
|
||||
echo(let($a = 2, b = 3, $a = 4) ($a * b));
|
||||
echo(let($a = 2, b = 3, b = 5) ($a * b));
|
||||
echo(let($a = 2, b = 3, $a = 4, b = 5) ($a * b));
|
||||
echo(let($a = 2, b = ($a * 3)) ($a * b));
|
||||
echo(let($a = (2 * b), b = 3) ($a * b));
|
||||
echo(let($a = (2 * b), b = ($a * 3)) ($a * b));
|
||||
echo(let(b = ($a * 3), $a = (2 * b)) ($a * b));
|
||||
echo(let(b = $a, $a = b) [$a, b]);
|
||||
echo(let(b = (2 * $a), $a = b) [for(i = [1 : b]) ([i, $a])]);
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
y = 0;
|
||||
z = 1;
|
||||
a = [for(x = [0 : 3]) ([for(y = [10 : 13]) ([x, y])])];
|
||||
echo([]);
|
||||
echo([let(x = 2) 1]);
|
||||
echo([let(x = 2) x]);
|
||||
echo([let(x = 2) x]);
|
||||
echo([if(y) (1)]);
|
||||
echo([if(z) (1)]);
|
||||
echo([for(x = [y, z]) (x)]);
|
||||
echo([for(x = [y : z]) (x)]);
|
||||
echo([for(x = [0 : -1 : 10]) (x)]);
|
||||
echo([for(x = [10 : 1 : 0]) (x)]);
|
||||
echo([for(x = [0 : 10]) (x)]);
|
||||
echo([for(x = [0 : 3]) (for(y = [10 : 13]) ([x, y]))]);
|
||||
echo([for(x = [0 : 3]) (for(y = [10 : 13]) ([x, y]))]);
|
||||
echo([for(x = [0 : 3]) ([for(y = [10 : 13]) ([x, y])])]);
|
||||
echo([for(x = [0 : 3]) (if((x == 1)) ([for(y = [10 : 13]) (if((y != 11)) ([x, y]))]))]);
|
||||
echo(a);
|
||||
echo([for(i = a) (for(j = i) (j))]);
|
||||
echo([for(i = a) (for(j = i) (for(k = j) (k)))]);
|
||||
echo([for(i = a) (for(j = i) (j))]);
|
||||
echo([for(i = a) (for(j = i) (for(k = j) (k)))]);
|
||||
echo([for(a = [0 : 1]) (a)]);
|
||||
echo([for(a = [0 : 1]) (if(true) (a))]);
|
||||
echo([for(a = [0 : 1]) (if(true) (if(true) (a)))]);
|
||||
echo([for(a = [0 : 1]) (for(b = [a : 2]) ([b, a]))]);
|
||||
echo([for(a = [0 : 1]) (if(true) (for(b = [a : 2]) ([b, a])))]);
|
||||
echo([for(a = [0 : 1]) (if(true) (if(true) (for(b = [a : 2]) ([b, a]))))]);
|
||||
echo([-1, for(a = [0 : 1 : 3]) (a), for(b = [3 : -1 : 0]) (b), -1]);
|
||||
echo([for(a = [2 : 3]) ((a * 2)), for(a = [5 : 9]) (if(((a % 2) == 0)) ([a, (a + 1)])), -1]);
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
function f() = [for(a = [0 : 4]) (pow(2, a))];
|
||||
echo([for(a = [0, 1, 2]) (if((a == 1)) ("-") else ("+"))]);
|
||||
echo([for(a = [0, 1, 2]) (if((a > 0)) (if((a == 1)) ("A") else ("B")))]);
|
||||
echo([for(a = [0, 1, 2]) (if((a > 0)) (if((a == 1)) ("A") else ("B")) else ("-"))]);
|
||||
echo([for(a = [0 : 3]) (if((a < 2)) (if((a < 1)) (["+", a]) else (["-", a])))]);
|
||||
echo([for(a = [0 : 3]) (if((a < 2)) (if((a < 1)) (["+", a])) else (["-", a]))]);
|
||||
echo([for(a = [2 : 4]) (each ([a, (a * a)]))]);
|
||||
echo([each (["a", "b"]), each ([-5 : -2 : -9]), each (f()), each ("c"), each (42), each (true)]);
|
||||
echo([for(i = 2;(i <= 10);i = (i + 2)) i]);
|
||||
echo([for(i = 1, n = 1;(i <= 4);i = (i + 1), n = ((n + i) * i)) [i, n]]);
|
||||
|
|
@ -0,0 +1 @@
|
|||
localfiles_submodule();
|
||||
|
|
@ -0,0 +1 @@
|
|||
localfiles_module();
|
||||
56
tests/regression/astdumptest/use-tests-expected.ast
Normal file
56
tests/regression/astdumptest/use-tests-expected.ast
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
function deg(angle) = ((360 * angle) / TAU);
|
||||
module test7() {
|
||||
cube([0.5, 0.5, 1], center = true);
|
||||
}
|
||||
module teardrop(radius, length, angle) {
|
||||
rotate([0, angle, 0]) union() {
|
||||
linear_extrude(height = length, center = true, convexity = radius, twist = 0) circle(r = radius, center = true, $fn = 30);
|
||||
linear_extrude(height = length, center = true, convexity = radius, twist = 0) projection(cut = false) rotate([0, -angle, 0]) translate([0, 0, ((radius * sin(45)) * 1.5)]) cylinder(h = (radius * sin(45)), r1 = (radius * sin(45)), r2 = 0, center = true, $fn = 30);
|
||||
}
|
||||
}
|
||||
module test_teardrop() {
|
||||
translate([0, -15, 0]) teardrop(5, 20, 90);
|
||||
translate([0, 0, 0]) teardrop(5, 20, 60);
|
||||
translate([0, 15, 0]) teardrop(5, 20, 45);
|
||||
}
|
||||
module alignds420(position, rotation, screws = 0, axle_lenght = 0) {
|
||||
translate(position) rotate(rotation) {
|
||||
union() {
|
||||
translate([0, 0, 17]) {
|
||||
cylinder(r = 6, h = 8, $fn = 30);
|
||||
cylinder(r = 2.5, h = 10.5, $fn = 20);
|
||||
}
|
||||
translate([-6, -6, 0]) {
|
||||
cube([12, 22.8, 19.5], false);
|
||||
translate([0, -5, 17]) cube([12, 7, 2.5]);
|
||||
translate([0, 20.8, 17]) cube([12, 7, 2.5]);
|
||||
}
|
||||
if((screws > 0)) {
|
||||
translate([0, (-10.2 + 1.8), 11.5]) cylinder(r = (1.8 / 2), h = 6, $fn = 6);
|
||||
translate([0, (21 - 1.8), 11.5]) cylinder(r = (1.8 / 2), h = 6, $fn = 6);
|
||||
}
|
||||
translate([-6, 0, 19]) rotate([90, 0, 90]) triangle(4, 18, 12);
|
||||
translate([-6, -6, 19]) cube([12, 6.5, 4]);
|
||||
}
|
||||
if((axle_lenght > 0)) cylinder(r = 0.9, h = axle_lenght, center = true, $fn = 8);
|
||||
}
|
||||
}
|
||||
module test_alignds420() {
|
||||
alignds420(screws = 1);
|
||||
}
|
||||
module test1() {
|
||||
test2();
|
||||
translate([4, 0, 0]) test3();
|
||||
translate([4, -2, 0]) test4();
|
||||
translate([-2, 0, 0]) test5();
|
||||
translate([-2, -2, 0]) test6();
|
||||
translate([0, 2, 0]) test7();
|
||||
translate([0, -2, 0]) sphere(test2_variable, $fn = 16);
|
||||
translate([0, -4, 0]) teardrop(0.3, 1.5, 90);
|
||||
translate([-2, -4, 0]) cube([(deg(0.5) / 20), 0.5, 0.5], center = true);
|
||||
translate([2, -4, -0.5]) scale(0.05) alignds420([0, 0, 0], [0, 0, 0]);
|
||||
}
|
||||
TAU = 6.28319;
|
||||
PI = (TAU / 2);
|
||||
mm_per_inch = 25.4;
|
||||
test1();
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
//Group("Drop down box:")
|
||||
//Description("combo box for nunber")
|
||||
//Parameter([0, 1, 2, 3])
|
||||
Numbers = 2;
|
||||
//Group("Drop down box:")
|
||||
//Description("combo box for string")
|
||||
//Parameter("")
|
||||
Strings = "foo";
|
||||
//Group("Drop down box:")
|
||||
//Description("labeled combo box for numbers")
|
||||
//Parameter([[10, "L"], [20, "M"], [30, "L"]])
|
||||
Labeled_values = 10;
|
||||
//Group("Drop down box:")
|
||||
//Description("labeled combo box for string")
|
||||
//Parameter([["S", "Small"], ["M", "Medium"], ["L", "Large"]])
|
||||
Labeled_value = "S";
|
||||
//Group(" Slider ")
|
||||
//Description("slider widget for number")
|
||||
//Parameter([10 : 100])
|
||||
slider = 80;
|
||||
//Group(" Slider ")
|
||||
//Description("step slider for number")
|
||||
//Parameter([0 : 5 : 100])
|
||||
stepSlider = 2;
|
||||
//Group("Checkbox")
|
||||
//Description("description")
|
||||
//Parameter("comment")
|
||||
Variable = false;
|
||||
//Group("Spinbox")
|
||||
//Description("spinbox with step size 23")
|
||||
//Parameter(23)
|
||||
Spinbox = 5;
|
||||
//Group("Textbox")
|
||||
//Description("Text box for vector with more than 4 elements")
|
||||
//Parameter("comment")
|
||||
Vector = [12, 34, 44, 43, 23, 23];
|
||||
//Group("Textbox")
|
||||
//Description("Text box for string")
|
||||
//Parameter("comment")
|
||||
String = "withDotInSetName";
|
||||
//Group("Special vector")
|
||||
//Description("Text box for vector with less than or equal to 4 elements")
|
||||
//Parameter("any thing")
|
||||
Vector2 = [12, 34, 45, 23];
|
||||
//Group("Special vector")
|
||||
//Parameter("")
|
||||
nonparameter = "newWithDot";
|
||||
//Group("Special vector")
|
||||
//Parameter("")
|
||||
stringVector = ["1", "2"];
|
||||
echo(String);
|
||||
1
tests/regression/echotest/allexpressions-expected.echo
Normal file
1
tests/regression/echotest/allexpressions-expected.echo
Normal file
|
|
@ -0,0 +1 @@
|
|||
ERROR: Experimental feature not enabled: 'lc-else'. Please check preferences.
|
||||
6
tests/regression/echotest/allfunctions-expected.echo
Normal file
6
tests/regression/echotest/allfunctions-expected.echo
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
WARNING: Invalid number of parameters for cross()
|
||||
WARNING: Parent module index (1) greater than the number of modules on the stack
|
||||
WARNING: Can't open DXF file ''.
|
||||
WARNING: Can't find dimension '' in '', layer ''!
|
||||
WARNING: Can't open DXF file ''.
|
||||
WARNING: Can't find cross in '', layer ''!
|
||||
8
tests/regression/echotest/allmodules-expected.echo
Normal file
8
tests/regression/echotest/allmodules-expected.echo
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
DEPRECATED: child() will be removed in future releases. Use children() instead.
|
||||
ECHO:
|
||||
DEPRECATED: The assign() module will be removed in future releases. Use a regular assignment instead.
|
||||
DEPRECATED: The dxf_linear_extrude() module will be removed in future releases. Use linear_extrude() instead.
|
||||
DEPRECATED: The dxf_rotate_extrude() module will be removed in future releases. Use rotate_extrude() instead.
|
||||
DEPRECATED: The import_stl() module will be removed in future releases. Use import() instead.
|
||||
DEPRECATED: The import_off() module will be removed in future releases. Use import() instead.
|
||||
DEPRECATED: The import_dxf() module will be removed in future releases. Use import() instead.
|
||||
3
tests/regression/echotest/let-module-tests-expected.echo
Normal file
3
tests/regression/echotest/let-module-tests-expected.echo
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
ECHO: 1, 2, 3
|
||||
ECHO: 5, 13, 18
|
||||
ECHO: 5, 10, 20
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
DEPRECATED: Imported file (localfile.dxf) found in document root instead of relative to the importing module. This behavior is deprecated
|
||||
DEPRECATED: Support for reading files in linear_extrude will be removed in future releases. Use a child import() instead.
|
||||
DEPRECATED: Support for reading files in rotate_extrude will be removed in future releases. Use a child import() instead.
|
||||
DEPRECATED: Imported file (localfile.dat) found in document root instead of relative to the importing module. This behavior is deprecated
|
||||
2
tests/regression/echotest/localfiles-test-expected.echo
Normal file
2
tests/regression/echotest/localfiles-test-expected.echo
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
DEPRECATED: Support for reading files in linear_extrude will be removed in future releases. Use a child import() instead.
|
||||
DEPRECATED: Support for reading files in rotate_extrude will be removed in future releases. Use a child import() instead.
|
||||
7
tests/regression/echotest/use-tests-expected.echo
Normal file
7
tests/regression/echotest/use-tests-expected.echo
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
WARNING: Can't open library ''.
|
||||
WARNING: Can't open library 'non/existent/path/non-file'.
|
||||
WARNING: Can't open library 'test/'.
|
||||
WARNING: Can't open library '/'.
|
||||
WARNING: Ignoring unknown module 'test3'.
|
||||
WARNING: Ignoring unknown module 'test4'.
|
||||
WARNING: Ignoring unknown variable 'test2_variable'.
|
||||
|
|
@ -117,8 +117,9 @@ stop()
|
|||
if [ -e $LOCKFILE ]; then
|
||||
rm $LOCKFILE
|
||||
fi
|
||||
cat virtualfb1.log
|
||||
cat virtualfb2.log
|
||||
# Very verbose debug output:
|
||||
# cat virtualfb1.log
|
||||
# cat virtualfb2.log
|
||||
echo 'dump ~/.xession-errors:'
|
||||
cat ~/.xsession-errors
|
||||
echo 'end ~/.xession-errors'
|
||||
|
|
|
|||
|
|
@ -119,12 +119,6 @@
|
|||
E05FBE9817C30A05004F525B /* CsgInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CsgInfo.h; sourceTree = "<group>"; };
|
||||
E05FBE9917C30A05004F525B /* csgnode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = csgnode.h; sourceTree = "<group>"; };
|
||||
E05FBE9A17C30A05004F525B /* csgops.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = csgops.cc; sourceTree = "<group>"; };
|
||||
E05FBE9B17C30A05004F525B /* csgterm.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = csgterm.cc; sourceTree = "<group>"; };
|
||||
E05FBE9C17C30A05004F525B /* csgterm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = csgterm.h; sourceTree = "<group>"; };
|
||||
E05FBE9D17C30A05004F525B /* CSGTermEvaluator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSGTermEvaluator.cc; sourceTree = "<group>"; };
|
||||
E05FBE9E17C30A06004F525B /* CSGTermEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSGTermEvaluator.h; sourceTree = "<group>"; };
|
||||
E05FBE9F17C30A06004F525B /* csgtermnormalizer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = csgtermnormalizer.cc; sourceTree = "<group>"; };
|
||||
E05FBEA017C30A06004F525B /* csgtermnormalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = csgtermnormalizer.h; sourceTree = "<group>"; };
|
||||
E05FBEA117C30A06004F525B /* dxfdata.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dxfdata.cc; sourceTree = "<group>"; };
|
||||
E05FBEA217C30A06004F525B /* dxfdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dxfdata.h; sourceTree = "<group>"; };
|
||||
E05FBEA317C30A06004F525B /* dxfdim.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dxfdim.cc; sourceTree = "<group>"; };
|
||||
|
|
@ -170,8 +164,6 @@
|
|||
E05FBED017C30A06004F525B /* mainwin.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mainwin.cc; sourceTree = "<group>"; };
|
||||
E05FBED117C30A06004F525B /* MainWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainWindow.h; sourceTree = "<group>"; };
|
||||
E05FBED217C30A06004F525B /* MainWindow.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = MainWindow.ui; sourceTree = "<group>"; };
|
||||
E05FBED317C30A06004F525B /* mathc99.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mathc99.cc; sourceTree = "<group>"; };
|
||||
E05FBED417C30A06004F525B /* mathc99.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mathc99.h; sourceTree = "<group>"; };
|
||||
E05FBED517C30A06004F525B /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = "<group>"; };
|
||||
E05FBED617C30A06004F525B /* modcontext.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modcontext.cc; sourceTree = "<group>"; };
|
||||
E05FBED717C30A06004F525B /* modcontext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modcontext.h; sourceTree = "<group>"; };
|
||||
|
|
@ -249,16 +241,12 @@
|
|||
E05FBF2817C30A06004F525B /* ThrownTogetherRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ThrownTogetherRenderer.h; sourceTree = "<group>"; };
|
||||
E05FBF2A17C30A06004F525B /* transform.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = transform.cc; sourceTree = "<group>"; };
|
||||
E05FBF2B17C30A06004F525B /* transformnode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = transformnode.h; sourceTree = "<group>"; };
|
||||
E05FBF2C17C30A06004F525B /* traverser.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = traverser.cc; sourceTree = "<group>"; };
|
||||
E05FBF2D17C30A06004F525B /* traverser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = traverser.h; sourceTree = "<group>"; };
|
||||
E05FBF2E17C30A06004F525B /* Tree.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Tree.cc; sourceTree = "<group>"; };
|
||||
E05FBF2F17C30A06004F525B /* Tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tree.h; sourceTree = "<group>"; };
|
||||
E05FBF3017C30A06004F525B /* typedefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = typedefs.h; sourceTree = "<group>"; };
|
||||
E05FBF3117C30A06004F525B /* value.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = value.cc; sourceTree = "<group>"; };
|
||||
E05FBF3217C30A06004F525B /* value.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = value.h; sourceTree = "<group>"; };
|
||||
E05FBF3317C30A06004F525B /* version_check.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = version_check.cc; sourceTree = "<group>"; };
|
||||
E05FBF3417C30A06004F525B /* version_check.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = version_check.h; sourceTree = "<group>"; };
|
||||
E05FBF3517C30A06004F525B /* visitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = visitor.h; sourceTree = "<group>"; };
|
||||
E08B63DC1955EEF40061A6E4 /* Camera.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Camera.cc; sourceTree = "<group>"; };
|
||||
E091574819AA58C900D699E9 /* calc.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = calc.cc; sourceTree = "<group>"; };
|
||||
E091574919AA58C900D699E9 /* calc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = calc.h; sourceTree = "<group>"; };
|
||||
|
|
@ -295,6 +283,83 @@
|
|||
E09A1CB31A9DAE64000021A3 /* scintillaeditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scintillaeditor.h; sourceTree = "<group>"; };
|
||||
E09A1CB41A9DAE64000021A3 /* settings.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = settings.cc; sourceTree = "<group>"; };
|
||||
E09A1CB51A9DAE64000021A3 /* settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = settings.h; sourceTree = "<group>"; };
|
||||
E0B9CA351E418FE400B90C7A /* annotation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = annotation.cc; sourceTree = "<group>"; };
|
||||
E0B9CA361E418FE400B90C7A /* annotation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = annotation.h; sourceTree = "<group>"; };
|
||||
E0B9CA371E418FE400B90C7A /* assignment.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assignment.cc; sourceTree = "<group>"; };
|
||||
E0B9CA381E418FE400B90C7A /* Assignment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Assignment.h; sourceTree = "<group>"; };
|
||||
E0B9CA391E418FE400B90C7A /* AST.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AST.cc; sourceTree = "<group>"; };
|
||||
E0B9CA3A1E418FE400B90C7A /* AST.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AST.h; sourceTree = "<group>"; };
|
||||
E0B9CA3B1E418FE400B90C7A /* BaseVisitable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseVisitable.h; sourceTree = "<group>"; };
|
||||
E0B9CA3C1E418FE400B90C7A /* cgalutils-applyops.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "cgalutils-applyops.cc"; sourceTree = "<group>"; };
|
||||
E0B9CA3D1E418FE400B90C7A /* cgalutils-project.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "cgalutils-project.cc"; sourceTree = "<group>"; };
|
||||
E0B9CA3E1E418FE400B90C7A /* comment_lexer.l */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.lex; path = comment_lexer.l; sourceTree = "<group>"; };
|
||||
E0B9CA3F1E418FE400B90C7A /* comment_parser.y */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.yacc; path = comment_parser.y; sourceTree = "<group>"; };
|
||||
E0B9CA401E418FE400B90C7A /* comment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = comment.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA411E418FF800B90C7A /* UserModule.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserModule.cc; sourceTree = "<group>"; };
|
||||
E0B9CA421E418FF800B90C7A /* UserModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserModule.h; sourceTree = "<group>"; };
|
||||
E0B9CA431E418FF800B90C7A /* WindowManager.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WindowManager.cc; sourceTree = "<group>"; };
|
||||
E0B9CA441E418FF800B90C7A /* WindowManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowManager.h; sourceTree = "<group>"; };
|
||||
E0B9CA451E41902600B90C7A /* csgnode.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = csgnode.cc; sourceTree = "<group>"; };
|
||||
E0B9CA461E41902600B90C7A /* csgops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = csgops.h; sourceTree = "<group>"; };
|
||||
E0B9CA471E41902600B90C7A /* CSGTreeEvaluator.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSGTreeEvaluator.cc; sourceTree = "<group>"; };
|
||||
E0B9CA481E41902600B90C7A /* CSGTreeEvaluator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSGTreeEvaluator.h; sourceTree = "<group>"; };
|
||||
E0B9CA491E41902600B90C7A /* CSGTreeNormalizer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSGTreeNormalizer.cc; sourceTree = "<group>"; };
|
||||
E0B9CA4A1E41902600B90C7A /* CSGTreeNormalizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSGTreeNormalizer.h; sourceTree = "<group>"; };
|
||||
E0B9CA4B1E41902600B90C7A /* export_amf.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = export_amf.cc; sourceTree = "<group>"; };
|
||||
E0B9CA4C1E41902700B90C7A /* export_dxf.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = export_dxf.cc; sourceTree = "<group>"; };
|
||||
E0B9CA4D1E41902700B90C7A /* export_nef.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = export_nef.cc; sourceTree = "<group>"; };
|
||||
E0B9CA4E1E41902700B90C7A /* export_off.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = export_off.cc; sourceTree = "<group>"; };
|
||||
E0B9CA4F1E41902700B90C7A /* export_stl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = export_stl.cc; sourceTree = "<group>"; };
|
||||
E0B9CA501E41902700B90C7A /* export_svg.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = export_svg.cc; sourceTree = "<group>"; };
|
||||
E0B9CA511E41902700B90C7A /* FileModule.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileModule.cc; sourceTree = "<group>"; };
|
||||
E0B9CA521E41902700B90C7A /* FileModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileModule.h; sourceTree = "<group>"; };
|
||||
E0B9CA531E41902700B90C7A /* function.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cc; sourceTree = "<group>"; };
|
||||
E0B9CA541E41902700B90C7A /* GroupModule.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GroupModule.cc; sourceTree = "<group>"; };
|
||||
E0B9CA551E41902700B90C7A /* GroupModule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GroupModule.h; sourceTree = "<group>"; };
|
||||
E0B9CA561E41902700B90C7A /* hash.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hash.cc; sourceTree = "<group>"; };
|
||||
E0B9CA571E41902700B90C7A /* hash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = "<group>"; };
|
||||
E0B9CA581E41902700B90C7A /* import_amf.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = import_amf.cc; sourceTree = "<group>"; };
|
||||
E0B9CA591E41902700B90C7A /* import_nef.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = import_nef.cc; sourceTree = "<group>"; };
|
||||
E0B9CA5A1E41902700B90C7A /* import_off.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = import_off.cc; sourceTree = "<group>"; };
|
||||
E0B9CA5B1E41902700B90C7A /* import_stl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = import_stl.cc; sourceTree = "<group>"; };
|
||||
E0B9CA5C1E41902700B90C7A /* import_svg.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = import_svg.cc; sourceTree = "<group>"; };
|
||||
E0B9CA5D1E41902700B90C7A /* import.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = import.h; sourceTree = "<group>"; };
|
||||
E0B9CA5E1E41902700B90C7A /* ModuleInstantiation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModuleInstantiation.cc; sourceTree = "<group>"; };
|
||||
E0B9CA5F1E41902700B90C7A /* ModuleInstantiation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModuleInstantiation.h; sourceTree = "<group>"; };
|
||||
E0B9CA601E41902700B90C7A /* NodeVisitor.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NodeVisitor.cc; sourceTree = "<group>"; };
|
||||
E0B9CA611E41902700B90C7A /* NodeVisitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeVisitor.h; sourceTree = "<group>"; };
|
||||
E0B9CA621E41902700B90C7A /* OpenSCADApp.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OpenSCADApp.cc; sourceTree = "<group>"; };
|
||||
E0B9CA631E41902700B90C7A /* OpenSCADApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenSCADApp.h; sourceTree = "<group>"; };
|
||||
E0B9CA641E41902700B90C7A /* Package.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Package.h; sourceTree = "<group>"; };
|
||||
E0B9CA651E41902700B90C7A /* polyset-gl.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "polyset-gl.cc"; sourceTree = "<group>"; };
|
||||
E0B9CA661E41904400B90C7A /* groupwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = groupwidget.cpp; path = parameter/groupwidget.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA671E41904400B90C7A /* groupwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = groupwidget.h; path = parameter/groupwidget.h; sourceTree = "<group>"; };
|
||||
E0B9CA681E41904400B90C7A /* parametercheckbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parametercheckbox.cpp; path = parameter/parametercheckbox.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA691E41904400B90C7A /* parametercheckbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parametercheckbox.h; path = parameter/parametercheckbox.h; sourceTree = "<group>"; };
|
||||
E0B9CA6A1E41904400B90C7A /* parametercombobox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parametercombobox.cpp; path = parameter/parametercombobox.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA6B1E41904400B90C7A /* parametercombobox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parametercombobox.h; path = parameter/parametercombobox.h; sourceTree = "<group>"; };
|
||||
E0B9CA6C1E41904400B90C7A /* ParameterEntryWidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = ParameterEntryWidget.ui; path = parameter/ParameterEntryWidget.ui; sourceTree = "<group>"; };
|
||||
E0B9CA6D1E41904400B90C7A /* parameterextractor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parameterextractor.cpp; path = parameter/parameterextractor.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA6E1E41904400B90C7A /* parameterextractor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parameterextractor.h; path = parameter/parameterextractor.h; sourceTree = "<group>"; };
|
||||
E0B9CA6F1E41904400B90C7A /* parameterobject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parameterobject.cpp; path = parameter/parameterobject.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA701E41904400B90C7A /* parameterobject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parameterobject.h; path = parameter/parameterobject.h; sourceTree = "<group>"; };
|
||||
E0B9CA711E41904400B90C7A /* parameterset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parameterset.cpp; path = parameter/parameterset.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA721E41904400B90C7A /* parameterset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parameterset.h; path = parameter/parameterset.h; sourceTree = "<group>"; };
|
||||
E0B9CA731E41904400B90C7A /* parameterslider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parameterslider.cpp; path = parameter/parameterslider.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA741E41904400B90C7A /* parameterslider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parameterslider.h; path = parameter/parameterslider.h; sourceTree = "<group>"; };
|
||||
E0B9CA751E41904400B90C7A /* parameterspinbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parameterspinbox.cpp; path = parameter/parameterspinbox.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA761E41904400B90C7A /* parameterspinbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parameterspinbox.h; path = parameter/parameterspinbox.h; sourceTree = "<group>"; };
|
||||
E0B9CA771E41904400B90C7A /* parametertext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parametertext.cpp; path = parameter/parametertext.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA781E41904400B90C7A /* parametertext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parametertext.h; path = parameter/parametertext.h; sourceTree = "<group>"; };
|
||||
E0B9CA791E41904400B90C7A /* parametervector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parametervector.cpp; path = parameter/parametervector.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA7A1E41904400B90C7A /* parametervector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parametervector.h; path = parameter/parametervector.h; sourceTree = "<group>"; };
|
||||
E0B9CA7B1E41904400B90C7A /* parametervirtualwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = parametervirtualwidget.cpp; path = parameter/parametervirtualwidget.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA7C1E41904400B90C7A /* parametervirtualwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = parametervirtualwidget.h; path = parameter/parametervirtualwidget.h; sourceTree = "<group>"; };
|
||||
E0B9CA7D1E41904400B90C7A /* ParameterWidget.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ParameterWidget.cc; path = parameter/ParameterWidget.cc; sourceTree = "<group>"; };
|
||||
E0B9CA7E1E41904400B90C7A /* ParameterWidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ParameterWidget.h; path = parameter/ParameterWidget.h; sourceTree = "<group>"; };
|
||||
E0B9CA7F1E41904400B90C7A /* ParameterWidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = ParameterWidget.ui; path = parameter/ParameterWidget.ui; sourceTree = "<group>"; };
|
||||
E0B9CA801E41904400B90C7A /* clipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = clipper.cpp; path = polyclipping/clipper.cpp; sourceTree = "<group>"; };
|
||||
E0B9CA811E41904400B90C7A /* clipper.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = clipper.hpp; path = polyclipping/clipper.hpp; sourceTree = "<group>"; };
|
||||
E0BD02071979C2D90020CC1B /* FontCache.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontCache.cc; sourceTree = "<group>"; };
|
||||
E0BD02081979C2D90020CC1B /* FontCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FontCache.h; sourceTree = "<group>"; };
|
||||
E0BD02091979C2D90020CC1B /* FontListDialog.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontListDialog.cc; sourceTree = "<group>"; };
|
||||
|
|
@ -382,10 +447,17 @@
|
|||
E05FBE6B17C30A05004F525B /* AboutDialog.h */,
|
||||
E05FBE6C17C30A05004F525B /* AboutDialog.html */,
|
||||
E05FBE6D17C30A05004F525B /* AboutDialog.ui */,
|
||||
E0B9CA351E418FE400B90C7A /* annotation.cc */,
|
||||
E0B9CA361E418FE400B90C7A /* annotation.h */,
|
||||
E05FBE6E17C30A05004F525B /* AppleEvents.cc */,
|
||||
E05FBE6F17C30A05004F525B /* AppleEvents.h */,
|
||||
E0B9CA371E418FE400B90C7A /* assignment.cc */,
|
||||
E0B9CA381E418FE400B90C7A /* Assignment.h */,
|
||||
E0B9CA391E418FE400B90C7A /* AST.cc */,
|
||||
E0B9CA3A1E418FE400B90C7A /* AST.h */,
|
||||
E05FBE7017C30A05004F525B /* AutoUpdater.cc */,
|
||||
E05FBE7117C30A05004F525B /* AutoUpdater.h */,
|
||||
E0B9CA3B1E418FE400B90C7A /* BaseVisitable.h */,
|
||||
E05FBE7217C30A05004F525B /* boost-utils.cc */,
|
||||
E05FBE7317C30A05004F525B /* boost-utils.h */,
|
||||
E05FBE7417C30A05004F525B /* boosty.h */,
|
||||
|
|
@ -409,7 +481,9 @@
|
|||
E05FBE8717C30A05004F525B /* cgalfwd.h */,
|
||||
E05FBE8817C30A05004F525B /* CGALRenderer.cc */,
|
||||
E05FBE8917C30A05004F525B /* CGALRenderer.h */,
|
||||
E0B9CA3C1E418FE400B90C7A /* cgalutils-applyops.cc */,
|
||||
E0F8E5411A5B02AB004723C5 /* cgalutils-polyhedron.cc */,
|
||||
E0B9CA3D1E418FE400B90C7A /* cgalutils-project.cc */,
|
||||
E091574D19AA58C900D699E9 /* cgalutils-tess.cc */,
|
||||
E05FBE8A17C30A05004F525B /* cgalutils.cc */,
|
||||
E05FBE8B17C30A05004F525B /* cgalutils.h */,
|
||||
|
|
@ -417,25 +491,30 @@
|
|||
E05FBE8D17C30A05004F525B /* cgalworker.h */,
|
||||
E0FCDD621A27B96C0024E633 /* clipper-utils.cc */,
|
||||
E091574E19AA58C900D699E9 /* clipper-utils.h */,
|
||||
E0B9CA801E41904400B90C7A /* clipper.cpp */,
|
||||
E0B9CA811E41904400B90C7A /* clipper.hpp */,
|
||||
E05FBE8E17C30A05004F525B /* CocoaUtils.h */,
|
||||
E05FBE8F17C30A05004F525B /* CocoaUtils.mm */,
|
||||
E05FBE9017C30A05004F525B /* color.cc */,
|
||||
E091574F19AA58C900D699E9 /* colormap.cc */,
|
||||
E05FBE9117C30A05004F525B /* colormap.h */,
|
||||
E05FBE9217C30A05004F525B /* colornode.h */,
|
||||
E0B9CA3E1E418FE400B90C7A /* comment_lexer.l */,
|
||||
E0B9CA3F1E418FE400B90C7A /* comment_parser.y */,
|
||||
E0B9CA401E418FE400B90C7A /* comment.cpp */,
|
||||
E05FBE9317C30A05004F525B /* context.cc */,
|
||||
E05FBE9517C30A05004F525B /* context.h */,
|
||||
E05FBE9717C30A05004F525B /* control.cc */,
|
||||
E001A3361AAD51F2001E2678 /* convex_hull_3_bugfix.h */,
|
||||
E05FBE9817C30A05004F525B /* CsgInfo.h */,
|
||||
E0B9CA451E41902600B90C7A /* csgnode.cc */,
|
||||
E05FBE9917C30A05004F525B /* csgnode.h */,
|
||||
E05FBE9A17C30A05004F525B /* csgops.cc */,
|
||||
E05FBE9B17C30A05004F525B /* csgterm.cc */,
|
||||
E05FBE9C17C30A05004F525B /* csgterm.h */,
|
||||
E05FBE9D17C30A05004F525B /* CSGTermEvaluator.cc */,
|
||||
E05FBE9E17C30A06004F525B /* CSGTermEvaluator.h */,
|
||||
E05FBE9F17C30A06004F525B /* csgtermnormalizer.cc */,
|
||||
E05FBEA017C30A06004F525B /* csgtermnormalizer.h */,
|
||||
E0B9CA461E41902600B90C7A /* csgops.h */,
|
||||
E0B9CA471E41902600B90C7A /* CSGTreeEvaluator.cc */,
|
||||
E0B9CA481E41902600B90C7A /* CSGTreeEvaluator.h */,
|
||||
E0B9CA491E41902600B90C7A /* CSGTreeNormalizer.cc */,
|
||||
E0B9CA4A1E41902600B90C7A /* CSGTreeNormalizer.h */,
|
||||
E001A3371AAD51F2001E2678 /* Dock.cc */,
|
||||
E001A3381AAD51F2001E2678 /* Dock.h */,
|
||||
E091575019AA58C900D699E9 /* DrawingCallback.cc */,
|
||||
|
|
@ -451,7 +530,13 @@
|
|||
E05FBEAC17C30A06004F525B /* evalcontext.h */,
|
||||
E05FBEAD17C30A06004F525B /* EventFilter.h */,
|
||||
E001A3391AAD51F2001E2678 /* exceptions.h */,
|
||||
E0B9CA4B1E41902600B90C7A /* export_amf.cc */,
|
||||
E0B9CA4C1E41902700B90C7A /* export_dxf.cc */,
|
||||
E0B9CA4D1E41902700B90C7A /* export_nef.cc */,
|
||||
E0B9CA4E1E41902700B90C7A /* export_off.cc */,
|
||||
E05FBEB017C30A06004F525B /* export_png.cc */,
|
||||
E0B9CA4F1E41902700B90C7A /* export_stl.cc */,
|
||||
E0B9CA501E41902700B90C7A /* export_svg.cc */,
|
||||
E05FBEAE17C30A06004F525B /* export.cc */,
|
||||
E05FBEAF17C30A06004F525B /* export.h */,
|
||||
E05FBEB117C30A06004F525B /* expr.cc */,
|
||||
|
|
@ -460,6 +545,8 @@
|
|||
E05FBEB417C30A06004F525B /* fbo.h */,
|
||||
E091575319AA58C900D699E9 /* feature.cc */,
|
||||
E091575419AA58C900D699E9 /* feature.h */,
|
||||
E0B9CA511E41902700B90C7A /* FileModule.cc */,
|
||||
E0B9CA521E41902700B90C7A /* FileModule.h */,
|
||||
E05FBEB517C30A06004F525B /* fileutils.cc */,
|
||||
E05FBEB617C30A06004F525B /* fileutils.h */,
|
||||
E001A3511AAD5242001E2678 /* findversion.h */,
|
||||
|
|
@ -473,6 +560,7 @@
|
|||
E0BD020B1979C2D90020CC1B /* FreetypeRenderer.cc */,
|
||||
E0BD020C1979C2D90020CC1B /* FreetypeRenderer.h */,
|
||||
E05FBEB717C30A06004F525B /* func.cc */,
|
||||
E0B9CA531E41902700B90C7A /* function.cc */,
|
||||
E05FBEB817C30A06004F525B /* function.h */,
|
||||
E0348EF3194E49B800CAB791 /* Geometry.cc */,
|
||||
E0348EF4194E49B800CAB791 /* Geometry.h */,
|
||||
|
|
@ -486,15 +574,27 @@
|
|||
E05FBEBA17C30A06004F525B /* GLView.h */,
|
||||
E001A33C1AAD51F2001E2678 /* grid.cc */,
|
||||
E05FBEBB17C30A06004F525B /* grid.h */,
|
||||
E0B9CA541E41902700B90C7A /* GroupModule.cc */,
|
||||
E0B9CA551E41902700B90C7A /* GroupModule.h */,
|
||||
E0B9CA661E41904400B90C7A /* groupwidget.cpp */,
|
||||
E0B9CA671E41904400B90C7A /* groupwidget.h */,
|
||||
E05FBEBC17C30A06004F525B /* handle_dep.cc */,
|
||||
E05FBEBD17C30A06004F525B /* handle_dep.h */,
|
||||
E0B9CA561E41902700B90C7A /* hash.cc */,
|
||||
E0B9CA571E41902700B90C7A /* hash.h */,
|
||||
E05FBEBE17C30A06004F525B /* highlighter.cc */,
|
||||
E05FBEBF17C30A06004F525B /* highlighter.h */,
|
||||
E05FBEC017C30A06004F525B /* imageutils-lodepng.cc */,
|
||||
E05FBEC117C30A06004F525B /* imageutils-macosx.cc */,
|
||||
E05FBEC217C30A06004F525B /* imageutils.cc */,
|
||||
E05FBEC317C30A06004F525B /* imageutils.h */,
|
||||
E0B9CA581E41902700B90C7A /* import_amf.cc */,
|
||||
E0B9CA591E41902700B90C7A /* import_nef.cc */,
|
||||
E0B9CA5A1E41902700B90C7A /* import_off.cc */,
|
||||
E0B9CA5B1E41902700B90C7A /* import_stl.cc */,
|
||||
E0B9CA5C1E41902700B90C7A /* import_svg.cc */,
|
||||
E05FBEC417C30A06004F525B /* import.cc */,
|
||||
E0B9CA5D1E41902700B90C7A /* import.h */,
|
||||
E05FBEC517C30A06004F525B /* importnode.h */,
|
||||
E0377C3E1A9CFE4E0016D52D /* launchingscreen.cc */,
|
||||
E0377C3F1A9CFE4E0016D52D /* launchingscreen.h */,
|
||||
|
|
@ -519,8 +619,6 @@
|
|||
E05FBED017C30A06004F525B /* mainwin.cc */,
|
||||
E05FBED117C30A06004F525B /* MainWindow.h */,
|
||||
E05FBED217C30A06004F525B /* MainWindow.ui */,
|
||||
E05FBED317C30A06004F525B /* mathc99.cc */,
|
||||
E05FBED417C30A06004F525B /* mathc99.h */,
|
||||
E05FBED517C30A06004F525B /* memory.h */,
|
||||
E05FBED617C30A06004F525B /* modcontext.cc */,
|
||||
E05FBED717C30A06004F525B /* modcontext.h */,
|
||||
|
|
@ -528,12 +626,16 @@
|
|||
E05FBED917C30A06004F525B /* module.h */,
|
||||
E05FBEDA17C30A06004F525B /* ModuleCache.cc */,
|
||||
E05FBEDB17C30A06004F525B /* ModuleCache.h */,
|
||||
E0B9CA5E1E41902700B90C7A /* ModuleInstantiation.cc */,
|
||||
E0B9CA5F1E41902700B90C7A /* ModuleInstantiation.h */,
|
||||
E05FBEDC17C30A06004F525B /* namedcolors.cpp */,
|
||||
E05FBEDD17C30A06004F525B /* node.cc */,
|
||||
E05FBEDE17C30A06004F525B /* node.h */,
|
||||
E05FBEDF17C30A06004F525B /* nodecache.h */,
|
||||
E05FBEE017C30A06004F525B /* nodedumper.cc */,
|
||||
E05FBEE117C30A06004F525B /* nodedumper.h */,
|
||||
E0B9CA601E41902700B90C7A /* NodeVisitor.cc */,
|
||||
E0B9CA611E41902700B90C7A /* NodeVisitor.h */,
|
||||
E091575719AA58C900D699E9 /* NULLGL.cc */,
|
||||
E05FBEE217C30A06004F525B /* OffscreenContext.h */,
|
||||
E05FBEE317C30A06004F525B /* OffscreenContextAll.hpp */,
|
||||
|
|
@ -554,6 +656,33 @@
|
|||
E05FBEEE17C30A06004F525B /* OpenCSGWarningDialog.ui */,
|
||||
E05FBEEF17C30A06004F525B /* openscad.cc */,
|
||||
E05FBEF017C30A06004F525B /* openscad.h */,
|
||||
E0B9CA621E41902700B90C7A /* OpenSCADApp.cc */,
|
||||
E0B9CA631E41902700B90C7A /* OpenSCADApp.h */,
|
||||
E0B9CA641E41902700B90C7A /* Package.h */,
|
||||
E0B9CA681E41904400B90C7A /* parametercheckbox.cpp */,
|
||||
E0B9CA691E41904400B90C7A /* parametercheckbox.h */,
|
||||
E0B9CA6A1E41904400B90C7A /* parametercombobox.cpp */,
|
||||
E0B9CA6B1E41904400B90C7A /* parametercombobox.h */,
|
||||
E0B9CA6C1E41904400B90C7A /* ParameterEntryWidget.ui */,
|
||||
E0B9CA6D1E41904400B90C7A /* parameterextractor.cpp */,
|
||||
E0B9CA6E1E41904400B90C7A /* parameterextractor.h */,
|
||||
E0B9CA6F1E41904400B90C7A /* parameterobject.cpp */,
|
||||
E0B9CA701E41904400B90C7A /* parameterobject.h */,
|
||||
E0B9CA711E41904400B90C7A /* parameterset.cpp */,
|
||||
E0B9CA721E41904400B90C7A /* parameterset.h */,
|
||||
E0B9CA731E41904400B90C7A /* parameterslider.cpp */,
|
||||
E0B9CA741E41904400B90C7A /* parameterslider.h */,
|
||||
E0B9CA751E41904400B90C7A /* parameterspinbox.cpp */,
|
||||
E0B9CA761E41904400B90C7A /* parameterspinbox.h */,
|
||||
E0B9CA771E41904400B90C7A /* parametertext.cpp */,
|
||||
E0B9CA781E41904400B90C7A /* parametertext.h */,
|
||||
E0B9CA791E41904400B90C7A /* parametervector.cpp */,
|
||||
E0B9CA7A1E41904400B90C7A /* parametervector.h */,
|
||||
E0B9CA7B1E41904400B90C7A /* parametervirtualwidget.cpp */,
|
||||
E0B9CA7C1E41904400B90C7A /* parametervirtualwidget.h */,
|
||||
E0B9CA7D1E41904400B90C7A /* ParameterWidget.cc */,
|
||||
E0B9CA7E1E41904400B90C7A /* ParameterWidget.h */,
|
||||
E0B9CA7F1E41904400B90C7A /* ParameterWidget.ui */,
|
||||
E05FBEF217C30A06004F525B /* parser.y */,
|
||||
E05FBEF317C30A06004F525B /* parser.y.new */,
|
||||
E05FBEF617C30A06004F525B /* parsersettings.cc */,
|
||||
|
|
@ -567,6 +696,7 @@
|
|||
E091575D19AA58C900D699E9 /* Polygon2d-CGAL.h */,
|
||||
E091575E19AA58C900D699E9 /* Polygon2d.cc */,
|
||||
E091575F19AA58C900D699E9 /* Polygon2d.h */,
|
||||
E0B9CA651E41902700B90C7A /* polyset-gl.cc */,
|
||||
E091576019AA58C900D699E9 /* polyset-utils.cc */,
|
||||
E091576119AA58C900D699E9 /* polyset-utils.h */,
|
||||
E05FBEFD17C30A06004F525B /* polyset.cc */,
|
||||
|
|
@ -621,18 +751,18 @@
|
|||
E05FBF2817C30A06004F525B /* ThrownTogetherRenderer.h */,
|
||||
E05FBF2A17C30A06004F525B /* transform.cc */,
|
||||
E05FBF2B17C30A06004F525B /* transformnode.h */,
|
||||
E05FBF2C17C30A06004F525B /* traverser.cc */,
|
||||
E05FBF2D17C30A06004F525B /* traverser.h */,
|
||||
E05FBF2E17C30A06004F525B /* Tree.cc */,
|
||||
E05FBF2F17C30A06004F525B /* Tree.h */,
|
||||
E05FBF3017C30A06004F525B /* typedefs.h */,
|
||||
E001A3571AAD5242001E2678 /* UIUtils.cc */,
|
||||
E001A3581AAD5242001E2678 /* UIUtils.h */,
|
||||
E0B9CA411E418FF800B90C7A /* UserModule.cc */,
|
||||
E0B9CA421E418FF800B90C7A /* UserModule.h */,
|
||||
E05FBF3117C30A06004F525B /* value.cc */,
|
||||
E05FBF3217C30A06004F525B /* value.h */,
|
||||
E05FBF3317C30A06004F525B /* version_check.cc */,
|
||||
E05FBF3417C30A06004F525B /* version_check.h */,
|
||||
E05FBF3517C30A06004F525B /* visitor.h */,
|
||||
E0B9CA431E418FF800B90C7A /* WindowManager.cc */,
|
||||
E0B9CA441E418FF800B90C7A /* WindowManager.h */,
|
||||
);
|
||||
name = src;
|
||||
path = ../src;
|
||||
|
|
|
|||
Loading…
Reference in a new issue