blob: ae34f2292544a3aeb7adac774ee7bcaac2825f45 [file] [log] [blame]
/*
Copyright 2019 Alain Dargelas
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
* File: CompileStep.h
* Author: alain
*
* Created on July 5, 2017, 10:44 PM
*/
#ifndef COMPILESTEP_H
#define COMPILESTEP_H
#include "Design/VObject.h"
namespace SURELOG {
class CompileStep {
public:
CompileStep();
CompileStep(const CompileStep& orig);
virtual ~CompileStep();
virtual VObject& Object(NodeId index) = 0;
virtual NodeId UniqueId(NodeId index) = 0;
virtual SymbolId Name(NodeId index) = 0;
virtual NodeId Child(NodeId index) = 0;
virtual NodeId Sibling(NodeId index) = 0;
virtual NodeId& Definition(NodeId index) = 0;
virtual NodeId Parent(NodeId index) = 0;
virtual unsigned short& Type(NodeId index) = 0;
virtual unsigned int Line(NodeId index) = 0;
virtual std::string Symbol(SymbolId id) = 0;
virtual NodeId sl_get(NodeId parent,
VObjectType type) = 0; // Get first item of type
virtual NodeId sl_parent(
NodeId parent, VObjectType type) = 0; // Get first parent item of type
virtual NodeId sl_parent(NodeId parent, std::vector<VObjectType> types,
VObjectType& actualType) = 0;
virtual std::vector<NodeId> sl_get_all(
NodeId parent, VObjectType type) = 0; // get all items of type
virtual NodeId sl_collect(
NodeId parent,
VObjectType type) = 0; // Recursively search for first item of type
virtual std::vector<NodeId> sl_collect_all(
NodeId parent,
VObjectType type) = 0; // Recursively search for all items of type
virtual std::string SymName(NodeId index) = 0;
private:
};
}; // namespace SURELOG
#endif /* COMPILESTEP_H */