Skip to content

Commit

Permalink
Create pc_translator library.
Browse files Browse the repository at this point in the history
Differential Revision: D44617759

fbshipit-source-id: c7da953c7a7b9fbe43ff866c7fca457539b91203
  • Loading branch information
ajinkyaghonge authored and facebook-github-bot committed Apr 5, 2023
1 parent 9516d0c commit ae775ef
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 0 deletions.
39 changes: 39 additions & 0 deletions fbpcs/pc_translator/PCTranslator.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

#include "fbpcs/pc_translator/PCTranslator.h"

namespace pc_translator {

std::string PCTranslator::encode(const std::string& /* inputDataset */) {
throw std::runtime_error("Unimplemented");
}

std::string PCTranslator::decode(
const std::string& /* aggregatedOutputDataset */) {
throw std::runtime_error("Unimplemented");
}

void PCTranslator::retrieveInstructionSets(
std::vector<std::string>& /* instructionSetNames */) {
throw std::runtime_error("Unimplemented");
}

std::vector<std::string> PCTranslator::retrieveInstructionSetNamesForRun(
const std::string& /* pcsFeatures */) {
throw std::runtime_error("Unimplemented");
}

void PCTranslator::transformDataset(const std::string& /* input */) {
throw std::runtime_error("Unimplemented");
}

void PCTranslator::parseInstructionSet(
const std::string& /* instructionSet */) {
throw std::runtime_error("Unimplemented");
}
} // namespace pc_translator
52 changes: 52 additions & 0 deletions fbpcs/pc_translator/PCTranslator.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/

#pragma once

#include <cstdint>
#include <memory>
#include <string>
#include <vector>

namespace pc_translator {

/*
* This class contains functions required for PC Translator during actual run
* i.e. retrieving the PC instruction sets, filtering the set per active GK for
* run, encoding and decoding the dataset files input as per the instruction
* set.
*/
class PCTranslator {
public:
explicit PCTranslator(const std::string& pcsFeatures)
: pcsfeatures_(pcsFeatures) {}

/*
* Method to encode the configurable fields in input dataset as per the active
* pc instruction sets for the run. This method will output the path of
* transformed input dataset, which can be used in further PC run.
*/
std::string encode(const std::string& inputDataset);

/*
* Method to decode final aggregated output with the encoded breakdown Ids as
* the keys. This method will decode the breakdown Ids to original group Id
* values and format the aggregated output as per the new keys. Output of this
* method would be the path of the decoded aggregated output.
*/
std::string decode(const std::string& aggregatedOutputDataset);

private:
std::string pcsfeatures_;
void retrieveInstructionSets(std::vector<std::string>& instructionSetNames);
std::vector<std::string> retrieveInstructionSetNamesForRun(
const std::string& pcsfeatures);
void parseInstructionSet(const std::string& instructionSet);
void transformDataset(const std::string& input);
};

} // namespace pc_translator

0 comments on commit ae775ef

Please sign in to comment.